Ich verbinde mich oft gleichzeitig mit mehreren Netzwerken. Jedes dieser Netzwerke bietet eine Nameserver-Konfiguration über DHCP. ZB Netzwerk 1: (eth0):
domain company1.corp #
nameserver 192.168.0.253
nameserver 192.168.0.254
Netzwerk 2 (tun0):
domain company2.corp #
nameserver 10.102.204.51
nameserver 10.102.208.51
# Namen geändert
Bei gleichzeitiger Verbindung mit beiden Netzwerken:
# resolv.conf from NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Das Auflösen von service.company2.corp funktioniert nicht, da der Vornamenserver nur die Namen von company1.corp kennt.
Von diesem Artikel inspiriert , habe ich openresolv (eine resolvconf-Implementierung) eingerichtet, um einen lokalen dnsmasq-Dienst auf meiner Arch Linux-Installation zu konfigurieren.
Wenn ich die Nameserver manuell mit resolvconf konfiguriere:
# resolvconf -d NetworkManager
# echo "domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
" | resolvconf -a eth0
# echo "domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
" | resolvconf -a tun0
Dann kann ich Namen sowohl von company1.corp als auch von company2.corp auflösen (der lokale dnsmasq-Server übernimmt dies.)
Beachten Sie, dass auflösungskonf -l nach der manuellen Konfiguration die beiden Konfigurationen separat anzeigt:
~ # resolvconf -l
# resolv.conf from tun0
domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
# resolv.conf from eth0
domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
Wenn Sie jedoch die Konfiguration von Network Manager durchführen lassen, sind die beiden Konfigurationen nicht getrennt, wie dies der Fall wäre, wenn Network Manager in /etc/resolve.conf schreiben würde
~ # resolvconf -l
# resolv.conf from NetworkManager
# Generated by NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Meine Frage ist, wie ich den Netzwerkmanager dazu bringen kann, resolveconf korrekt aufzurufen, damit die Nameserver für jede Schnittstelle separat registriert werden. (Leider ist das Googeln dafür nutzlos, da Google denkt, dass "resolveconf" == "resolve.conf")
quelle
"resolvconf"
mit den Anführungszeichen. Setzen Sie bei Google immer Anführungszeichen um Eigennamen.Antworten:
NetworkManager verfügt über die Funktionalität zum Verwalten eines integrierten lokalen DNSMASQ-Servers. Dazu muss nicht resolvconf / openresolv verwendet werden.
So aktivieren Sie dies:
dns=dnsmasq
zu/etc/NetworkManager/NetworkManager.conf
.Sobald Sie dies getan haben, werden Sie sehen, dass NetworkManager einen dnsmasq-Prozess gestartet hat:
/etc/resolve.conf
sollte auf die lokale dnsmasq-Instanz verweisen:und wir können sehen, welche Server dnsmasq verwendet:
quelle
ubound
Es sieht so aus, als würde NetworkManager einfach überschreiben
/etc/resolv.conf
und openresolv nicht verwenden. Laut FS # 24635 unterstützt NetworkManager openreslov zwar, war jedoch im Build ursprünglich nicht aktiviert. Welche Version von Arch Linux verwenden Sie und wie lautet die Version des Networkmanager-Pakets?quelle
Tun Sie, was Gary van der Merwe antwortete, aber in
/etc/NetworkManager/NetworkManager.conf
Ich musste hinzufügen
in die Datei. Nicht nur
dns=dnsmasq
Dies liegt daran, dass sich alle Einstellungen in dieser Datei in einem Abschnitt befinden müssen und die Version des NetworkManager-Pakets meiner Distribution, manjaro (archlinux), die Konfigurationsdatei nicht auffüllt. (Ich gehe davon aus, dass Garys Distribution dies tut, da seine vorgeschlagene Linie für ihn und andere funktioniert hat.)
Ein weiterer Hinweis: Jede dnsmasq-Konfiguration muss in einer Konfigurationsdatei enthalten sein
/etc/NetworkManager/dnsmasq.d/
Verzeichnis. Möglicherweise handelt es sich um ein anderes Verzeichnis auf Ihrem Computer. Ich habe das verwendete Verzeichnis anhand der Zeile gelernt, in der NetworkManager den dnsmasq-Daemon startet. Sie können diese Zeile sehen, indem Sie ausführen
ps aux|grep dnsmasq
. Sie müssen warten, um dies auszuführen, bis Sie die Konfiguration von NetworkManager geändert und den Dienst neu gestartet haben.quelle