Jak ustawić mój DNS podczas zastępowania resolv.conf?


279

Większość informacji, które widzę online, mówi do edycji /etc/resolv.conf, ale wszelkie zmiany, które tam wprowadzam, są po prostu zastępowane.

$ 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 dnsmasqmówią do edycji /etc/resolv.conf. Próbowałem umieścić niestandardowe serwery nazw /etc/resolv.conf.d/base, ale zmiany nie pojawiły się /etc/resolv.confpo uruchomieniu sudo resolvconf -u.

Do Twojej wiadomości, nie chcę zmieniać DNS dla poszczególnych połączeń, chcę ustawić domyślne ustawienia DNS, które będą używane dla wszystkich połączeń, jeśli nie określono inaczej.

AKTUALIZACJA:

Sam odpowiedziałem na to pytanie: https://unix.stackexchange.com/a/163506/67024

Myślę, że to najlepsze rozwiązanie, ponieważ:

  1. To działa.
  2. Wymaga najmniejszej ilości zmian i
  3. Nadal działa w połączeniu z pamięcią podręczną DNS dnsmasq, a nie pomija ją.

Lepiej odpowiedz na pytanie zamiast zaktualizować pytanie. Myślę, że łatwiej będzie znaleźć właściwą odpowiedź na swój problem
Philippe Gachoud,

Wydaje się, że większość odpowiedzi dotyczy Ubuntu i jest zbyt skomplikowana. Uniwersalne rozwiązanie dla użytkowników NetworkManager jest po prostu dodać dns=nonew /etc/NetworkManager/NetworkManager.conf(szczegóły w mojej odpowiedzi poniżej).
Skippy le Grand Gourou

Myślę, że ta odpowiedź wyjaśnia, dlaczego plik resol.conf jest zastępowany, więc wiesz, jak go skonfigurować.
foman

Odpowiedzi:


250

Uważam, że jeśli chcesz zastąpić serwer nazw DNS, po prostu dodajesz wiersz podobny do tego w swoim basepliku pod resolv.conf.d.

Przykład

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Następnie umieść listę serwerów nazw w taki sposób:

nameserver 8.8.8.8
nameserver 8.8.4.4

Wreszcie aktualizacja resolvconf:

$ sudo resolvconf -u

Jeśli spojrzysz na stronę man, resolvconfto opisuje ona różne pliki /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

Mimo że u góry headpliku znajduje się ostrzeżenie :

$ 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 po to, aby podczas konstruowania tych plików ostrzeżenie ostatecznie działało w resolv.confpliku wynikowym , który zostaną wykorzystane do utworzenia tych plików. Więc równie łatwo można dodać nameserverdo basepliku wiersze opisane powyżej dla headpliku.

Bibliografia


21
Ubuntu 14.04 - kiedy włączyłem serwery nazw basei uruchomiłem resolvconf -u, serwery nazw nie zostały umieszczone w resolv.conf - kiedy head
włączyłem

7
Ubuntu 14.04 - Musiałem także skomentować konfigurację ustawioną w/run/resolvconf/interface/NetworkManager
bitsoflogic,

3
wpisz nslookup google.comi pierwszy adres IP na liście powinien być twoim nowym
serwerem

6
Ubuntu 16.04: Działa tylko wtedy, gdy jest dołączony /etc/resolvconf/resolv.conf.d/head, a nie z base. Potwierdzony z nslookup google.com.
Acumenus

3
Początkowo musisz mieć resolvconfzainstalowany. Możesz to zrobić, robiąc to sudo apt-get install resolvconf.
MAChitgarha,

79

Interesuje mnie również to pytanie i wypróbowałem rozwiązanie zaproponowane @sim.

Testuję to

nameserver 8.8.8.8

w /etc/resolvconf/resolv.conf.d/basei

nameserver 8.8.4.4

w /etc/resolvconf/resolv.conf.d/head

Następnie ponownie uruchomiłem sieć za pomocą

sudo service network-manager restart

W rezultacie /etc/resolv.confwygląda to tak

# 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

i nm-toolstwierdza, że ​​serwer dnsserver jest

DNS:             208.67.222.222
DNS:             208.67.220.220

