• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

DNS Server dynamisch ändern

Hallo zusammen,
um ein bestimmtes Problem im Zusammenhang mit VPN Zugang zu lösen, stehe ich vor der Aufgabe die Liste der Nameserver dynamisch zu ändern. Daher habe ich nun längere Zeit gesucht welche Befehle bzw. Parameter es gibt um das zu machen. In mehreren Quellen glaube ich nun gefunden zu haben dass so etwas nicht möglich sein soll(?) Alle Hinweise beziehen sich immer darauf, die Datei /etc/resolv.conf zu ändern und dann das Netzwerk neu zu starten.

In meinen Einträgen muss ich folgendes erreichen:

Code:
nameserver <IP des neuen Servers fürs VPN (statische Adresse)>
nameserver <IP des Servers der bestehenden Verbindung>

Natürlich bin ich schon auf die Idee gekommen, eine neue resolv.conf-Datei anzulegen und vor dem Starten des VPN über die automatisch erstellte drüber zu kopieren. Das funktioniert auch so weit, hat aber leider den Haken dass sich der Server für die bestehende Verbindung bei Notebooks immer wieder mal ändert. So muss ich meine Datei-Vorlage immer um den manuell ermittelten DNS Server erweitern damit es geht.

Diese Problem wollte ich jetzt eben per Script angehen und bin dabei auf die o.g. Grenze gestossen. Kann mir jemand bestätigen dass es tatsächlich nicht möglich ist, die DNS Server-Liste per Befehl zu beackern? Wird die resolv.conf bei Verbindungsaufnahme mit einem WLAN neu erzeugt? Mein nächster Lösungsansatz wird darin bestehen, die Modifikation von resolv.conf per Script vorzunehmen.

Danke für eure Hinweise,
Jörg.
 

spoensche

Moderator
Teammitglied
Eine VPN- Verbindung ist ja eine Einwahlverbindung (PPP) und die Gegenstelle, also die, wo du dich einwählst, sollte dir und macht es normalerweise auch, bei einer erfolgreichen Einwahl, dir die DNS- Server autom. übermitteln, die dann von deinem Einwahlprogramm automatisch die resolv.conf ändert. Dabei ist es egal, ob sich die DNS- Server ändern, da die Gegenstelle dir diese bei jeder einwahl übermittelt.

Das du das selber machst ist nicht nötig.

Welchen Client benutzt du? Wie ist dieser konfiguriert?
 
OP
F

FordPrefect

Member
spoensche schrieb:
Eine VPN- Verbindung ist ja eine Einwahlverbindung (PPP) und die Gegenstelle, also die, wo du dich einwählst, sollte dir und macht es normalerweise auch, bei einer erfolgreichen Einwahl, dir die DNS- Server autom. übermitteln, die dann von deinem Einwahlprogramm automatisch die resolv.conf ändert. Dabei ist es egal, ob sich die DNS- Server ändern, da die Gegenstelle dir diese bei jeder einwahl übermittelt.

Das du das selber machst ist nicht nötig.

Welchen Client benutzt du? Wie ist dieser konfiguriert?

Ich benutze openVPN (V2.0.9). Die Konfigurations-Parameter kommen aus einer Datei. Welche Parameter sind denn da in diesem Zusammenhang interessant?

Hier (auszugsweise) die Meldungen die openVPN beim Verbindungsaufbau ausgibt:

Code:
SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
PUSH: Received control message: 'PUSH_REPLY,route xxx.yyy.16.0 255.255.252.0,route xxx.yyy.20.1,ping 30,ping-restart 180,ifconfig xxx.yyy.20.17 xxx.yyy.20.18'
OPTIONS IMPORT: timers and/or timeouts modified
NOTE: --mute triggered...
2 variation(s) on previous 3 message(s) suppressed by --mute
TUN/TAP device tun0 opened
/bin/ip link set dev tun0 up mtu 1500
/bin/ip addr add dev tun0 local xxx.yyy.20.17 peer xxx.yyy.20.18
/bin/ip route add xxx.yyy.16.0/22 via xxx.yyy.20.18
/bin/ip route add xxx.yyy.20.1/32 via xxx.yyy.20.18
Initialization Sequence Completed

Ich habe in den Meldungen den Zeitstempel weg gelassen und den Beginn der IP-Adressen "verschlüsselt". Ist es richtig anzunehmen dass einige "ip"-Befehle ausgelöst werden? Wenn es aber keine Möglichkeit gibt, den DNS Server per Befehl zu ändern, wie kann das VPN dieses dann machen? Fehlt hier womöglich etwas in der Befehlskette die vom VPN Server übermittelt wird?

Ausserdem verstehe ich deine Bemerkung bezüglich PPP nicht. Ich habe keinerlei Konfiguration in meinem System gemacht um VPN zu nutzen, also keine NetworkManager- oder Yast-Settings. Ich rufe lediglich das openVPN mit meinen Parametern auf. Oder meintest du damit das TUN device das erzeugt wird? Würde es helfen, im Stil der ülichen Netzwerk-Schnittstellen eine ifcfg-tun0 Datei anzulegen? Falls ja, was müsste dort rein?

Noch zur Ergänzung: mit dem Trick den "VPN-DNS-Server" in resolv.conf an die erste Stelle zu kopieren funktioniert die Verbindung auch tadellos! Ich möchte lediglich gerne von dieser "Krücke" mit dem Kopieren der resolv.conf-Varianten weg kommen.

Vielen Dank für deine Hilfe!
Jörg.
 

spoensche

Moderator
Teammitglied
Poste mal bitte deine /etc/openvpn/client.conf, sonst fischen wir hier nächstest Jahr noch im Trüben. Das ist die Konfigurationsdatei für den Client.

Mit welchen Parametern startest du den Client? Verwendest du eine feste IP oder bekommst du die vom VPN-Server dynamisch zu gewiesen? Wenn du die IP dynamisch zugewiesen bekommst, bekommst du auch die DNS-Server automatisch.

Also mit ein paar mehr Informationen musst du schon rüber kommen, weil meine Glaskugel im Urlaub ist.


Die Befehle die openvpn aufruft, sind richtig, weil sie das Interface (IP etc.) konfigurieren, damit du mit dem VPN- Server kommunizieren kannst,
 
Oben