Ubuntu 18.04 brak rozdzielczości DNS po podłączeniu do openvpn

40

Kiedy łączę się z siecią VPN za pośrednictwem menedżera sieci Gnome, tracę rozdzielczość DNS iw praktyce nie mogę uzyskać dostępu do zasobów w sieci VPN lub poza nią.

Kiedy korzystałem z Ubuntu 16.04 i korzystałem z VPN, /etc/resolv.conf/plik „ ” zawierałby serwery DNS sieci (VPN), z którą się połączyłem. Teraz zawsze zawiera następujące wpisy:

nameserver 127.0.0.53
search myprovider.com

Z tego, co zrozumiałem, 127.0.0.53jest adres kodu pośredniczącego DNS używanego przez system-resolved.

Podejrzewam, że jest to błąd, ponieważ VPN działał dobrze w Ubuntu 16.04. Czy jest jakiś sposób, aby ustawić serwery DNS mojej sieci, gdy korzystam z usługi VPN?

Aktualizacja:

Próbowałem połączyć się z siecią OpenVPN z plikiem konfiguracyjnym dołączonym na końcu postu, ale pojawia się następujący błąd:

 Authenticate/Decrypt packet error: cipher final failed

Sprawdziłem, czy serwer korzysta z kompresji Lzo i również ją włączyłem. Połączenie pozostaje aktywne, ale nie mogę nawigować do żadnej strony w sieci VPN lub poza nią.

W poniższym pliku konfiguracyjnym zawarłem rozwiązania zamieszczone w odpowiedziach

 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
orestis
źródło
1
Podczas debugowania podobnego problemu, którego nie można było rozwiązać dokładnie tak samo, użyłem resolvectl statusi resolvectl helpwymyśliłem swoje konkretne rozwiązanie.
notbad.jpeg

Odpowiedzi:

27

Znalazłem rozwiązanie na tym blogu . Chociaż wymieniono dwa rozwiązania, wolę używać drugiego, ponieważ oznacza to, że mój DNS jest ustawiany przez serwer OpenVPN (pierwsze rozwiązanie oznacza, że ​​używam tych samych serwerów DNS, niezależnie od tego, czy jestem podłączony do serwera OpenVPN).

W skrócie:

  • 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

Następnie edytuj plik klienta OpenVPN (np. Client.ovpn), zmieniając skrypty góra / dół na:

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

(Skomentowałem oryginalne ustawienia góra / dół).

Andy Turfer
źródło
Jeśli ktoś korzysta z narzędzia gnome openvpn, gdzie należy przechowywać plik config.ovpn?
orestis
1
config.ovpnnie jest „znaleziony” - to plik konfiguracyjny klienta używany do łączenia. Albo go generujesz, albo jest wydawany przez twojego dostawcę OpenVPN (i może nie zostać wywołany config.ovpn- można go nazwać czymś podobnym client.ovpn).
Andy Turfer
Działa to idealnie.
Ahsanul Haque
2
DostajęWARNING: Failed running command (--up/--down): external program fork failed
Blockhead
Niestety nie działało to dla VPN korzystającego z TCP, strony poza VPN nie zostały rozwiązane, dlatego zacząłem używać client.pritunl.com/#install
Saisurya Kattamuri
48

Problem

Plik /etc/resolv.confnie jest aktualizowany przez /etc/openvpn/update-resolv-confskrypt, ponieważ resolvconfnie jest domyślnie instalowany na Ubuntu 18.04.

W rzeczywistości jeden z pierwszych wierszy tego skryptu sprawdza /sbin/resolvconfplik wykonywalny:

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

Zainstalowanie resolvconf przez apt-getnie jest rozwiązaniem, ponieważ /etc/openvpn/update-resolv-confskrypt aktualizuje /etc/resolv.confplik wypchniętym wpisem DNS, ale urządzenie tun wydaje się go ignorować.

Rozwiązanie

  1. Ubuntu 18.04 używa systemd-resolved, więc wystarczy, że zainstalujesz skrypt pomocniczy openvpn dla systemd-resolvedvia

    sudo apt install openvpn-systemd-resolved
    

    lub za pomocą tych instrukcji GitHub

  2. Zaktualizuj config.ovpnplik, dodając następujące wiersze:

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

    To zamiast sumowania /etc/openvpn/update-resolv-confdo konf.

  3. Aby zapobiec wyciekom DNS, należy dodać ten wiersz na końcu config.ovpnpliku (zgodnie z komentarzem do wydania systemowego ):

    dhcp-option DOMAIN-ROUTE .
    