które są dostarczane przez mój router. Z drugiej strony, kopanie adresu mówi o tym

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Jeśli mam rację, z tego wszystkiego wyciągam wnioski

  1. resolvonf odczytuje tylko część „head”: część „base” jest w jakiś sposób kontrolowana przez dnsmasq
  2. serwer dnsserver jest faktycznie zmuszony do wersji 8.8.4.4 niezależnie od serwera dostarczonego przez dhcp, ALE tracisz buforowanie dostarczone przez dnsmasq, ponieważ żądanie jest zawsze wysyłane do wersji 8.8.4.4
  3. dnsmasq nadal używa TYLKO serwera dnsserver dostarczonego przez dhcp.

W sumie to działa, ale nie sądzę, że jest to zamierzony zamierzony wynik. Myślę, że bliższe rozwiązanie jest następujące. Edytować

sudo vim /etc/dhcp/dhclient.conf

następnie dodaj

supersede domain-name-servers 8.8.8.8;

Wynik jest następujący: resolv.conf zawiera tylko 127.0.0.1, co oznacza, że ​​wywoływana jest pamięć podręczna dnsmasq i nm-tool mówi

DNS:             8.8.8.8

co oznacza, że ​​jeśli szukana nazwa nie znajduje się w pamięci podręcznej, jest o nią proszona w 8.8.8.8, a nie na serwerze dostarczonym przez dhcp.

Inną (być może lepszą) opcją jest użycie „prepend” zamiast „supersede”: w ten sposób, jeśli nazwa nie zostanie rozwiązana w wersji 8.8.8.8, wówczas żądanie powróci na drugi serwer. W rzeczywistości nm-tool mówi

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

4
O wiele lepsza odpowiedź niż włamanie się do konfiguracji NS. Zwłaszcza opcja dodania serwera przed serwerami dostarczonymi przez dhcp. Wydaje się, że jest to idealna równowaga między rozwiązaniem problemu, bez tworzenia nowych!
Steve Midgley,

2
Tyle jasności i myśli w odpowiedzi, a nie tylko polecenie.
igaurav

3
Cześć człowieku! „zastępują serwery nazw domen 8.8.8.8;” jest odpowiedzią
Jack

Warto zauważyć, że narzędzie nm zostało zastąpione przez nmcli
Fiddy Bux

59

Dowiedziałem się, że możesz zmienić używane serwery nazw, dnsmasqdodając następujące wiersze do /etc/dnsmasq.conf:

server=8.8.8.8
server=8.8.4.4

Nie miałem jednak /etc/dnsmasq.confpliku, ponieważ jest on instalowany przez pakiet dnsmasq, ale Ubuntu jest dostarczany tylko z dnsmasq-base. Pobiegłem sudo apt-get install dnsmasq, potem zredagowałem /etc/dnsmasq.conf, potem sudo service dnsmasq restarti sudo service network-manager restart.

Pobiegłem sudo tail -n 200 /var/log/syslogsprawdzić mój syslog i sprawdzić, czy dnsmasqkorzystałem z serwerów nazw, które określiłem:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53

4
Jest powód, dla którego jest to najlepsza odpowiedź ... ponieważ tak jest! Dziękuję bardzo! Dodałbym, że po wszystkich krokach, o których wspomniałeś, konieczne może być ponowne uruchomienie sieci, aby wszystko działało sprawnie (to było dla mnie .... sudo service network-manager restart)
Clint Eastwood

3
Na Ubuntu 14.04 Server około połowa czasu zimnego rozruchu nie spowodowałaby połączenia z Internetem za pomocą adresu URL, ale działałby adres IP. Spędziłem dużo czasu bezskutecznie próbując to naprawić, poddałem się przez miesiące, a potem znalazłem to rozwiązanie. Ja też uważam, że to najlepsza odpowiedź.
Nate Lockwood,

Intrygujące jest to, że należy zainstalować dnsmasq. To rzeczywiście naprawiło mój DNS w normalnej sytuacji, ale całkowicie zepsuło moją konfigurację VPN (połączenie VPN teraz nie działa ...)
PlasmaBinturong

22

W przypadku statycznych adresów IP Przewodnik Ubuntu Server mówi o zmianie pliku / etc / network / interfaces, które mogą wyglądać następująco:

iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10

Zmieniasz adresy IP 192.168.3.45 192.168.8.10 na te, które chcesz, np. 8.8.8.8

https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Strona 38


To z pewnością wygląda dobrze, ale jak mogę teraz zregenerować resolv.conf ?!
Joel Berger

3
@JoelBerger ifdown eth0; ifup eth0.
Dzamo Norton,

