Jak automatycznie pobrać nowy serwer nazw w VPN connect

11

Korzystam z Ubuntu Xenial 16.04

Używamy openvpn do łączenia się z wirtualną chmurą prywatną. Ta chmura ma swój własny serwer DNS (podobnie jak nasza lokalna trasa - do domu lub biura).

Kiedy łączę się z VPN, wszystkie adresy IP w tej sieci są dostępne, ale nie mogę dotrzeć do żadnej nazwy hosta. Powód jest prosty: plik resolv.conf nadal pokazuje mój serwer nazw lokalnego biura. Jeśli ręcznie zastąpię plik resolv.conf, aby mieć prawidłowy serwer nazw, wszystko jest w porządku.

Jak mogę go automatycznie skonfigurować ponownie resolv.conf po połączeniu z VPN?

Czy mogę podłączyć się do zdarzenia systemowego i wykonać skrypt?

Christian Bongiorno
źródło
1
Zwykle istnieje opcja zezwolenia VPN na wypchnięcie własnego serwera DNS. Z którego klienta korzystasz - tunelowy?
Ryder
Korzystam z oficjalnego klienta openvpn. Gdzieś przeczytałem, że proces VPN nie może zaktualizować DNS.
Christian Bongiorno
Czy wypróbowałeś już tę --register-dnsopcję? Alternatywnie istnieją opcje po stronie klienta, które można ustawić jako opcje dhcp (druga strona instrukcji tutaj openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

Odpowiedzi:

8

Pakiet OpenVPN ma w tym celu skrypt /etc/openvpn/update-resolv-conf. Musisz skonfigurować go za pomocą:

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

Spowoduje to pobranie adresów serwera DNS z dhcp-option DNSopcji przekazanych przez peer / serwer OpenVPN i resolvconfodpowiednie skonfigurowanie . Obsługuje dhcp-option DOMAINrównież.

Nie jest to jednak idealne, ponieważ spowoduje to zastąpienie tych serwerów nazw na liście istniejących serwerów nazw zamiast nadpisywania listy serwerów nazw. Jeśli używasz może być użyta do nadpisania konfigurację DNS zamiast preprending do niego.openresolv-x


Jeśli używasz systemd-resolved, możesz zamiast tego użyć /etc/openvpn/update-systemd-resolvedzaczepu .systemd-revolvedresolvconf

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

Na Debianie ten skrypt znajduje się w openvpn-systemd-resolved.

ysdx
źródło
2
powyżej tych 2 linii, będzie trzeba także dodać script-security 2lub uruchomić swojej openvpnz--script-security 2
32r34wgf3e
0

Oto rozwiązanie, które wymyśliłem: Istnieje przełącznik, który pozwala uruchomić skrypt, gdy tunel jest uruchomiony. Używam przełącznika, aby zasadniczo zastąpić plik resolv.conf plikiem, o którym wiem, że jest poprawny. Wiem, że to totalny hack.

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

skrypt (reset-dns):

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

Również dla tych, którzy mówią „OMG! Prowadzisz ten tunel jako root!” Nie będzie działać w żaden inny sposób; nawet przed włamaniem się do DNS.

Jestem zdecydowanie otwarty na lepszy sposób. Menedżer sieci dla Ubuntu po prostu nie działa. Wielokrotnie odcinałem sobie bilety na ubuntu

Christian Bongiorno
źródło