Qlimax
źródło
1
Wielkie dzięki, pracuję dla mnie nad Ubuntu 18.04. I chcę sprecyzować, że ten parametr script-security 2jest nadal potrzebny przed liniami góra / dół, w przeciwnym razie program upada z błędem (OpenVPN 2.4.4)
lucidyan
Cieszę się, że pomogło :) Zmieniłem ostatnie zdanie w odpowiedzi, w moim przypadku script-security 2 nie było to konieczne. Może dlatego, że uruchamiam klienta openvpn jako root (z sudo)
Qlimax
1
@Qlimax Czy wiesz, jak importujemy te ustawienia do klienta OpenVPN GNOME?
orestis
2
@orestis musisz zainstalować ten pakiet. sudo apt-get install network-manager-openvpn-gnome Następnie powinieneś móc importować pliki konfiguracyjne .ovpn do menedżera sieci gnome. askubuntu.com/questions/187511/… Interfejs użytkownika zmienił się z czasem, powinieneś być w stanie to znaleźć w ustawieniach-> sieć-> VPN
Qlimax
1
Zaskoczony, że to działa dla wielu z was: Mam plik ovpn.config, tak, ale wydaje się, że NetworkManager go nie używa. Czy edytowałeś plik i ponownie go zaimportowałeś, w szczególności w celu zastąpienia skryptów up / downs. Ponieważ widzę tego nieprzejrzystego binarnego / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper, dla którego nie mogłem znaleźć dokumentacji. Jeśli konieczny jest ponowny import pliku ovpn.config, zmień odpowiedź.
Harald
4

W rzeczywistości istnieje znacznie łatwiejsze rozwiązanie tego problemu. Problem dotyczy ruchu DNS i sposobu zarządzania tym przez Ubuntu 18. Domyślnie przekazywanie IP jest wyłączone, czego potrzebuje OpenVPN, aby zapewnić prawidłowe działanie sieci. Wszystko, co musisz zrobić, to uruchomić następującą komendę:

sudo nano /etc/sysctl.conf

Po otwarciu tego pliku wyszukaj wiersz, który zawiera net.ipv4.ip_forward. Jeśli ta linia jest komentowana, usuń znak # z przodu linii (jeśli nie jest komentowana, masz inny problem). Zapisz plik, a następnie uruchom ponownie instancję serwera OpenVPN.

Ta poprawka nie wymaga żadnych modyfikacji klienta ani kodu OpenVPN po aktualizacji do Ubuntu 18. Przetestowano i potwierdzono działanie.

Jednak to oczywiście wymaga administrowania serwerem. Niestety, błąd istnieje dla wielu, którzy po prostu łączą się z 18.04 z serwerem OpenVPN, który jest zarządzany przez kogoś innego ...

Max
źródło
nie działało dla mnie. jak ustaliłeś, że to był problem w twoim przypadku?
hwjp
UWAGA: nie musisz włączać ip_forward na kliencie openvpn , NIGDY! to ryzyko bezpieczeństwa. Na serwerze openvpn może być potrzebny, w zależności od użytej konfiguracji, i prawdopodobnie dlatego ten komentarz się pojawia.
higuita
2

Testowane na Ubuntu 18.04 w dniu 13 września 2018 r

Istnieją inne przydatne polecenia do konfiguracji tego, czego potrzebujesz za pomocą wiersza poleceń. Ale w moim przypadku możesz kontrolować połączenie VPN zarówno za pomocą wiersza polecenia, jak i GUI.

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

ifname -- jest domyślnie wymagany, ale nie wpływa na nic

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 nie powinien używać bramy zdalnej jako domyślnej trasy

I o wiele bardziej zainteresowany ostatni szlif:

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'

Następnie możesz kontrolować VPN za pomocą GUI lub użyć następujących poleceń:

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

Vskubriev
źródło
0

Ja też mam na to wpływ. W moim przypadku używam OpenVPN z wewnętrznym serwerem nazw (który znajduje się w sieci VPN). Działało to do Ubuntu 17.10 (z „hosts: files dns” w /etc/nsswitch.conf).

/etc/resolv.conf został poprawnie zaktualizowany przez skrypty openvpn (poprzez wywołania do / etc / openvpn / update-resolv-conf w pliku konfiguracyjnym klienta openvpn).

Jednak rozpoznawanie nazw dla hostów w sieci VPN już nie działało (a przynajmniej sporadycznie ... Wydaje mi się, że lokalna pamięć podręczna DNS wybierała nazwy, ale po dość długim czasie).

Wydaje się, że to pomaga, a nawet rozwiązuje problem (choć jest za wcześnie, aby to powiedzieć), aby zainstalować poniższy pakiet:

sudo apt install openvpn-systemd-resolved

Za kilka dni będę miał więcej doświadczenia, czy to rozwiąże mój problem, czy nie.

Jeśli to dotyczy Ciebie, spróbuj tego i opublikuj komentarze!

Twoje zdrowie,

Michał.

Michael Opdenacker
źródło
W końcu nie wydaje się to rozwiązaniem. Znowu mam problem. Chyba coś innego sprawiło, że zadziałało ...
Michael Opdenacker
1
Może wtedy usuniesz swoją odpowiedź? Wygląda na to, że decyzja została już znaleziona poniżej
lucidyan