17
  1. Wyszukaj „Połączenie sieciowe”
  2. Otwórz to

                        wprowadź opis zdjęcia tutaj

  3. Następnie wybierz WiFi lub Ethernet lub cokolwiek, którego używasz, i kliknij edytuj. Dostaniesz to:

                  wprowadź opis zdjęcia tutaj

  4. Wybierz ipv4 w zakładkach

  5. Wybierz adresy tylko metodą
  6. Wpisz poniżej swoją nazwę DNS i zapisz ją

  7. Jesteś skończony


Musiałbym to jednak zrobić dla każdego połączenia sieciowego. W przeszłości mogłeś zmienić domyślne ustawienia dla wszystkich połączeń, i właśnie to chciałem tutaj zrobić.
Seán Hayes

2
Kocham Cię! to ustawienie interfejsu użytkownika uratowało mi tyłek przed sudo i vim mess: '(
Łukasza

Używanie mennicy (na Ubuntu 14.04) - ale widziałem to także w KDE - z jakiegoś powodu ustawienie serwerów DNS w Menedżerze sieci GUI nie wpływa na ustawienia DNS używane w terminalu
HorusKol

2
Najlepsza odpowiedź imho. Na Ubuntu 14.04 mam 2 zewnętrzne adresy IP dla DNS, które nie rozpoznają klientów w mojej sieci domowej. Pozostawienie metody „Automatyczny (DHCP)” dla połączenia przewodowego dodało adres IP mojego routera do istniejącej listy. W przypadku połączenia bezprzewodowego przez wlan0 to nie działało, ale metoda „Tylko adresy automatyczne (DHCP)” zastąpiła adresy zewnętrzne adresem IP mojego routera i wtedy też zadziałało. Zastosuj zmiany za pomocą sudo service network-manager restart, poczekaj chwilę, sprawdź za pomocą nmcli d list | grep 'DNS\|IP-IFACE'. I pinguj swojego wewnętrznego klienta według nazwy.
RolfBly

13

Szybkie i nieprzyzwoite obejście, o którym jeszcze nie wspomniano, polega na ustawieniu niezmiennej flagi na resolv.confpliku zaraz po jego edycji.

$ sudo nano /etc/resolv.conf

Dodaj to i zapisz:

nameserver 8.8.8.8

Następnie:

$ sudo chattr +i /etc/resolv.conf

To powinno wystarczyć. Robię to również w moim systemie.


18
Ilekroć twoje rozwiązanie obejmuje chattr, tak naprawdę nie jest to rozwiązanie.
Jeff Jirsa,

1
to właśnie robię w systemach, w których z jakiegoś powodu muszę tymczasowo zmienić DNS i nie chcę modyfikować konfiguracji. Jako trwałe rozwiązanie nie poleciłbym tego.
hochl

3
„szybkie i brudne obejście”
YouniS Bensalah

10
To nie jest brudne. Programy niszczące konfigurację lokalną, ponieważ uważają, że lepiej wiedzą, są brudne.

11

Konfiguracja DNS pod Linuksem

Korzystanie z DNS w systemie Linux odbywa się za pomocą zestawu procedur w bibliotece C, które zapewniają dostęp do internetowego systemu nazw domen (DNS). Plik konfiguracyjny resolvera ( resolv.conf) zawiera informacje odczytywane przez procedury resolvera przy pierwszym wywołaniu przez proces. W skrócie, każdy proces żądający DNS odczyta /etc/resolv.confbibliotekę. Na wierzchu jest NSS i jest skonfigurowany przez /etc/nsswitch.conf.

Linux DNS config znajduje się w pliku, /etc/resolv.conf ALE istnieje wiele programów / usług, które chcą automatycznie zarządzać i obsługiwać plik konfiguracyjny DNS na /etc/resolv.conf. W niektórych sytuacjach możesz samodzielnie zarządzać tym plikiem. Każdy program / usługa zarządzająca DNS ma własne pliki konfiguracyjne, takie jak /etc/dnsmasq.conf(dla usługi dnsmasq) i dołącza konfigurację DNS przy zmianie połączenia i / lub w innych przypadkach ... szybkim rozwiązaniem jest zablokowanie pliku konfiguracyjnego DNS, chattr +i /etc/resolv.confale nie jest to zalecane w niektórych przypadkach lepszym rozwiązaniem jest prawidłowe skonfigurowanie wszystkich programów / usług za pomocą DNS, takich jak (dnsmasq / network-manager / resolvconf / etc.)

