Gestione DNS con OpenVPN su linux: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Verifica impostazione resolver==
'''SE NON SI FA QUESTO, LA RISOLUZIONE DEI NOMI CON host funzionerà, ma tutti gli altri programmi, come ping, telnet e firefox, non risolveranno i nomi:
* Impostare il corretto ordine di risoluzione dei nomi
  sudoedit /etc/nsswitch.conf
...
hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4
...
===Riferimenti===
*[http://www.linuxquestions.org/questions/linux-networking-3/bind9-host-does-reslove-a-dns-name-but-ping-says-unknown-host-619628/#post4221353 Bind9 ,host does reslove a dns name but ping says unknown host]
=Ubuntu 15.04=
* In questa versione di Ubuntu, basta solo specificare lo script di update nella configurazione della vpn.
* Se si upgrada, disinstallare openresolv, installare resolvconf, disinstallare il pacchetto dnsmasq (lasciare dnsmaq-common)
* Riavviare, o killare dnsmasq e restartare network-manager
=Ubuntu precedenti 15.04=
==Gestione con openresolv==
==Gestione con openresolv==


Così è semplice :)
'''Questo è il metodo più semplice'''
 
In pratica openresolv invia a dnsmasq via dbus la configurazione dei dns da usare.


Openresolv provvede a generare le configurazioni per il server dns locale che si usa. Con dnsmasq funziona, con pdnsd non si riesce a far funzonare bene con più vpn.
Openresolv provvede a generare le configurazioni per il server dns locale che si usa. Con dnsmasq funziona, con pdnsd non si riesce a far funzonare bene con più vpn.


* Installare
* Installare openresolv e la versione completa di dnsmasq
  sudo apt-get install openresolv dnsmasq
  sudo apt-get install openresolv dnsmasq


* Configurare openresolv (si il suo file di cfg è resolvconf.conf. Infatti sostituisce resolvconf :)
* Killare le istanze di dnsmaq avviate da NetworkManager
sudo killall dnsmasq
 
* Configurare openresolv (Sì. Il suo file di cfg è resolvconf.conf. Infatti sostituisce resolvconf :)


  sudoedit /etc/resolvconf.conf
  sudoedit /etc/resolvconf.conf


<pre>
<pre>
# Configuration for resolvconf(8)
#...
# See resolvconf.conf(5) for details
 
# togliere questo !!!
# togliere questo !!!
#resolv_conf=/etc/resolv.conf
#resolv_conf=/etc/resolv.conf
...
name_servers=127.0.0.1
#...
</pre>


# If you run a local name server, you should uncomment the below line and
* Attivare il support dbus in dnsmaq
# configure your subscribers configuration files below.
sudoedit /etc/dnsmasq.conf
name_servers=127.0.0.1
 
#...
enable-dbus
 
* '''QUESTO NON VA FATTO IN UBUNTU 15.04''': Impostare il comportamento per l'upstream server di dnsmasq (se non si fa questo, spesso sbaglia a impostare i DNS server presi via DHCP, e Virtualbox non risolve i nomi dalle vm in nat):


# Per pdnsd
sudoedit /etc/default/dnsmasq
# Modify the pdnsd configuration file
#pdnsd_conf=/etc/pdnsd.conf


# Write out dnsmasq extended configuration and resolv files
...
dnsmasq_conf=/etc/dnsmasq-conf.conf
IGNORE_RESOLVCONF=yes
dnsmasq_resolv=/etc/dnsmasq-resolv.conf
</pre>


* Riavviare il dns
* Riavviare il dns
sudo invoke-rc.d dnsmasq restart
* Verificare che sia attivo il proprio dnsmasq, oltre a quello di networkmanager:
ps auxw | grep /var/run/dnsmasq/dnsmasq.pid
* Se non è attivo, riscrivere la configurazione init.d e riavviarlo:
sudo update-rc.d -f dnsmasq remove
sudo update-rc.d -f dnsmasq defaults
sudo invoke-rc.d dnsmasq stop
  sudo invoke-rc.d dnsmasq restart
  sudo invoke-rc.d dnsmasq restart


Line 39: Line 76:
  /etc/resolv.conf
  /etc/resolv.conf


* risolvere i nomi che servono con le vpn attive
* Testare e risolvere i nomi che servono con le vpn attive


* Inserire nella configurazione della vpn il riferimento agli script up e down e a script-security=2 '''VEDI SEZIONE SUCCESSIVA'''




È complicato nell'altro modo.
===Riferimenti===
 
*[http://roy.marples.name/projects/openresolv/wiki openresolv]
==Verifica impsotazione resolver==
*[http://roy.marples.name/projects/openresolv/wiki/OpenResolvConfigDnsmasq OpenResolvConfigDnsmasq – openresolv]
* Impostare il corretto ordine di risoluzione dei nomi
*[https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1090589 Bug #1090589 “Empty /var/run/dnsmasq/resolv.conf” : Bugs : “dnsmasq” package : Ubuntu]
  sudoedit /etc/nsswitch.conf
 
...
hosts:         files dns mdns4_minimal [NOTFOUND=return] mdns4
...


==Attivazione dello script Openvpn==
==Attivazione dello script Openvpn==
Line 68: Line 101:




==Gestione manuale di dnsmasq==
In questo modo è più complicato ...
===Customizzazione script dns openvpn===
* Customizzare lo script di aggiornamento:
* Customizzare lo script di aggiornamento:
  sudoedit /etc/openvpn/update-resolv-conf  
  sudoedit /etc/openvpn/update-resolv-conf  
Line 112: Line 150:
</pre>
</pre>


==Installazione di resolvconf==
===Installazione di resolvconf===
* Installare
* Installare
  sudo apt-get install resolvconf
  sudo apt-get install resolvconf
Line 153: Line 191:
** Scollegare la VPN
** Scollegare la VPN


==Installazione DNSMASQ==
===Installazione DNSMASQ===


* Installare
* Installare

Latest revision as of 15:49, 6 May 2015

Verifica impostazione resolver

SE NON SI FA QUESTO, LA RISOLUZIONE DEI NOMI CON host funzionerà, ma tutti gli altri programmi, come ping, telnet e firefox, non risolveranno i nomi:


  • Impostare il corretto ordine di risoluzione dei nomi
 sudoedit /etc/nsswitch.conf 
...
hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4
...

Riferimenti

Ubuntu 15.04

  • In questa versione di Ubuntu, basta solo specificare lo script di update nella configurazione della vpn.
  • Se si upgrada, disinstallare openresolv, installare resolvconf, disinstallare il pacchetto dnsmasq (lasciare dnsmaq-common)
  • Riavviare, o killare dnsmasq e restartare network-manager

Ubuntu precedenti 15.04

Gestione con openresolv

Questo è il metodo più semplice

In pratica openresolv invia a dnsmasq via dbus la configurazione dei dns da usare.

Openresolv provvede a generare le configurazioni per il server dns locale che si usa. Con dnsmasq funziona, con pdnsd non si riesce a far funzonare bene con più vpn.

  • Installare openresolv e la versione completa di dnsmasq
sudo apt-get install openresolv dnsmasq
  • Killare le istanze di dnsmaq avviate da NetworkManager
sudo killall dnsmasq
  • Configurare openresolv (Sì. Il suo file di cfg è resolvconf.conf. Infatti sostituisce resolvconf :)
sudoedit /etc/resolvconf.conf
#...
# togliere questo !!!
#resolv_conf=/etc/resolv.conf
...
name_servers=127.0.0.1
#...
  • Attivare il support dbus in dnsmaq
sudoedit /etc/dnsmasq.conf 
#...
enable-dbus
  • QUESTO NON VA FATTO IN UBUNTU 15.04: Impostare il comportamento per l'upstream server di dnsmasq (se non si fa questo, spesso sbaglia a impostare i DNS server presi via DHCP, e Virtualbox non risolve i nomi dalle vm in nat):
sudoedit /etc/default/dnsmasq 
...
IGNORE_RESOLVCONF=yes
  • Riavviare il dns
sudo invoke-rc.d dnsmasq restart
  • Verificare che sia attivo il proprio dnsmasq, oltre a quello di networkmanager:
ps auxw | grep /var/run/dnsmasq/dnsmasq.pid
  • Se non è attivo, riscrivere la configurazione init.d e riavviarlo:
sudo update-rc.d -f dnsmasq remove
sudo update-rc.d -f dnsmasq defaults
sudo invoke-rc.d dnsmasq stop
sudo invoke-rc.d dnsmasq restart
  • Controllare che vengano scritti i dns ed i domini in
/etc/resolv.conf
  • Testare e risolvere i nomi che servono con le vpn attive
  • Inserire nella configurazione della vpn il riferimento agli script up e down e a script-security=2 VEDI SEZIONE SUCCESSIVA


Riferimenti

Attivazione dello script Openvpn

La vpn deve lanciare lo script di aggiornamento di resolvconf.

  • Aggiungere quindi i parametri
vi ~/local/bin/vpn-rvm
...
               --script-security 2 \
               --up /etc/openvpn/update-resolv-conf \
               --down /etc/openvpn/update-resolv-conf \
...


Gestione manuale di dnsmasq

In questo modo è più complicato ...

Customizzazione script dns openvpn

  • Customizzare lo script di aggiornamento:
sudoedit /etc/openvpn/update-resolv-conf 

Per la parte up):

...
        echo -n "$R" | /sbin/resolvconf -a "${dev}.inet"

        # update dnsmasq config
        echo -n "server=/$IF_DNS_SEARCH/$IF_DNS_NAMESERVERS" > /etc/dnsmasq.d/$I
        invoke-rc.d dnsmasq restart
        ;;

Per la parte down):

down)
        for optionname in ${!foreign_option_*} ; do
                option="${!optionname}"
                echo $option
                part1=$(echo "$option" | cut -d " " -f 1)
                if [ "$part1" == "dhcp-option" ] ; then
                        part2=$(echo "$option" | cut -d " " -f 2)
                        part3=$(echo "$option" | cut -d " " -f 3)
                        if [ "$part2" == "DNS" ] ; then
                                IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
                        fi
                        if [ "$part2" == "DOMAIN" ] ; then
                                IF_DNS_SEARCH="$part3"
                        fi
                fi
        done
        R=""

        /sbin/resolvconf -d "${dev}.inet"

        # update dnsmasq config
        rm  -f /etc/dnsmasq.d/$IF_DNS_SEARCH
        invoke-rc.d dnsmasq restart
        ;;

Installazione di resolvconf

  • Installare
sudo apt-get install resolvconf
  • Configurare le priorità con cui vengono inseriti i parametri in /etc/resolv.conf, mettendo i device tun e tap dopo eth e wlan e NetworkManager prima di tutto
sudoedit /etc/resolvconf/interface-order
# interface-order(5)
NetworkManager*
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
hso*
eth*
ath*
wlan*
ppp*
tun*
tap*
*

ATTENZIONE: NetworkManager deve essere il primo, perchè eth e wlan sono gestiti solo da /etc/init.d/networking

  • Testare rescolvconf:
    • togliere rimettere il cavo di rete e verificare che venga riscritto il file /etc/resolv.conf
    • avviare la vpn e verificare che DNS e SEARCH vengano inseriti dopo quelli di rete
    • Scollegare la VPN
  • Impostare come DNS primario localhost:
sudoedit /etc/resolvconf/resolv.conf.d/head
...
nameserver 127.0.0.1
...
  • Ritestare e vedere che viene messo per primo 127.0.0.1
    • Scollegare la VPN

Installazione DNSMASQ

  • Installare
sudo apt-get install dnsmasq
  • Testare collegando la VPN, verificando che sia creato il file:
/etc/dnsmasq.d/rvmgroup.local
che deve contenere
server=/rvmgroup.local/ 192.168.254.100
    • Scollegare la VPN: il file deve sparire.

Note

  • Non basta inserire i DNS nel corretto ordine, perchè quando il primo ritorna NXDOMAIN, la query si ferma
  • Non si può gestire la cosa nemmeno mettendo in
/etc/nsswitch.conf 
hosts: files dns [SUCCESS=return NOTFOUND=continue TRYAGAIN=3 UNAVAIL=continue]
per lo stesso motivo
  • Non si può inserire in
/etc/resolv.conf

options rotate

per lo stesso motivo.
  • Non si può usare l'opzione --all-servers di dnsmasq per lo stesos motivo
  • Si potrebbe patchare dnsmasq per ritornare FAILED invece di NXDOMAIN (vedi note)

Riferimenti