Jak dodać serwer DNS przez resolv.conf?

191

Czy /etc/resolv.conf jest bezużyteczny w Ubuntu 12.04 LTS (Precise Pangolin)?

Widzę, że informacje o serwerze DNS są teraz przechowywane w NetworkManager . Narzędzie wiersza poleceń nmcli może wyświetlić listę dla ciebie.

Jeśli chcę dodać jeszcze jeden serwer DNS , doda go do /etc/resolv.conf , używając resolvconf pakiet pomocy?

    
zadawane PnotNP 03.05.2012, 02:00
źródło

18 odpowiedzi

130

Jeśli /etc/resolv.conf zawiera nameserver 127.0.0.1 , dodanie wpisów do /etc/resolvconf/resolv.conf.d/tail nie przyniesie nic pożytecznego.

Jeśli korzystasz z Menedżera sieci, powinieneś zamiast tego statycznie dodawać adresy serwerów nazw za pomocą wskaźnika sieci : Edytuj połączenia ... | Edytuj ... | Ustawienia IPv4 | Dodatkowe serwery DNS .

Jeśli naprawdę chcesz dodać więcej wpisów do /etc/resolv.conf , utwórz /etc/resolvconf/resolv.conf.d/tail i dodaj je tam.

Podobnie jak w przypadku każdego wydania Ubuntu, zalecane jest przeczytanie informacji o wydaniu Ubuntu, dostępnych tutaj:

Sekcja Desktop and Common Infrastructure zawiera odsyłacz do

  • link dotyczący zmian w infrastrukturze DNS w 12.04.
odpowiedział stgraber 03.05.2012, 02:21
źródło
127

Znalazłem inne podejście tutaj polega na dodaniu wiersza podobnego do poniższego do /etc/dhcp/dhclient.conf :

prepend domain-name-servers x.x.x.x, y.y.y.y;

Podobnie znalazłem trzecie podejście tutaj wymaga dodania linii do /etc/network/interfaces :

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

Aktualizacja: Oto oficjalna dokumentacja dla trzeciego podejścia.

    
odpowiedział Randall Cook 09.05.2012, 00:48
źródło
84

Wygląda na to, że mówisz o pakiecie resolvconf.

Zainstaluj pakiet resolvconf .

Uruchom

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

Wierzchołek pliku jest przerażającym ostrzeżeniem. Plik /etc/resolv.conf jest autogenerowany z zawartości tego pliku; pojawia się ostrzeżenie, które zostanie umieszczone w pliku /etc/resolv.conf podczas generowania pliku /etc/resolv.conf. Na koniec pliku dodaj

nameserver <ip_of_nameserver>

Naciśnij Ctrl x i odpowiedz "tak", aby zapisać plik. Aby zakończyć, zregeneruj plik /etc/resolv.conf, aby zmiany zostały zastosowane już teraz:

sudo resolvconf -u

Następnie sprawdź zawartość pliku /etc/resolv.conf, aby zobaczyć, że dodana linia już tam jest. Co więcej, nadal będzie przy następnym uruchomieniu komputera lub uruchomieniu usługi sieciowej, w zależności od tego, co nastąpi wcześniej.

    
odpowiedział Azendale 01.07.2011, 01:41
źródło
29

Poniżej pokażę najlepszy sposób, jaki znalazłem od czasu uruchomienia wersji Ubuntu Server i używania programu ifup zamiast NetworkManager.

Właściwie dla mnie to ułatwiło :) umieszczając je wszystkie w pliku / etc / network / interfaces. Te same konfiguracje, które napisałbyś do resolv.conf, mogą teraz znajdować się w tym samym pliku, co konfiguracje kart sieciowych, jak w poniższym przykładzie:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

Mam nadzieję, że to pomoże i ułatwi, jak to dla mnie, teraz możemy tworzyć statyczne adresy IP i dodawać w serwerach nazw i domenach dns wszystko w jednym pliku:)

    
odpowiedział Joseph Mituzas 24.05.2012, 00:55
źródło
16

Mine uruchamia Ubuntu Server 12.04. Wprowadziłem następujące zmiany i zrestartowałem serwer (zazwyczaj można tego dokonać, obniżając jedynie interfejs sieciowy, czyli ifdown eth0 lub ifup eth0 ).

W pliku /etc/resolvconf/resolv.conf.d/base dodałem następujące wpisy:

nameserver 8.8.8.8
nameserver 8.8.4.4

Mam nadzieję, że powyższe pomoże!

    
odpowiedział Don Chai 19.03.2013, 06:56
źródło
11

