Hvordan stiller jeg inn DNS når resolv.conf blir overskrevet?
Det meste av informasjonen jeg ser på nettet sier at jeg skal redigere /etc/resolv.conf
, men alle endringer jeg gjør der blir bare overstyrt.
$ 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
Det ser ut til at 127.0.1.1 er en lokal forekomst av dnsmasq
. dnsmasq
-dokumentene sier å redigere /etc/resolv.conf
. Jeg prøvde å sette egendefinerte navneservere i /etc/resolv.conf.d/base
, men endringene dukket ikke opp i /etc/resolv.conf
etter å ha kjørt sudo resolvconf -u
.
FYI, jeg ønsker ikke å endre DNS per tilkobling, jeg vil angi standard DNS-innstillinger som skal brukes for alle tilkoblinger når ikke annet er spesifisert.
OPPDATERING:
Jeg svarte på dette spørsmålet selv: https://unix.stackexchange.com/a/163506/67024
Jeg tror det er den beste løsningen siden:
- Det fungerer.
- Det krever minst mulig endringer og
- Den fungerer fortsatt sammen med dnsmasqs DNS-cache, i stedet for å omgå den.
283
3
Jeg tror at hvis du vil overstyre DNS-navneserveren, legger du bare til en linje som denne i
base
-filen underresolv.conf.d
.Eksempel
Sett deretter inn navneserverlisten din slik:
Oppdater til slutt
resolvconf
:Hvis du tar en titt på man-siden for
resolvconf
beskriver den de forskjellige filene under/etc/resolvconf/resolv.conf.d/
.Selv om det er en advarsel øverst i
head
-filen:er denne advarselen der slik at når disse filene er konstruert, vil advarselen til slutt arbeide seg inn i den resulterende
resolv.conf
-filen som disse filene vil bli brukt til å lage. Så du kunne like gjerne ha lagt tilnameserver
-linjene som er beskrevet ovenfor forbase
-filen, tilhead
-filen også.Referanser
Jeg er også interessert i dette spørsmålet, og jeg prøvde løsningen foreslått @sim.
For å teste det, satte jeg
i
/etc/resolvconf/resolv.conf.d/base
ogi
/etc/resolvconf/resolv.conf.d/head
.Deretter startet jeg nettverket på nytt med
Resultatet er at
/etc/resolv.conf
ser ut som følgendeog
nm-tool
sier at dnsserveren ersom er de som leveres av ruteren min. På den annen side forteller graving av en adresse at
Hvis jeg har rett, konkluderer jeg fra alt dette at
Alt i alt fungerer det, men jeg tror ikke det er det tiltenkte resultatet bedt om. En mer nær løsning tror jeg er følgende. Redigere
og legg deretter til
Resultatet er følgende: resolv.conf inneholder bare 127.0.0.1, noe som betyr at dnsmasq cache er påkalt og nm-tool sier
som betyr at hvis navnet det søkes etter ikke er i hurtigbufferen, blir det bedt om på 8.8.8.8 og ikke på serveren levert av dhcp.
Et annet (kanskje bedre) alternativ er å bruke "prepend" i stedet for "supersede": på denne måten, hvis navnet ikke løses av 8.8.8.8, faller forespørselen tilbake på den andre serveren. Faktisk sier nm-tool
Prøv å legge til
dns-nameservers XXX.XXX.XXX.X
i filen/etc/networking/interfaces
.