Więcej
Jak ustawić DNS, gdy resolv.conf jest nadpisywany?
Większość informacji, które widzę w sieci mówi, żeby edytować /etc/resolv.conf
, ale wszelkie zmiany, które tam wprowadzam po prostu zostają nadpisane.
$ 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
Wygląda na to, że 127.0.1.1 jest lokalną instancją dnsmasq
. Dokumenty dnsmasq
mówią, żeby edytować /etc/resolv.conf
. Próbowałem umieścić niestandardowe serwery nazw w /etc/resolv.conf.d/base
, ale zmiany nie pokazały się w /etc/resolv.conf
po uruchomieniu sudo resolvconf -u
.
FYI, nie chcę zmieniać DNS na podstawie pojedynczego połączenia, chcę ustawić domyślne ustawienia DNS do użycia dla wszystkich połączeń, jeśli nie jest to inaczej określone.
UPDATE:
Sam odpowiedziałem na to pytanie: https://unix.stackexchange.com/a/163506/67024
Myślę, że to'najlepsze rozwiązanie, ponieważ:
- Działa.
- Wymaga najmniejszej ilości zmian i
- Nadal działa w połączeniu z dnsmasq's DNS cache, zamiast go omijać.
283
3
Wierzę, że jeśli chcesz nadpisać serwer nazw DNS, po prostu dodajesz linię podobną do tej w swoim pliku
base
podresolv.conf.d
.Przykład
Następnie umieść swoją listę serwerów nazw w taki sposób:
Na koniec zaktualizuj
resolvconf
:Jeśli spojrzysz na stronę man dla
resolvconf
, opisuje ona różne pliki pod/etc/resolvconf/resolv.conf.d/
.Nawet jeśli jest ostrzeżenie na górze pliku
head
:to ostrzeżenie jest tam tak, że kiedy te pliki są skonstruowane, ostrzeżenie ostatecznie znajdzie się w wynikowym pliku
resolv.conf
, do którego te pliki zostaną użyte. Więc równie dobrze mógłbyś dodać linienameserver
, które są opisane powyżej dla plikubase
, do plikuhead
.Referencje
Jestem również zainteresowany tym pytaniem i wypróbowałem rozwiązanie zaproponowane przez @sim.
Aby go przetestować, umieściłem
w
/etc/resolvconf/resolv.conf.d/base
iw
/etc/resolvconf/resolv.conf.d/head
.Następnie zrestartowałem sieć za pomocą
W rezultacie
/etc/resolv.conf
wygląda jaka
nm-tool
stwierdza, że dnsserver sąktóre są dostarczane przez mój router. Z drugiej strony wykopanie adresu mówi, że
Jeśli mam rację, to z tego wszystkiego wnioskuję, że
W sumie to działa, ale nie sądzę, że jest to zamierzony rezultat, o który prosiłem. Bardziej zbliżone rozwiązanie, jak sądzę, jest następujące. Edit
następnie dodaj
Rezultat jest następujący: resolv.conf zawiera tylko 127.0.0.1, co oznacza, że dnsmasq cache jest wywoływany, a nm-tool mówi
co oznacza, że jeśli szukanej nazwy nie ma w cache, to jest ona odpytywana na 8.8.8.8, a nie na serwerze podanym przez dhcp.
Inną (być może lepszą) opcją jest użycie "prepend" zamiast "supersede": w ten sposób, jeśli nazwa nie jest rozwiązana przez 8.8.8.8, to żądanie spada z powrotem na inny serwer. W rzeczywistości, nm-tool mówi
Spróbuj dodać
dns-nameservers XXX.XXX.XXX.X
do swojego pliku/etc/networking/interfaces
.