Możesz użyć NetworkManagera, jak podano w odpowiedzi Franka, ale jeśli wolisz ręcznie edytować /etc/resolv.conf , możesz to zrobić, usuwając go (w rzeczywistości jest to dowiązanie symboliczne), a następnie tworząc nowy zwykły plik z żądaną treścią. Narzędzie resolvconf zapisuje tylko do pliku /run/resolvconf/resolv.conf .

    
odpowiedział Jase 04.05.2012, 16:38
źródło
8

Uwaga: Ta odpowiedź dotyczyła raczej odmiennej wersji pytania przed scaleniem, skupiając się tylko na oczekiwaniu na pożądany serwer nazw.

Działa to przed 12.04:

Edytuj /etc/dhcp3/dhclient.conf i dodaj:
prepend domain-name-servers 127.0.0.1;

(W rzeczywistości ta linia już jest obecna, wszystko, co musisz zrobić, to ją skomentować.)

    
odpowiedział belacqua 06.03.2011, 21:26
źródło
6

resolvconf jest bezużyteczne. Jestem na serwerze Linux i mój adres IP jest statyczny, a mój DNS serwery są statyczne. Nie potrzebuję resolvconf lub Menedżer sieci .

Utrzymanie prostoty jest moją zasadą podczas pracy na serwerze. Im mniej złożoności, tym łatwiej będzie zarządzać / naprawiać, gdy coś się załamie.

Zrobiłem aptitude purge resolvconf i ręcznie upewniłem się, że /etc/resolv.conf nie jest dowiązaniem symbolicznym i właśnie utworzył statyczny plik. Na wszelki wypadek, gdy program próbuje zmienić plik, jako zabezpieczenie wprowadziłem chattr +i (niezmienny) na /etc/resolv.conf .

    
odpowiedział Mark 16.10.2012, 17:41
źródło
4

Większość z powyższych zakłada, że ​​masz nieskazitelny system, ale rzeczywistość jest często taka, że ​​instalujesz różnych klientów dhcp, wyłączasz menedżera sieci w pewnej poprzedniej wersji Ubuntu itp. Warto wiedzieć, co następuje. Używam dnsmasq przez jakiś czas, ale odinstalowałem go. Obecnie mój system ma następującą zawartość /etc/resolv.conf (co jest dowiązaniem symbolicznym do /run/resolvconf/resolv.conf w moim systemie):

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.0.1

Nie ma znaczenia, jak często uruchamiam sudo resolvconf -u lub sudo dpkg-reconfigure resolvconf , nie zaktualizowałem serwera nazw do tych, które ustawiłem w menedżerze sieci. Użyto informacji resolvconf z menedżera NetworkManager:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

Jednak okazuje się, że jeśli w tym katalogu znajduje się wiele plików, ten plik może w ogóle nie być używany. Winowajcą był plik, który nie został usunięty po odinstalowaniu dnsmasq:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

Po prostu usunięcie tego pliku (i uruchomienie sudo resolvconf -u ) rozwiązało problemy dns:

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 8.8.4.4
nameserver 8.8.8.8 

Mam nadzieję, że pomoże to innym osobom w debugowaniu (złożone interakcje między wszystkimi tymi różnymi narzędziami sieciowymi). Jeśli używasz resolvconf , upewnij się, że uruchomiłeś ls /run/resolvconf/interfaces , aby zobaczyć, co tam jest.

    
odpowiedział Anne van Rossum 27.12.2014, 13:54
źródło
2

Możesz edytować połączenie "AUTO ETH0" lub dowolną nazwę, której używasz do połączenia w NM. Możesz to zrobić, klikając prawym przyciskiem myszy NM i wybierając "Edytuj połączenia ...". Na karcie IPv4 możesz wybrać "Tylko adresy automatyczne (DHCP)" jako "Metoda", a NM umożliwi ręczne ustawienie adresu (adresów) serwera nazw, nawet jeśli adresy są dostarczane przez DHCP.

    
odpowiedział Frank Barcenas 04.05.2012, 16:29
źródło
2

Właśnie usunąłem link w /etc/resolv.conf i utworzyłem regularny plik z adresami serwerów nazw. Działa i nie widzę powodów, aby używać tej dość dziwnej konstrukcji, którą stworzyli programiści Ubuntu.

    
odpowiedział Ivan 19.03.2013, 07:34
źródło
1

Naprawiłem to, zmieniając kolejność źródeł. Przenieśliłem źródło dns przed mdns /etc/nsswitch.conf :

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Możesz zachować swoje ustawienia i nadal korzystać z lokalnego serwera buforowania w ten sposób.

    
odpowiedział Dan B 13.10.2012, 03:47
źródło
1

