Ubuntu 18.04 nessuna risoluzione DNS quando connesso a openvpn


40

Quando mi collego a una rete VPN tramite Gnome Network-Manager, perdo la risoluzione DNS e in pratica non riesco ad accedere alle risorse all'interno della rete VPN o all'esterno.

Quando stavo usando Ubuntu 16.04 e stavo usando la VPN, il /etc/resolv.conf/file " " conteneva i server DNS della rete (VPN) che avevo collegato. Ora contiene sempre le seguenti voci:

nameserver 127.0.0.53
search myprovider.com

Da quello che ho capito 127.0.0.53è l'indirizzo dello stub DNS utilizzato da system-resolved.

Sospetto che si tratti di un bug perché la VPN funzionava bene con Ubuntu 16.04. Esiste un modo per impostare i server DNS della mia rete quando utilizzo un servizio VPN?

Aggiornare:

Ho provato a collegarmi alla rete OpenVPN con il file di configurazione allegato alla fine del post, ma visualizzo il seguente errore:

 Authenticate/Decrypt packet error: cipher final failed

Ho verificato che il server utilizza la compressione lzo e l'ho anche abilitato. La connessione rimane attiva ma non riesco a navigare in nessuna pagina all'interno o all'esterno della VPN.

Nel file di configurazione elencato di seguito, ho incluso le soluzioni pubblicate nelle risposte

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre

1
Durante il debug di un problema simile a questo che non poteva essere risolto esattamente lo stesso, ho usato resolvectl statuse resolvectl helpper capire la mia soluzione specifica.
notbad.jpeg

Risposte:


27

Ho trovato una soluzione su questo post del blog . Mentre ci sono due soluzioni menzionate, preferisco usare la seconda perché significa che il mio DNS è impostato dal server OpenVPN (la prima soluzione significa che uso gli stessi server DNS indipendentemente dal fatto che io sia o meno connesso al server OpenVPN).

In breve:

  • sudo mkdir -p /etc/openvpn/scripts
  • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
  • sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved

Quindi modifica il tuo file client OpenVPN (ad esempio client.ovpn) modificando gli script su / giù in:

script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved

(Ho commentato le impostazioni originali su / giù).


Se uno sta usando l'utilità gnome openvpn dove dovrebbe essere memorizzato il file config.ovpn?
orestis,

1
config.ovpnnon "trovato" - è il file di configurazione del client utilizzato per la connessione. O lo generi, o ti viene rilasciato dal tuo provider OpenVPN (e potrebbe non essere chiamato config.ovpn- potrebbe essere chiamato come, ad esempio client.ovpn).
Andy Turfer,

Funziona perfettamente.
Ahsanul Haque,

2
RicevoWARNING: Failed running command (--up/--down): external program fork failed
Blockhead

Sfortunatamente questo non ha funzionato per un VPN che utilizza TCPC, i siti esterni a VPN non sono stati risolti, quindi ho iniziato a utilizzare client.pritunl.com/#install trovato utile
Saisurya Kattamuri

49

Problema

Il file /etc/resolv.confnon viene aggiornato dallo /etc/openvpn/update-resolv-confscript perché resolvconfnon è installato di default su Ubuntu 18.04.

In effetti, una delle prime righe di quello script controlla l' /sbin/resolvconfeseguibile:

[ -x /sbin/resolvconf ] || exit 0

L'installazione di resolvconf tramite apt-getnon è una soluzione in quanto lo /etc/openvpn/update-resolv-confscript aggiorna il /etc/resolv.conffile con la voce DNS spinta ma il dispositivo tun sembra ignorarlo.

Soluzione

  1. Ubuntu 18.04 utilizza systemd-resolved, quindi tutto ciò che devi fare è installare lo script helper openvpn per systemd-resolvedvia

    sudo apt install openvpn-systemd-resolved
    

    o con queste istruzioni GitHub

  2. Aggiorna il tuo config.ovpnfile aggiungendo queste righe:

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

    Quello invece di aggiungere su e giù /etc/openvpn/update-resolv-confper la conf.

  3. Per evitare la perdita di DNS, è necessario aggiungere questa riga alla fine del config.ovpnfile (in base a questo commento di problema del sistema ):

    dhcp-option DOMAIN-ROUTE .
    

1
Grazie mille, lavorando per me su Ubuntu 18.04. E voglio specificare, quel parametro script-security 2è ancora necessario prima delle linee su / giù, altrimenti il ​​programma cade con un errore (OpenVPN 2.4.4)
lucidyan

