Openvpn-Client, DNS-Server erzwingen

9

Unsere Linux Ubuntu-Konfiguration verfügt über einen DNS-Server (Bind 9).
Und resolv.confhat seine

  nameserver 127.0.0.1

Wenn Sie den openvpnClient unter Linux verwenden, wird der Nameserver nicht geändert (vom VPN-Server), aber ich möchte ihn - nur während der VPN-Sitzung - auf einen anderen bestimmten DNS-Server x.y.z.teinstellen, indem ich die openvpn-Client-Konfiguration ändere.

Wenn die openvpnSitzung endet, sollte der Nameserver wieder verfügbar sein 127.0.0.1.

Gibt es eine "saubere" Möglichkeit (dh eine Zeile in der Konfigurationsdatei des openvpn-Clients), dies zu tun?

(Hinweis: Die VPN-Serverkonfiguration kann nicht geändert werden.)

Ring Ø
quelle

Antworten:

17

Nach mehr googeln, könnte die Antwort finden - unten, wenn es jemandem helfen kann.

  • Installieren Sie resolvconf, mit dem die resolv.confKonfigurationsdatei gespeichert und wiederhergestellt werden kann
  • Fügen Sie ein Skript hinzu, das von openvpn ausgeführt werden /usr/share/openvpnsoll update-resolv-conf. Das Skript legt fest, was neu sein soll resolv.confund wie es wiederhergestellt werden soll (siehe Link unten).
  • hinzufügen

diese Zeilen

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

in der openvpn-Client-Konfigurationsdatei.

Lesen Sie in diesem Wiki weitere Informationen.

Ring Ø
quelle
5
Neuere Installationen von OpenVPN enthalten dieses Skript bei der Installation. Anstatt manuell herunterzuladen und zu installieren /usr/share/openvpn/update-resolv-conf, finden Sie es vorinstalliert unter /etc/openvpn/update-resolv-conf.
Nate Lampton
Welche Version von OpenVPN hat diese Datei aufgenommen?
Lanoxx
1
Ein bisschen spät zur Party hier, aber ich benutze 2.4.6und es wurde für mich installiert
Roshan Bhumbra
1

Verwenden Sie route-up/ route-downscripts auf Ihrem Client, um Ihre Konfiguration beim Verbindungsaufbau nach Belieben zu ändern. In den OpenVPN-Dokumenten finden Sie Details dazu, wie Sie dies einrichten und welche Variablen Sie in diesen Skripten verwenden können.

the-wabbit
quelle
+1, interessant und nützlich. Die Resolvconf- Lösung über Auf und Ab (über oder unter abhängig von der Bewertung ..) ist jedoch mehr auf den Punkt und imo sauberer.
Ring Ø
@ ring0 Ich würde empfehlen, route-upanstatt updie Rennbedingungen zu minimieren. Wenn das upSkript ausgeführt wird, ist die Verbindung noch nicht hergestellt und Sie haben keine Möglichkeit, den von Ihnen eingestellten Remote-Resolver abzufragen. Wenn Sie den OpenVPN-Client in einer Situation starten, in der der Verbindungsaufbau nicht abgeschlossen werden kann, versetzen Sie Ihren Resolver für einen längeren Zeitraum in einen möglicherweise nicht funktionsfähigen Zustand. Weitere Informationen finden Sie im Abschnitt "Skriptausführungsreihenfolge" in der OpenVPN-Manpage .
The-Wabbit
Ich habe einige Tests durchgeführt, und das Up- Skript wird direkt nach Erreichen der "Initialisierungssequenz abgeschlossen" aufgerufen, nicht vorher. Übrigens kann der Mann keinen "Weg nach unten" finden.
Ring Ø
1

Dies waren nützliche Informationen, um dieses Problem zu beheben.

Ich bin ein Arch-Linux-Benutzer und habe gesehen, dass bei Verwendung eines Linux-Clients mit Access Server die DNS-Einstellungen auf dem betreffenden Client nicht geändert werden können, ohne dass der Host aufgelöst wird, da er in der OPEN VPN-Dokumentation steht

Ich habe ein Skript erstellt, das das Problem behebt und mit ein paar zusätzlichen Parametern OpenVPN-Verbindungen über die Befehlszeile verarbeitet.

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

Hier ist der Hauptbefehl, der für die Verbindung ausgeführt wird:

  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 &

Jedes Feedback wird mehr als geschätzt.

Fernando Cejas
quelle
-2

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

Mönch
quelle
2
Das scheint ungenau zu sein (denken Sie an den DNS-Suchpfad und die Persistenz des VPN-Nameservers), aber es ist auch unklar, wo er dies ablegen soll.
Falcon Momot
Zwischen 'Nameserver' und der IP sollte ein Leerzeichen stehen.
Lorenzog