Klient Openvpn, wymuś serwer DNS

10

Nasza konfiguracja Linux Ubuntu ma serwer DNS (Bind 9).
I resolv.confma swoje

  nameserver 127.0.0.1

Podczas używania openvpnklienta w tym systemie Linux serwer nazw nie jest zmieniany (przez serwer VPN), ale chciałbym ustawić go - tylko podczas sesji VPN - na inny określony serwer DNS x.y.z.t, zmieniając konfigurację klienta openvpn.

Następnie, po zakończeniu openvpnsesji, serwer nazw powinien powrócić do 127.0.0.1.

Czy istnieje „czysty” sposób (tj. Wiersz w pliku konfiguracyjnym klienta openvpn), aby to zrobić?

(Uwaga: konfiguracji serwera VPN nie można zmienić)

e2-e4
źródło

Odpowiedzi:

17

Po więcej google, może znaleźć odpowiedź - poniżej, jeśli może komuś pomóc.

  • zainstaluj resolvconf, który może zapisać i przywrócić resolv.confplik konfiguracyjny
  • dodaj skrypt do uruchomienia przez openvpn , w /usr/share/openvpn, o nazwie update-resolv-conf. Skrypt określa, co powinno być nowe resolv.confi jak je przywrócić (patrz link poniżej)
  • Dodaj

te linie

  script-security 2
  up /usr/share/openvpn/update-resolv-conf
  down /usr/share/openvpn/update-resolv-conf

w pliku konfiguracyjnym klienta openvpn.

Przeczytaj na tej wiki, aby uzyskać więcej informacji.

e2-e4
źródło
6
Nowsze instalacje OpenVPN obejmują ten skrypt wraz z instalacją. Zamiast ręcznego pobierania i instalowania w /usr/share/openvpn/update-resolv-conf, można go wstępnie zainstalować pod adresem /etc/openvpn/update-resolv-conf.
Nate Lampton
Która wersja OpenVPN zaczęła zawierać ten plik?
lanoxx
1
Trochę późno na imprezę tutaj, ale korzystam 2.4.6i została dla mnie zainstalowana
Roshan Bhumbra
1

Zastanów się nad użyciem route-up/ route-downskryptów na swoim kliencie, aby zmienić konfigurację konfiguracji połączenia według własnego uznania. Zobacz dokumentację OpenVPN na temat szczegółów, jak to skonfigurować i jakich zmiennych możesz użyć w tych skryptach.

the-wabbit
źródło
+1, ciekawe i przydatne. Resolvconf roztwór przez górę i w dół (poniżej lub powyżej dep. O Ocena ..), jest jednak bardziej na miejscu, a IMO czyszczenia.
e2-e4
@ ring0 Radzę używać route-upzamiast upminimalizować warunki wyścigu. Po uruchomieniu upskryptu połączenie nie zostało jeszcze skonfigurowane i nie ma możliwości zapytania do ustawionego zdalnego resolvera. Jeśli uruchomisz klienta OpenVPN w sytuacji, w której konfiguracja połączenia nie zostanie zakończona, przełączasz swój resolver w stan prawdopodobnie niefunkcjonalny na dłuższy okres czasu. Szczegółowe informacje można znaleźć w sekcji „Skrypt kolejności wykonywania” na stronie podręcznika OpenVPN .
the-wabbit
Zrobiłem kilka testów, a skrypt up jest wywoływany zaraz po osiągnięciu „Sekwencja inicjująca zakończona”, a nie wcześniej. Btw nie może znaleźć „trasa w dół” u mężczyzny.
e2-e4
1

To była przydatna informacja, która pomogła mi rozwiązać ten problem.

Jestem użytkownikiem arch. Linuxa i zobaczyłem, że kiedy klient Linux jest używany z Access Server, ten nie jest w stanie zmienić ustawień DNS na tym kliencie, nie rozwiązując hosta, ponieważ stoi on na dokumentacji OPEN VPN

Stworzyłem skrypt, który rozwiązuje problem i za pomocą kilku dodatkowych parametrów obsługuje połączenia openvpn za pośrednictwem wiersza poleceń.

https://gist.github.com/android10/ee5c3e93dbcf9b7b31e6ee768cbfd477

Oto główne polecenie wykonywane dla połączenia:

  nohup openvpn --config $OVPN_FILE_PATH --askpass $OVPN_PRIVATE_KEY_FILE_PATH \
  --script-security 2 \
  --setenv PATH '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
  --up /etc/openvpn/scripts/update-systemd-resolved \
  --down /etc/openvpn/scripts/update-systemd-resolved \
  --down-pre \
  &>/dev/null &

Wszelkie opinie są mile widziane.

Fernando Cejas
źródło
-2

echo "nameserver = wxyz"> /etc/resolv.conf
echo "nameserver = 127.0.0.1" >> /etc/resolv.conf

mnich
źródło
2
To wydaje się niedokładne (pomyśl o ścieżce wyszukiwania DNS i trwałości serwera nazw VPN), ale nie jest również jasne, gdzie chcesz go umieścić.
Falcon Momot,
Pomiędzy „serwerem nazw” a adresem IP powinna być spacja.
lorenzog,