So rufen Sie automatisch einen neuen Nameserver bei einer VPN-Verbindung ab

11

Ich verwende Ubuntu Xenial 16.04

Wir verwenden openvpn, um eine Verbindung zu einer virtuellen privaten Cloud herzustellen. Diese Cloud verfügt über einen eigenen DNS-Server (ebenso wie unsere lokale Route - zu Hause oder im Büro).

Wenn ich eine Verbindung zum VPN herstelle, sind alle IPs in diesem Netzwerk verfügbar, aber ich kann keine über den Hostnamen erreichen. Der Grund ist einfach: In der Datei resolv.conf wird weiterhin mein lokaler Office-Nameserver angezeigt. Wenn ich die resolv.conf manuell überschreibe, um den richtigen Nameserver zu haben, ist alles in Ordnung.

Wie kann ich es also dazu bringen, resolv.conf beim Herstellen einer Verbindung zum VPN automatisch neu zu konfigurieren?

Kann ich mich an ein Systemereignis anschließen und ein Skript ausführen?

Christian Bongiorno
quelle
1
Normalerweise gibt es eine Option, mit der das VPN seinen eigenen DNS-Server pushen kann. Welchen Client verwenden Sie - Tunnelblick?
Ryder
Ich benutze den offiziellen openvpn-Client. Irgendwo habe ich gelesen, dass der VPN-Prozess DNS nicht aktualisieren kann.
Christian Bongiorno
Haben Sie die --register-dnsOption ausprobiert ? Alternativ gibt es clientseitige Optionen, die Sie als DHCP-Optionen festlegen können (die Kehrseite der Anweisungen hier openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

Antworten:

8

Das OpenVPN-Paket enthält hierfür ein Skript /etc/openvpn/update-resolv-conf. Sie müssen es konfigurieren mit:

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

Dadurch werden die DNS-Serveradressen aus den dhcp-option DNSvom OpenVPN-Peer / Server übergebenen Optionen abgerufen und entsprechend konfiguriert resolvconf. Es geht dhcp-option DOMAINauch.

Es ist jedoch nicht perfekt, da dadurch diese Nameserver der Liste der vorhandenen Nameserver vorangestellt werden, anstatt die Liste der Nameserver zu überschreiben. Wenn Sie openresolvdas -xverwenden, können Sie die DNS-Konfiguration überschreiben, anstatt sie vorzugeben.


Wenn Sie verwenden systemd-resolved, können Sie anstelle von " /etc/openvpn/update-systemd-resolvedwhich" systemd-revolvedverwenden resolvconf.

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

Unter Debian befindet sich dieses Skript in der openvpn-systemd-resolved.

ysdx
quelle
2
über diesen 2 Zeilen müssen Sie auch script-security 2Ihre openvpnmit--script-security 2
32r34wgf3e
0

Hier ist die Lösung, die ich mir ausgedacht habe: Es gibt einen Schalter, mit dem Sie ein Skript ausführen können, wenn der Tunnel in Betrieb ist. Ich benutze den Schalter, um die resolv.conf-Datei im Wesentlichen mit einer Datei zu überschreiben, von der ich weiß, dass sie korrekt ist. Es ist ein totaler Hack, ich weiß.

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

das Skript (reset-dns):

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

Außerdem sagen diejenigen: "OMG! Sie betreiben diesen Tunnel als Root!" Es wird nicht anders laufen; noch vor meinem DNS-Hack.

Ich bin definitiv offen für einen besseren Weg. Der Netzwerkmanager für Ubuntu funktioniert einfach nicht. Ich habe diesbezüglich wiederholt Tickets für Ubuntu gekürzt

Christian Bongiorno
quelle