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ż:
Wierzę, że jeśli chcesz nadpisać serwer nazw DNS, po prostu dodajesz linię podobną do tej w swoim pliku base
pod resolv.conf.d
.
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Następnie umieść swoją listę serwerów nazw w taki sposób:
nameserver 8.8.8.8
nameserver 8.8.4.4
Na koniec zaktualizuj resolvconf
:
$ sudo resolvconf -u
Jeśli spojrzysz na stronę man dla resolvconf
, opisuje ona różne pliki pod /etc/resolvconf/resolv.conf.d/
.
/etc/resolvconf/resolv.conf.d/base
File containing basic resolver information. The lines in this
file are included in the resolver configuration file even when no
interfaces are configured.
/etc/resolvconf/resolv.conf.d/head
File to be prepended to the dynamically generated resolver
configuration file. Normally this is just a comment line.
/etc/resolvconf/resolv.conf.d/tail
File to be appended to the dynamically generated resolver
configuration file. To append nothing, make this an empty
file. This file is a good place to put a resolver options line
if one is needed, e.g.,
options inet6
Nawet jeśli jest ostrzeżenie na górze pliku head
:
$ cat /etc/resolvconf/resolv.conf.d/head
# 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
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ć linie nameserver
, które są opisane powyżej dla pliku base
, do pliku head
.
Jestem również zainteresowany tym pytaniem i wypróbowałem rozwiązanie zaproponowane przez @sim.
Aby go przetestować, umieściłem
nameserver 8.8.8.8
w /etc/resolvconf/resolv.conf.d/base
i
nameserver 8.8.4.4
w /etc/resolvconf/resolv.conf.d/head
.
Następnie zrestartowałem sieć za pomocą
sudo service network-manager restart
W rezultacie /etc/resolv.conf
wygląda jak
# 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 8.8.4.4
nameserver 127.0.1.1
a nm-tool
stwierdza, że dnsserver są
DNS: 208.67.222.222
DNS: 208.67.220.220
które są dostarczane przez mój router. Z drugiej strony wykopanie adresu mówi, że
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
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
sudo vim /etc/dhcp/dhclient.conf
następnie dodaj
supersede domain-name-servers 8.8.8.8;
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
DNS: 8.8.8.8
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
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220