Um zu lernen, schreibe ich meinen eigenen DNS-Caching-Server (à la dnsmasq, aber stattdessen in Python). Von DHCP erhält NetworkManager Upstream-Nameserver und platziert sie in /etc/resolv.conf
. Mein System sucht auch in /etc/resolv.conf
nach Nameservern, die abgefragt werden können.
Ich muss meinen eigenen DNS-Server ( 127.0.0.1
) einfügen /etc/resolv.conf
, damit mein System ihn abfragt, aber NetworkManager die Datei überschreibt. Wenn ich NetworkManager nicht zulasse/so konfiguriere, dass er nicht überschreibt /etc/resolv.conf
, kann mein DNS-Server keine zwischengespeicherten Nameserver finden, weil NetworkManager sie dort nicht einträgt.
Es scheint, dass /etc/resolv.conf
symbolische Links zu vorhanden sind /var/run/NetworkManager/resolv.conf
, also könnte ich meinen DNS-Server vermutlich dort nach Upstream-Servern suchen lassen? Ich würde chattr -i /etc/resolv.conf
es nur tun, um zu verhindern, dass NetworkManager es überschreibt. Soll ich das so machen oder gibt es einen besseren Weg?
Antwort1
chattr funktioniert. Es weist NM an, resolv.conf unverändert zu lassen. Alternativ siehe rc-manager
in man NetworkManager.conf
.
NM schreibt immer in seine interne resolv.conf in var/run, also könnten Sie das scrapen. Oder Sie verwenden nmcli -f all device show
oder ein Dispatcher-Skript ( man NetworkManager
).
Schließlich könnten Sie Ihr eigenes DNS-Plugin schreiben. Dazu müssen Sie NM jedoch aus dem Quellcode neu erstellen, und die API des Plugins ist auch nicht öffentlich/stabil.