Odzyskiwanie kontroli nad systemem DNS

Oto wyczerpująca lista ustawień, aby odzyskać kontrolę nad plikiem resolv.conf i uniknąć nadpisywania go ( jak wyłączyć / skonfigurować DNS z innej lokalizacji niż resolv.conf ). Uwaga: resolvconf jest niezależnym programem od resolv.conf, również w zależności od systemu / konfiguracji możesz nie mieć jednego lub wielu programów wymienionych tutaj.

1. Resolvconf:

Pliki konfiguracyjne

cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4

Zaktualizuj konfigurację

sudo resolvconf -u

Wyłącz resolvconf

systemctl disable --now resolvconf.service 

2. Usługa Dnsmasq:

Pliki konfiguracyjne

cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4

Zaktualizuj konfigurację

sudo systemctl restart dnsmasq.service

3. Menedżer sieci:

Pliki konfiguracyjne

/etc/NetworkManager/*

Wyłącz DNS

$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none

Włącz DNS

$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default

[global-dns]
searches=example.com

[global-dns-domain-*]

Skorzystaj z usługi rozwiązanej

$ cat /usr/lib/NetworkManager/conf.d/resolved.conf 
[main]
dns=systemd-resolved

Użyj resolvconf

$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf 
[main]
rc-manager=resolvconf

Zaktualizuj konfigurację

systemctl restart NetworkManager.service

4. Interfejsy sieciowe:

Pliki konfiguracyjne

$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Zaktualizuj Config

reboot

5. Klient DHCP:

Pliki konfiguracyjne

$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

Zaktualizuj Config

reboot

6. Usługa Rdnssd:

Wyłącz rdnssd

systemctl disable --now rdnssd.service

7. Usługa rozwiązana:

Wyłącz rozwiązane

systemctl disable --now systemd-resolved.service

8. Netconfig:

Pliki konfiguracyjne

/etc/sysconfig/network/config

Wyłącz netconfig

cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""

Zaktualizuj Config

reboot

Ustawianie serwera DNS

Przykład /etc/resolv.confkonfiguracji

#Cloudflare
nameserver 1.0.0.1

#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4

#Cloudflare 
#nameserver 1.1.1.1

#Classic Config
#nameserver 192.168.1.1
#search lan

10

Mój problem był nieco inny, chciałem zastąpić serwery DNS routerów. Znalazłem ten link z Ubuntu: https://wiki.ubuntu.com/OverrideDNSServers

Mówi: Jeśli chcesz zastąpić ustawienia DNS dostarczone przez serwer DHCP, otwórz

/etc/dhcp3/dhclient.conf

i dodaj następujący wiersz:

supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

zastępowanie <dns_ip_address*>przedmiotów odpowiednią treścią.


Oto odpowiedź, która rozwiązała mój problem.
Michael

Doskonały. Wystarczy dodać, że powinieneś ponownie uruchomić sieć usług sudo, aby włączyć zmiany.
Nick Triantafillou,

Co jeśli nie mamy tego dhcp3folderu? Mam Xubuntu 17.10, czy zmieniło się to /etc/dhcppo prostu?
PlasmaBinturong

4

Być może coś mi brakuje, ale zgodnie z instrukcjami konfiguracji na https://help.ubuntu.com/14.04/serverguide/network-configuration.html wystarczy zaktualizować następujące. Nie uruchamiam proxy - tylko maszyna za firewallem i lokalnym DNS (przykład pokazuje Googles, ale ustaw na cokolwiek potrzebujesz).

nano /etc/network/interfaces

Domyślna:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
auto eth0
iface eth0 inet dhcp

AKTUALIZACJA:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x

#nameservers
# you may not need dns-search
# I use it because I'm running this on a Windows network 
# so its useful to have
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Uruchom ponownie, jeśli możesz.


3

Spróbuj dodać dns-nameservers XXX.XXX.XXX.Xdo swojego /etc/networking/interfacespliku.


Proszę zostawić komentarz, gdy głosujesz w dół. Jest to metoda podana w instrukcji , strona 38.
Zook

1
Nie wspomniany podręcznik pokazuje wszystkie adresy IP w jednej linii. Ta odpowiedź wydaje się sugerować dodanie linii. I dlaczego ostatni numer ma tylko jeden X szerokości? Myślę, że głównie było to bardzo nieformalne i niepewne krótkie pisanie w stylu czatu, które spotkało się z negatywnym przyjęciem @Zook.
Cees Timmerman

2

Niektóre odpowiedzi tutaj działają dobrze. Jednak nie był zadowolony z faktu, że trzeba ręcznie przejść plików konfiguracyjnych żeby ustawić „właściwego” DNS, które ja już otrzymuję nad DHCPz NetworkManager.

Zrobiłem trochę kopania i zauważyłem, że /etc/resolv.confplik jest tak naprawdę linkiem i wskazuje na /run/systemd/resolve/stub-resolv.conf. Po eksperymentach okazuje się, że /run/systemd/resolve/katalog zawiera inny plik o nazwie, resolv.confktóry już zawiera ustawienia, które otrzymałeś DHCP. Zamiast ręcznie nadpisywać / tworzyć pliki konfiguracyjne /etc/, możesz po prostu ponownie połączyć, /etc/resolv.confaby wskazać /run/systemd/resolve/resolv.confplik, i wszystko powinno być w porządku:

# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Powinieneś teraz móc edytować ustawienia nawet z Network Managera w Gnome. :)

Nie jestem pewien, czy to zadziała na starszych Ubuntu, ale działa na Ubuntu 17.10.


kiedy uruchamiamy systemd-resolve --flush-cacheoryginalny połączony plik, najwyraźniej zostaje odcięty, powyższa odpowiedź przywraca oryginalną funkcjonalność
hafizhanindito

1

EDYCJA MAJ 6,2016

Napisałem skrypt, aby zaktualizować wszystkie ustawienia połączeń systemowych w /etc/Network-Manager/system-connections/katalogu. GUI, którego używasz do edycji poszczególnych połączeń, edytuje określony plik w tym katalogu. Skrypt aktualizuje wszystkie pliki - po prostu wyszukuje tych, którzy nie mają dns ​​ustawionego z grep i ustawia go z awk.

Ponieważ dostęp do tych plików wymaga sudodostępu, uruchom ten skrypt za pomocą, sudoa następnie - uruchom ponownie menedżera sieci

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done

Skrypt w akcji:

wprowadź opis zdjęcia tutaj

ORYGINALNY POST Niektórzy użytkownicy wskazali, że DNS jest w jakiś sposób kontrolowany dnsmasq. To prawda. Mam do czynienia z nieco mniejszy problem, gdzie bez względu na to jak zmieniłem headlub bodyw /etc/resolvconf/resolv.conf.dmój komputer nie może aktualnie dostęp internowany przez nazwę domeny - tylko pracy z adresami IP.

To, co zrobiłem, to edycja /etc/NetworkManager/NetworkManager.confpliku. Początkowo, to powiedział, dns=dnsmasqale zmieniłem go na adres: dns=208.67.222.222. Chociaż w ten sposób nm-toolnie wspomina się o 208.67.222.222, nadal mogłem używać nazw domen, nie tylko adresów IP.

Oto NetworkManager.confjak teraz wygląda mój plik:

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222

[ifupdown]
managed=false

UWAGA: Więcej informacji na temat mojego problemu i tego rozwiązania można znaleźć w moim poście na askubuntu.com .

AKTUALIZACJA # 1

Po dzisiejszym powrocie do domu z uniwersytetu odkryłem, że nie mogę połączyć się z moim domowym WiFi. Przeczytałem trochę dalej man NetworkManager.confi okazuje się, że dns=in [main]jest faktycznie linią dla wtyczek, więc linia dns=dnsmasqfaktycznie dodaje wtyczkę dnsmasq do NetworkManagera.

Moje rozwiązanie nadal działało, ale nie tak, jak się spodziewałem. Oto fragment strony man:

dns=plugin1,plugin2, ... List DNS plugin names separated by ','. 

Wtyczki DNS służą do zapewnienia lokalnej funkcji buforowania nazw serwerów (co przyspiesza zapytania DNS) oraz do przesyłania danych DNS do aplikacji, które z nich korzystają.

Tak więc, ustawiając, dns=208.67.222.222mogłem zasadniczo uniemożliwić NetworkManagerowi korzystanie z tej wtyczki, która w innym przypadku używałaby lokalnego serwera DNS (który najwyraźniej nie działa).


1

Istnieją dwie metody

Metoda 1

Serwer DNS, którego chcesz użyć, można zmienić, aktualizując headplik w obszarze podresolv.conf.d

$ echo 'nameserver 1.1.1.1' | sudo tee /etc/resolvconf/resolv.conf.d/base

a następnie biegnij

$ sudo resolvconf -u

Powyższe wygeneruje ogólny resolv.confplik w /etckatalogu. Wszystkie twoje prośby dotyczące rozwiązania zostaną wysłane na wyżej wymieniony serwer nazw. Rozwiązany.

Są to jednak implikacje. W przypadku resolvconfbezpośredniego zapytania 1.1.1.1o rozdzielczość adresów nie ma mocy buforowania dostarczanej przez dnsmasq. Każda prośba trafi do1.1.1.1

Metoda 2

Jeśli nie chcesz, aby stało wyżej i wykorzystanie dnsmasq rezolucji DNS odnoszą odpowiedź. Odpowiedź jest po prostu opisana tutaj.

Dodaj następującą zawartość do /etc/dnsmasq.confpliku.

serwer = 1.1.1.1

Następnie uruchom ponownie usługę dnsmasq

$ sudo systemctl restart dnsmasq.service

Wszystko będzie dobrze. Rozwiązany.


0

Prosty sposób na zmianę DNS:

$ sudo nano /etc/network/interfaces

Jeśli pojawią się problemy, zainstaluj nano:

$ sudo apt-get install nano -y

następnie ..

  1. Znajdź to: dns-nameservers
  2. jeśli nie możesz go znaleźć, wpisz go tam
  3. Zrobiłem mój tak: dns-nameservers 199.85.126.10 199.85.127.10

Mam nadzieję, że to najlepszy sposób, tak przy okazji, zrobiłem to na VPS.


0

na root:

  1. wypowiedzieć się dns=dnsmasqna/etc/NetworkManager/NetworkManager.conf
  2. dodaj supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;na końcu/etc/dhcp/dhclient.conf
  3. sudo service network-manager restart

Poniższe zmiany powodują zmiany przedstawione powyżej:

$ sudo sed -i 's/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/' \
   /etc/NetworkManager/NetworkManager.conf

$ echo 'supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;' | \
   sudo tee --append /etc/dhcp/dhclient.conf

$ sudo service network-manager restart

Poczekaj 7/10 sekund, aby zakończyć proces restartu, sprawdź swoją konfigurację za pomocą „nslookup nist.gov”. Działa dobrze na Ubuntu LTS 14.04.


0

Uwaga: Podobnie jak większość odpowiedzi, ta zakłada użycie NetworkManager. Jednak w przeciwieństwie do większości innych odpowiedzi, to nie zakłada wykorzystanie resolvconf, dhclientczy cokolwiek innego - strzeżcie się, że mogą one przejąć choć (patrz aktualizacji).

Biorąc pod uwagę liczbę wyświetleń tego pytania, to niewiarygodne, że to 8-znakowe rozwiązanie nie zostało jeszcze opublikowane: zgodnie z man NetworkManager.conf,

dns: […] none: NetworkManager nie zmodyfikuje resolv.conf. Oznacza to, że rc-manager jest niezarządzany

Dlatego dodaj

dns=none

w [main]sekcji, /etc/NetworkManager/NetworkManager.confa następnie uruchom ponownie NetworkManager i nie będzie /etc/resolv.confjuż modyfikowany .

Zauważ, że ustawienie rc-manager=unmanagedpowinno być równoważne dns=none, a ustawienie rc-manager=symlinkto /etc/resolv.confjako łącze symboliczne może być lepszym pomysłem (czytaj wyżej wspomnianą stronę podręcznika).

Aktualizacja :

Gdy NetworkManager przestał nadpisywać /etc/resolv.conf, pomyślałem, że dhcpcdjuż zastępuje /etc/resolv.confgo bezużytecznym pustym plikiem podczas uruchamiania. Strona dhcpcd.confpomocy pomogła, wystarczy dodać

nohook resolv.conf

w twoim dhcpcd.conf(moje jest w /etc/dhcpcd.conf).


0

Na moim serwerze Linux Centos7 najlepszym sposobem na zmianę tej opcji było użycie

nmtui

polecenie, które nie jest sugerowane w żadnej odpowiedzi tutaj. W tym narzędziu możesz edytować serwery nazw, a kiedy zmienisz opcje menedżera sieci z tego narzędzia, zostaną one automatycznie zastosowane /etc/resolv.confpo ponownym uruchomieniu. Tutaj możesz znaleźć więcej informacji .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.