Sono contento che abbia aiutato :) Modificata l'ultima frase nella risposta, nel mio caso script-security 2 non era necessaria. Questo forse perché sto eseguendo il client openvpn come root (con sudo)
Qlimax,

1
@Qlimax Sai come importiamo queste impostazioni sul client gnome openvpn?
orestis,

2
@orestis devi installare questo pacchetto sudo apt-get install network-manager-openvpn-gnome Quindi dovresti essere in grado di importare i file di configurazione .ovpn nel gestore di rete gnome. askubuntu.com/questions/187511/… L' interfaccia utente è cambiata nel tempo, dovresti riuscire a trovarlo in Impostazioni-> Rete-> Vpn
Qlimax,

1
Sorpreso, questo funziona per molti di voi: ho un ovpn.config, sì, ma NetworkManager non sembra usarlo. Hai modificato il file e reimportato, in particolare per sostituire gli script su / giù. Perché vedo questo binario opaco / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper usato per il quale non sono riuscito a trovare la documentazione. Se è necessario reimportare ovpn.config, modificare la risposta.
Harald

5

In realtà, esiste una soluzione molto più semplice a questo problema. Il problema riguarda il traffico DNS e il modo in cui Ubuntu 18 lo gestisce. Per impostazione predefinita, l'inoltro IP è disabilitato ed è ciò di cui OpenVPN ha bisogno per fornire una rete adeguata. Tutto quello che devi fare è eseguire il seguente comando:

sudo nano /etc/sysctl.conf

Dopo aver aperto questo file, cerca la riga che contiene net.ipv4.ip_forward. Se questa riga è commentata, rimuovere il segno # nella parte anteriore della riga (se non è commentata, si verifica un altro problema). Salvare il file e quindi riavviare l'istanza del server OpenVPN.

Questa correzione non richiede alcuna modifica al client o al codice OpenVPN dopo l'aggiornamento a Ubuntu 18. Testato e confermato funzionante.

Tuttavia, questo ovviamente richiede che tu possa amministrare il server. E sfortunatamente, il bug esiste per molti che si connettono con 18.04 a un server OpenVPN che è amministrato da qualcun altro ...


non ha funzionato per me. come hai stabilito che questo era il problema, nel tuo caso?
hwjp,

ATTENZIONE: non è necessario abilitare ip_forward sul client openvpn , MAI! è un rischio per la sicurezza. Sul server openvpn , potresti averne bisogno, a seconda della configurazione utilizzata e questo è probabilmente il motivo per cui questo commento appare.
Higuita,

Questo è stato per me. Strano problema. Grazie.
Kevin C,

2

Testato su Ubuntu 18.04 al 13 settembre 2018

Esistono altri comandi utili per configurare ciò di cui hai bisogno tramite la riga di comando. Ma nel mio caso puoi controllare la tua connessione VPN sia con la riga di comando che con la GUI.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- è richiesto per impostazione predefinita, ma non influisce su nulla

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default non utilizzare gateway remoto come route predefinita

E tocco finale molto più interessato:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

Successivamente puoi controllare vpn con la GUI o usare i seguenti comandi:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com


0

Anche io sono influenzato. Nel mio caso, sto usando OpenVPN con un server dei nomi interno (che si trova all'interno della VPN). Funzionava fino a Ubuntu 17.10 (con "hosts: files dns" in /etc/nsswitch.conf).

/etc/resolv.conf è stato aggiornato correttamente dagli script openvpn (tramite chiamate a / etc / openvpn / update-resolv-conf nel file di configurazione del client openvpn).

Tuttavia, la risoluzione dei nomi per gli host all'interno della VPN non funzionava più (o almeno sporadicamente ... Immagino che la cache DNS locale stesse selezionando i nomi, ma dopo un tempo piuttosto lungo).

Ciò che sembra aiutare, o addirittura risolvere il problema (anche se è troppo presto per dirlo) è installare il pacchetto seguente:

sudo apt installa openvpn-systemd-risolto

Tra qualche giorno, avrò più esperienza se questo risolve il mio problema o meno.

Se anche tu ne hai un impatto, prova questo e pubblica commenti!

Saluti,

Michael.


Alla fine, non sembra essere una soluzione. Ho di nuovo il problema. Immagino che qualcos'altro lo abbia fatto funzionare ...
Michael Opdenacker

1
Forse allora elimini la tua risposta? Sembra che la decisione sia già stata trovata di seguito
lucidyan, il
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.