Hvordan indstiller jeg min DNS, når resolv.conf bliver overskrevet?
De fleste af de oplysninger, jeg ser på nettet, siger, at jeg skal redigere /etc/resolv.conf
, men alle ændringer, jeg foretager der, bliver bare overstyret.
$ 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 ud til, at 127.0.1.1.1 er en lokal instans af dnsmasq
. I dnsmasq
-dokumentationen står der, at jeg skal redigere /etc/resolv.conf
. Jeg prøvede at sætte brugerdefinerede navneservere i /etc/resolv.conf.d/base
, men ændringerne dukkede ikke op i /etc/resolv.conf
efter at have kørt sudo resolvconf -u
.
FYI, jeg don't ønsker at ændre DNS på en per-forbindelse basis, jeg ønsker at indstille standard DNS indstillinger til brug for alle forbindelser, når ikke andet er angivet.
UPDATE:
Jeg har selv besvaret dette spørgsmål: https://unix.stackexchange.com/a/163506/67024
Jeg tror, det er den bedste løsning siden:
- Den virker.
- Den kræver mindst mulige ændringer og
- Den fungerer stadig i forbindelse med dnsmasq's DNS-cache, i stedet for at omgå den.
Jeg tror, at hvis du ønsker at tilsidesætte DNS-nameserveren, skal du blot tilføje en linje svarende til denne i din
base
-fil underresolv.conf.d
.Eksempel
Indsæt derefter din navneserverliste på denne måde:
Til sidst opdaterer du
resolvconf
:Hvis du tager et kig på man-siden for
resolvconf
beskriver den de forskellige filer under/etc/resolvconf/resolv.conf.d/
.Selv om der er en advarsel øverst i
head
-filen:er denne advarsel der, så når disse filer konstrueres, vil advarslen i sidste ende være at finde i den resulterende
resolv.conf
-fil, som disse filer vil blive brugt til at lave. Så du kunne lige så godt have tilføjet denameserver
-linjer, som er beskrevet ovenfor forbase
-filen, tilhead
-filen også.Referencer
Jeg er også interesseret i dette spørgsmål, og jeg har prøvet den foreslåede løsning @sim.
For at teste det, satte jeg
i
/etc/resolvconf/resolv.conf.d/base
ogi
/etc/resolvconf/resolv.conf.d/head
.Derefter genstartede jeg netværket med
Resultatet er, at
/etc/resolv.conf
ser ud somog
nm-tool
angiver, at dnsserverne ersom er dem, der leveres af min router. På den anden side fortæller grave en adresse, at
Hvis jeg har ret, konkluderer jeg ud fra alt dette, at
Alt i alt virker det, men jeg tror ikke, at det er det ønskede resultat, der er bedt om. En mere nærliggende løsning synes jeg er følgende. Rediger
og tilføj derefter
Resultatet er følgende: resolv.conf indeholder kun 127.0.0.0.1, hvilket betyder, at dnsmasq cache er påberåbt, og nm-tool siger
hvilket betyder, at hvis det søgte navn ikke er i cachen, så bliver der spurgt efter det på 8.8.8.8.8 og ikke på den server, der er angivet af dhcp.
En anden (måske bedre) mulighed er at bruge "prepend" i stedet for "supersede": på denne måde falder anmodningen tilbage på den anden server, hvis navnet ikke bliver løst af 8.8.8.8.8. I virkeligheden siger nm-tool
Prøv at tilføje
dns-nameservers XXX.XXX.XXX.XXX.X
i filen/etc/networking/interfaces
.