A może:

  

sudo dpkg-reconfigure resolvconf

Wcześniej użyj Menedżera sieci, aby zmienić adres DNS i zmienić metodę na

  

Tylko adresy automatyczne (DHPC)

Następnie uruchom powyższe polecenie i uruchom ponownie. To rozwiązanie dla mnie.

    
odpowiedział Adige72 03.02.2013, 21:40
źródło
1

Dodanie mojego bitu do już długiej listy, oto inny sposób (przetestowany 12.04):

Edytuj /run/resolvconf/interface/NetworkManager , aby pasował do twoich potrzeb. Oto przykład:

search foobar.com example.com
nameserver 192.168.1.1

Następnie, jak podano w przypadku większości innych przykładów, wykonaj sudo resolvconf -u . Teraz znajdziesz% resolv.conf wyglądających tak:

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

Nadal nie podoba mi się sposób, w jaki jest teraz zaimplementowany (wydaje się, że Ubuntu potrzebuje usługi dla każdego tworzonego foo) i na pewno wolałby zwykły resolv.conf . Ale takie podejście wydaje mi się jak dotąd najlepszym kompromisem. Dodany "localhost-NS" nie powinien za bardzo ranić.

    
odpowiedział Izzy 28.09.2013, 23:32
źródło
1
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp
    
odpowiedział Roy Rogers 04.07.2014, 12:33
źródło
1

Jest to bardzo popularne pytanie, ze zbiorem standardowych możliwych odpowiedzi, z których wszystkie, IMO, są dość zdziczałe. Po pierwsze zawsze miałem problemy z dostaniem się Ubuntu do ustawień DNS, które skonfigurowałem w Menedżerze sieci - w szczególności ustawienia statycznych serwerów DNS z "Tylko adresy automatyczne (DHCP)" - i dzisiaj w końcu zorientowałem się, co jest RZECZYWISTE NIEPRAWDZIWE. / p>

Problem dotyczy interakcji między resolvconf i NetworkManager. resolvconf ma ten plik o nazwie /etc/resolvconf/interface-order . Przynajmniej na moich systemach, NetworkManager nie jest tym plikiem (z wyjątkiem tego, że jest objęty * dziką kartą na końcu). Tak więc dzieje się tak, że najnowszy raport dhclient do resolvconf ma pierwszeństwo przed wszystkim, co ma do powiedzenia NetworkManager.

Tak więc, przynajmniej w moim przypadku, rzeczywistą odpowiedzią było dodanie

NetworkManager

na lub w górnej części /etc/resolvconf/interface-order .

(Tak, wiem, że wiele osób mówi po prostu "uninstall resolvconf", co wydaje mi się złym pomysłem, ale przynajmniej tak przebiegły i ksenofobiczny uważa resolvconf za istotną część systemu [ tzn. ubuntu-minimum zależy od niego], więc trudno byłoby utrzymać system w spójnym, zaktualizowanym stanie bez resolvconf.)

Na życzenie mogę podać więcej szczegółów na temat tego, jak to wymyśliłem. Krótko mówiąc, zamieniłem plik wykonywalny resolvconf na otaczający go wrapper, który zrzucał jego pliki, input, output i stderr do plików; i dodano set -x do skryptów aktualizacji resolvconf.

    
odpowiedział Steven Collins 31.05.2016, 20:32
źródło
0

Innym sposobem jest zdefiniowanie specyficznych dla dokerów serwerów dns w:

/etc/docker/daemon.json

Jeśli nie masz takiego pliku, po prostu go stwórz:

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

Źródło: link

Zobacz także: link

    
odpowiedział AndreyKo 04.01.2017, 13:27
źródło
0

Aby zmienić DNS, wykonaj instrukcje w: link

  1. Przejdź do sieci

  2. Wybierz połączenie, dla którego chcesz skonfigurować DNS.

  3. Aby zmienić ustawienia połączenia bezprzewodowego, wybierz kartę Bezprzewodowe, a następnie wybierz odpowiednią sieć bezprzewodową.

  4. Kliknij strzałkę (po prawej) iw oknie, które się pojawi, wybierz Ustawienia IPv4 lub kartę Ustawienia IPv6.

  5. Jeśli wybrana metoda to Automatycznie (DHCP), otwórz menu rozwijane i wybierz zamiast tego tylko adresy automatyczne (DHCP). Jeśli metoda jest ustawiona na coś innego, nie zmieniaj jej.

  6. W polu Serwery DNS wpisz adresy IP DNS oddzielone przecinkami

odpowiedział Ferroao 10.11.2017, 21:54
źródło

Przeczytaj inne pytania na temat tagów