Wie definiere ich einen DNS-Server in openvpn?

17

Ich habe einen OpenVPN-Server mit statischem Schlüssel eingerichtet (der Zertifikatsmodus ist aufgrund von DPI am nationalen Gateway nicht verwendbar), kann das DNS jedoch nach dem Herstellen der Verbindung nicht automatisch ändern. Ich habe über das Internet und SE gesucht, und jeder schlägt die Verwendung vor dhcp-option.

Ich habe versucht, diese Zeile hinzuzufügen client.ovpn

dhcp-option DNS 8.8.8.8

Es gibt keine Wirkung. Ich habe versucht, diese Zeile in Server Conf hinzuzufügen

push "dhcp-option DNS 8.8.8.8"

Beides hat keine Auswirkung.

In der Tat nach dem Handbuch,

--dhcp-Optionstyp [parm]

Festlegen erweiterter TAP-Win32-TCP / IP-Eigenschaften, muss mit --ip-win32 dynamic oder --ip-win32 adaptive verwendet werden.

Aber mein Client ist eine Mac-Maschine, Server-Linux. Irgendwelche Lösungen für das Problem?

Siyuan Ren
quelle
1
Sie sollten angeben, welchen Client Sie auf dem OSX-Computer verwenden.
FloHimself
2
@FloHimself: Das Standard-Befehlszeilenprogramm openvpn.
Siyuan Ren

Antworten:

7

Auf einem Linux-System müssen Sie ein externes Skript ausführen .

Hier ist die Dokumentation: https://wiki.archlinux.org/index.php/OpenVPN#DNS

Skripte werden auf gefunden hier oder neuere Linux - Version hier und Sie können sie nennen diese Konfiguration auf der OpenVPN - Client durch Hinzufügen:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Damien
quelle
Wenn Ihre Linux-Version NetworkManager verwendet, lesen Sie die Änderungen, mit denen Sie arbeitennmcli möchten .
Palswim
5

Ich bin kein Experte, aber vom Lesen der manSeite unter Ihrem Zitat:

--dhcp-Optionstyp [parm]

...

Beachten Sie, dass, wenn die Option --dhcp über --push auf einen Nicht-Windows-Client übertragen wird , die Option in der Client-Umgebung gespeichert wird, bevor das Skript up unter dem Namen "foreign_option_ {n}" aufgerufen wird.

und unter foreign_option_ {n} :

Auslandsoption {n}

Eine Option, die über --push an einen Client gesendet wird, der sie nicht von Haus aus unterstützt, wie die Option --dhcp auf einem Nicht-Windows-System , wird vor der Ausführung des Skripts in dieser Umgebungsvariablensequenz aufgezeichnet .

Daher openvpnändert der Befehlszeilenclient das DNS-Setup auf Ihrem OSX-Computer nach dem Herstellen der Verbindung nicht automatisch. Aber da die DNS - Optionen auf die Client-Umgebung gespeichert werden, können Sie ein Skript angeben , die geschoben Server auf das System des aktuellen DNS - Konfiguration mit dem anhängen --upOption:

--up cmd

Führen Sie den Befehl cmd aus, nachdem das TUN / TAP-Gerät erfolgreich geöffnet wurde (UID-Änderung vor dem Benutzer).

cmd besteht aus einem Pfad zum Skript (oder ausführbaren Programm), optional gefolgt von Argumenten. Der Pfad und die Argumente können in einfache oder doppelte Anführungszeichen gesetzt und / oder mit einem Backslash maskiert werden und sollten durch ein oder mehrere Leerzeichen getrennt werden.

ZB Tunnel tut dies auch durch diese Verwendung Skript .

Eine andere Lösung könnte ein Skript sein, das auf der openvpn-Mailingliste bei DNS für OS X-Clients veröffentlicht wurde - das Definitive Handbuch .

FloHimself
quelle
Was ist mit dem iPhone? Ich stelle mir vor, dass es ohne Jailbreak keinen Bash oder Befehl zum automatischen Ändern des DNS gibt.
Siyuan Ren
@SiyuanRen Ohne Jailbraking verwenden Sie wahrscheinlich nicht die Befehlszeile openvpn-Client auf einem iPhone ...
FloHimself
Die offizielle openvpn-App lädt einfach eine Textkonfigurationsdatei und führt sie aus. Es gibt keine Funktionalität mehr.
Siyuan Ren
@SiyuanRen Nun, die offizielle OpenVPN-App ist nicht die Befehlszeilenanwendung, die hier behandelt wird.
FloHimself
Das fühlt sich an wie ein Hack. Wenn ich eine Verbindung mit PPTP oder L2TP herstelle, ist in den Netzwerkeinstellungen eine dedizierte Schnittstelle verfügbar, deren einzige IP- und DNS-Adresse angegeben ist. OpenVPN erfordert, dass ich die DNS-Einstellungen anderer Schnittstellen ändere ?
Siyuan Ren
4

Ich hatte das gleiche Problem mit beiden Linux-Betriebssystemen (Server und Client) und habe es gelöst, indem ich dnsmasq auf einem fehlenden Server installiert habe

so meine schritte:

apt-get install dnsmasq

in der server.conf

push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"

Außerdem konnte ich Domänen über die Server-IP verbinden und durchsuchen und mit NetWorkManager eine Verbindung herstellen, wobei DNS auf Automatisch eingestellt war

Verrückt
quelle
-1

Fügen Sie diesen Befehl Ihrer clientseitigen Konfigurationsdatei hinzu.

# put actual dns name here
dhcp-option DNS 10.11.12.13 

Es wird auf jeden Fall funktionieren ..

Vinood NK Maheshwari
quelle