Hoe stel ik mijn DNS in als resolv.conf wordt overschreven?
De meeste info die ik online zie zegt dat ik /etc/resolv.conf
moet aanpassen, maar alle wijzigingen die ik daar maak worden gewoon overschreven.
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND --
# YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
Het lijkt erop dat 127.0.1.1 een lokale instantie van dnsmasq
is. De dnsmasq
docs zeggen dat ik /etc/resolv.conf
moet aanpassen. Ik heb geprobeerd om aangepaste nameservers in /etc/resolv.conf.d/base
te zetten, maar de veranderingen waren niet te zien in /etc/resolv.conf
na het uitvoeren van sudo resolvconf -u
.
FYI, ik wil DNS niet per verbinding veranderen, ik wil standaard DNS-instellingen instellen om te gebruiken voor alle verbindingen wanneer niet anders gespecificeerd.
UPDATE:
Ik heb deze vraag zelf beantwoord: https://unix.stackexchange.com/a/163506/67024
Ik denk dat het de beste oplossing is sinds:
- Het werkt.
- Het vereist de minste veranderingen en
- Het werkt nog steeds in combinatie met dnsmasq's DNS cache, in plaats van het te omzeilen.
Ik denk dat als je de DNS nameserver wilt overschrijven, je gewoon een regel als deze toevoegt in je
base
bestand onderresolv.conf.d
.Voorbeeld
Zet dan je nameserver lijst erin zoals dit:
Update tenslotte
resolvconf
:Als je de man page voor
resolvconf
bekijkt, worden de verschillende bestanden onder/etc/resolvconf/resolv.conf.d/
beschreven.Ook al staat er's een waarschuwing bovenaan het
head
bestand:deze waarschuwing is er zodat wanneer deze bestanden worden geconstrueerd, de waarschuwing uiteindelijk zijn weg zal vinden in het resulterende
resolv.conf
bestand dat deze bestanden zullen gebruiken om te maken. Dus je had net zo goed denameserver
regels die hierboven zijn beschreven voor hetbase
bestand, ook aan hethead
bestand kunnen toevoegen.Referenties
Ik ben ook geïnteresseerd in deze vraag en ik probeerde de oplossing die @sim voorstelde.
Om het te testen, zet ik
in
/etc/resolvconf/resolv.conf.d/base
enin
/etc/resolvconf/resolv.conf.d/head
Daarna herstartte ik het netwerk met
Het resultaat is dat
/etc/resolv.conf
er als volgt uitzieten
nm-tool
zegt dat de dnsserverdie door mijn router worden geleverd. Aan de andere kant vertelt het graven van een adres dat
Als ik gelijk heb, concludeer ik uit dit alles dat
Al met al werkt het, maar ik denk niet dat dit het beoogde resultaat is waarnaar gevraagd werd. Een meer dichtbije oplossing is denk ik het volgende. Bewerk
en voeg dan toe
Het resultaat is het volgende: resolv.conf bevat alleen 127.0.0.1, wat betekent dat dnsmasq cache wordt aangeroepen en nm-tool zegt
wat betekent dat als de gezochte naam niet in de cache staat, deze wordt opgevraagd bij 8.8.8.8 en niet bij de server die door dhcp is opgegeven.
Een andere (misschien betere) optie is om "prepend" te gebruiken in plaats van "supersede": op deze manier, als de naam niet wordt opgelost door 8.8.8.8, dan valt het verzoek terug op de andere server. In feite zegt nm-tool
Probeer
dns-nameservers XXX.XXX.XXX.X
toe te voegen in uw/etc/networking/interfaces
bestand.