Gestione DNS con OpenVPN su linux: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
m New page: È complicato. ==Verifica impsotazione resolver== * Impostare il corretto ordine di risoluzione dei nomi sudoedit /etc/nsswitch.conf ... hosts: files dns mdns4_minimal [NOTF...
 
mNo edit summary
Line 1: Line 1:
È complicato.
==Gestione con openresolv==
 
Così è semplice :)
 
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
sudo apt-get install openresolv dnsmasq
 
* Configurare openresolv (si il suo file di cfg è resolvconf.conf. Infatti sostituisce resolvconf :)
 
sudoedit /etc/resolvconf.conf
 
<pre>
# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details
 
# togliere questo !!!
#resolv_conf=/etc/resolv.conf
 
# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
name_servers=127.0.0.1
 
# Per pdnsd
# Modify the pdnsd configuration file
#pdnsd_conf=/etc/pdnsd.conf
 
# Write out dnsmasq extended configuration and resolv files
dnsmasq_conf=/etc/dnsmasq-conf.conf
dnsmasq_resolv=/etc/dnsmasq-resolv.conf
</pre>
 
* Riavviare il dns
sudo invoke-rc.d dnsmasq restart
 
* Controllare che vengano scritti i dns ed i domini in
 
/etc/resolv.conf
 
* risolvere i nomi che servono con le vpn attive
 
 
 
È complicato nell'altro modo.
 
==Verifica impsotazione resolver==
==Verifica impsotazione resolver==
* Impostare il corretto ordine di risoluzione dei nomi
* Impostare il corretto ordine di risoluzione dei nomi

Revision as of 23:07, 15 October 2011

Gestione con openresolv

Così è semplice :)

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
sudo apt-get install openresolv dnsmasq
  • Configurare openresolv (si il suo file di cfg è resolvconf.conf. Infatti sostituisce resolvconf :)
sudoedit /etc/resolvconf.conf
# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details

# togliere questo !!!
#resolv_conf=/etc/resolv.conf

# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
name_servers=127.0.0.1

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

# Write out dnsmasq extended configuration and resolv files
dnsmasq_conf=/etc/dnsmasq-conf.conf
dnsmasq_resolv=/etc/dnsmasq-resolv.conf
  • Riavviare il dns
sudo invoke-rc.d dnsmasq restart
  • Controllare che vengano scritti i dns ed i domini in
/etc/resolv.conf
  • risolvere i nomi che servono con le vpn attive


È complicato nell'altro modo.

Verifica impsotazione resolver

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

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 \
...


  • 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