Come recuperare automaticamente il nuovo server dei nomi su VPN connect


11

Sto eseguendo Ubuntu Xenial 16.04

Stiamo usando openvpn per connetterci a un cloud privato virtuale. Quel cloud ha il proprio server DNS (così come la nostra route locale - a casa o in ufficio).

Quando mi collego alla VPN sono disponibili tutti gli IP in quella rete ma non riesco a raggiungerne nessuno per nome host. Il motivo è semplice: il file resolv.conf mostra ancora il mio nameserver dell'ufficio locale. Se sovrascrivo manualmente il resolv.conf per avere il server dei nomi corretto, tutto va bene.

Quindi, come posso convincerlo a riconfigurare automaticamente resolv.conf al momento della connessione alla VPN?

Posso collegarmi a un evento di sistema ed eseguire uno script?


1
Normalmente esiste un'opzione per consentire alla VPN di inviare il proprio server DNS. Quale client stai usando? Tunnelblick?
— Ryder,

Sto usando il client ufficiale openvpn. Da qualche parte ho letto che il processo VPN non può aggiornare il DNS.
— Christian Bongiorno,

Hai provato l' --register-dnsopzione? In alternativa ci sono opzioni sul lato client che puoi impostare, come dhcp-options (il rovescio delle istruzioni qui openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
— Ryder,

Risposte:


8

Il pacchetto OpenVPN ha uno script per questo in /etc/openvpn/update-resolv-conf. È necessario configurarlo con:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Ciò recupererà gli indirizzi del server DNS dalle dhcp-option DNSopzioni passate dal peer / server OpenVPN e si configurerà di resolvconfconseguenza. Gestisce dhcp-option DOMAINanche.

Tuttavia, non è perfetto, poiché ciò anteporrà quei server dei nomi all'elenco dei server dei nomi esistenti anziché sovrascrivere l'elenco dei server dei nomi. Se si utilizza openresolvil -xpuò essere utilizzato per sovrascrivere la configurazione DNS, invece di preprending ad esso.


Se stai usando systemd-resolved, puoi usare gli /etc/openvpn/update-systemd-resolvedhook in cui systemd-revolvedanziché resolvconf.

script-security 2 
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre

Su Debian, questo script è nel openvpn-systemd-resolved.


2
sopra queste 2 righe, dovrai anche aggiungere script-security 2o eseguire il tuo openvpncon--script-security 2
— 32r34wgf3e

0

Ecco la soluzione che mi è venuta in mente: c'è un interruttore che ti permette di eseguire uno script quando il tunnel è attivo e funzionante. Uso l'interruttore per essenzialmente sovrascrivere il file resolv.conf con uno che so sia corretto. È un trucco totale, lo so.

sudo openvpn --up reset-dns.sh --client client.ovpn

lo script (reset-dns):

#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf

Inoltre, per quelli che dicono "OMG! Stai eseguendo quel tunnel come root!" Non funzionerà in nessun altro modo; anche prima del mio hack DNS.

Sono decisamente aperto a un modo migliore. Il gestore di rete per Ubuntu semplicemente non funzionerà. Ho tagliato ripetutamente i biglietti per Ubuntu su questo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.