Czy system Ubuntu 12.04 LTS (Precise Pangolin) jest /etc/resolv.conf
bezużyteczny ?
Widzę, że informacje o serwerze DNS są teraz przechowywane w NetworkManager . Narzędzie nmcli
wiersza polecenia może to dla ciebie wyświetlić.
Jeśli chcę dodać jeszcze jeden serwer DNS , czy dodam go /etc/resolv.conf
, korzystając z resolvconf
pomocy pakietu?
resolv.conf
PnotNP
źródło
źródło
nm-tool
, nienmcli
.Odpowiedzi:
Jeśli
/etc/resolv.conf
zawiera,nameserver 127.0.0.1
to dodawanie wpisów do/etc/resolvconf/resolv.conf.d/tail
tak naprawdę nic nie da.Jeśli używasz NetworkManagera, powinieneś zamiast tego statycznie dodać adresy serwerów nazw poprzez wskaźnik sieci : Edytuj połączenia ... | Edytuj ... | Ustawienia IPv4 | Dodatkowe serwery DNS .
Jeśli naprawdę chcesz dodać więcej wpisów
/etc/resolv.conf
, utwórz/etc/resolvconf/resolv.conf.d/tail
i dodaj je tam.Podobnie jak w przypadku każdej wersji Ubuntu, zaleca się przeczytać Informacje o wersji Ubuntu, dostępne tutaj:
Sekcje Pulpit i wspólna infrastruktura zawierają link do
źródło
/etc/resolvconf/resolv.conf.d/tail
pliku lub korzystania z Network Managera? Dzięki.dns-nameservers
do swojej sekcji eth0 w/etc/network/interfaces
./etc/resolvconf/update.d/libc
na serwerze Ubuntu 14.04.1:# Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no
# to allow additional nameserver addresses to be listed in
# resolv.conf after an initial loopback address 127.* or ::1.
(ustaw go/etc/default/resolvconf
, jako wiersz 23 i 24/etc/resolvconf/update.d/libc
pokazu.Znalazłem tutaj inne podejście , które polega na dodaniu linii podobnej do poniższej
/etc/dhcp/dhclient.conf
:Podobnie znalazłem tutaj trzecie podejście , które polega na dodaniu wierszy do
/etc/network/interfaces
:Aktualizacja: Oto oficjalna dokumentacja trzeciego podejścia.
źródło
third approach
jest to zdecydowanie najprostszy sposób, aby to zrobić./etc/resolvconf/resolv.conf.d/head
(po przezwyciężeniu wprowadzającego w błąd komentarza „NIE EDYTUJ” tam :))Wygląda na to, że mówisz o pakiecie resolvconf.
Zainstaluj pakiet resolvconf .
Biegać
Góra pliku jest przerażającym ostrzeżeniem. Plik /etc/resolv.conf jest generowany automatycznie z zawartości tego pliku; ostrzeżenie jest tam, więc zostanie umieszczone w /etc/resolv.conf po wygenerowaniu /etc/resolv.conf. Na końcu pliku dodaj
Naciśnij Ctrl xi odpowiedz „tak”, aby zapisać plik. Aby zakończyć, ponownie wygeneruj plik /etc/resolv.conf, aby zmiany zostały zastosowane w tej chwili:
Następnie sprawdź zawartość pliku /etc/resolv.conf, aby zobaczyć, że dodana linia już tam jest. Ponadto będzie nadal dostępny przy następnym uruchomieniu komputera lub ponownym uruchomieniu usługi sieciowej, w zależności od tego, co nastąpi wcześniej.
źródło
Poniżej pokażę najlepszy sposób, jaki znalazłem, odkąd uruchamiam edycję Ubuntu Server i używam ifup zamiast NetworkManager.
Właściwie dla mnie ułatwili to, umieszczając to wszystko w pliku / etc / network / interfaces. Te same konfiguracje, które napisałeś do resolv.conf, mogą teraz znajdować się w tym samym pliku, co konfiguracje karty sieciowej, jak w poniższym przykładzie:
Mam nadzieję, że to pomaga i ułatwia, tak jak dla mnie, teraz możemy tworzyć statyczne adresy IP i dodawać serwery nazw i domenę dns w jednym pliku :)
źródło
Mój działa Ubuntu Server 12.04. Dokonałem następujących zmian i zrestartowałem serwer (zazwyczaj można to zrobić tylko poprzez wyłączenie interfejsu sieciowego, czyli
ifdown eth0
lubifup eth0
).W pliku
/etc/resolvconf/resolv.conf.d/base
dodałem następujące wpisy:Mam nadzieję, że powyższe pomaga!
źródło
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 (tak naprawdę to dowiązanie symboliczne), a następnie tworząc nowy zwykły plik z pożądaną treścią.resolvconf
Narzędzie tylko kiedykolwiek zapisuje do pliku/run/resolvconf/resolv.conf
.źródło
Uwaga: Ta odpowiedź dotyczyła raczej odmiennej wersji pytania przed scaleniem, z naciskiem tylko na oczekiwanie na żą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 ten wiersz jest już obecny; wszystko, co musisz zrobić, to cofnąć komentarz.)
źródło
man dhclient.conf
aby uzyskać dostęp do strony podręcznika dhclient. (To nie jest odpowiedź na pytanie Azendale.)resolvconf
jest bezużyteczny. Jestem na serwerze Linux, a mój adres IP jest statyczny, a moje serwery DNS są statyczne. Nie potrzebujęresolvconf
ani NetworkManager .Prostota jest moją zasadą podczas pracy na serwerze. Im mniej złożoność, tym łatwiej będzie zarządzać / naprawiać, gdy coś się zepsuje.
Więc 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łem plik statyczny. Na wypadek, gdyby jakiś program próbował zmienić plik, zrobiłem tochattr +i
(niezmiennie)/etc/resolv.conf
jako środek ostrożności.źródło
Większość z powyższych zakłada, że masz nieskazitelny system, ale rzeczywistość często jest taka, że instalujesz różnych klientów dhcp, wyłączasz menedżera sieci w niektórych poprzednich wersjach Ubuntu itp. Warto wiedzieć: Używam dnsmasq od dłuższego czasu, ale go odinstalowałem. Obecnie mój system ma następującą zawartość
/etc/resolv.conf
(która jest dowiązaniem symbolicznym/run/resolvconf/resolv.conf
w moim systemie):To nie ma znaczenia, jak często biegnę
sudo resolvconf -u
lubsudo dpkg-reconfigure resolvconf
, że nie aktualizuje serwera nazw dla tych ustawić w NetworkManager. Informacje, które resolvconf wykorzystuje z NetworkManager, były obecne:Okazuje się jednak, że jeśli w tym katalogu znajduje się wiele plików, ten plik może w ogóle nie zostać użyty. Winowajcą był plik, który nie został usunięty podczas dezinstalacji programu dnsmasq:
Właśnie usunięcie tego pliku (i uruchomienie go
sudo resolvconf -u
później) rozwiązało moje problemy z DNS:Mam nadzieję, że pomoże to również innym w debugowaniu (złożone interakcje między tymi wszystkimi różnymi narzędziami sieciowymi). Jeśli używasz,
resolvconf
upewnij się, aby uruchomić,ls /run/resolvconf/interfaces
aby zobaczyć, co tam jest.źródło
/run/resolvconf/interface/
, ale mójNetworkManager
plik potrzebował trochę miłości. Twoja odpowiedź pomogła mi rozwiązać ten problem.Właśnie usunąłem link
/etc/resolv.conf
i utworzyłem standardowy 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.źródło
Możesz edytować połączenie „AUTO ETH0” lub dowolną nazwę używaną do łą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)”, ponieważ „Metoda”, a NM pozwoli ci ręcznie ustawić adresy serwerów nazw, nawet adresy są dostarczane przez DHCP.
źródło
Dodając mój kawałek do już długiej listy, oto inny sposób (testowany 12.04):
Edytuj
/run/resolvconf/interface/NetworkManager
według własnych potrzeb. Oto przykład:Następnie, jak stwierdzono w przypadku większości innych przykładów, wykonaj polecenie
sudo resolvconf -u
. Teraz znajdziesz swójresolv.conf
wyglądający tak:Nadal nie podoba mi się sposób, w jaki jest teraz implementowany (wydaje się, że Ubuntu potrzebuje usługi dla każdego foo, który robi) i na pewno wolałbym zwykły
resolv.conf
. Ale takie podejście wydaje mi się jak dotąd najlepszym kompromisem. Dodany „localhost-NS” nie powinien zbytnio boleć.źródło
Naprawiłem to, zmieniając kolejność źródeł. Przesunąłem
dns
źródło wcześniejmdns
w/etc/nsswitch.conf
:Możesz zachować ustawienia i nadal korzystać z lokalnego serwera buforowania w ten sposób.
źródło
Co powiesz na:
Wcześniej użyj Menedżera sieci, aby zmienić adres DNS i zmienić metodę na
Następnie uruchom powyższe polecenie i uruchom ponownie. To rozwiązało dla mnie rozwiązanie.
źródło
źródło
To bardzo popularne pytanie, z zestawem standardowych możliwych odpowiedzi, z których wszystkie, IMO, są dość hackerskie. Z jednej strony zawsze miałem problemy z zmuszeniem Ubuntu do przestrzegania ustawień DNS, które skonfigurowałem w NetworkManager - w szczególności ustawienia statycznych serwerów DNS z „tylko adresami automatycznymi (DHCP)” - i dzisiaj w końcu zorientowałem się, co jest faktycznie NIEPRAWIDŁOWE.
Problem dotyczy interakcji między resolvconf i NetworkManager. resolvconf ma ten plik o nazwie
/etc/resolvconf/interface-order
. Przynajmniej w moich systemach NetworkManager w ogóle nie znajduje się w tym pliku (poza tym, że na końcu jest objęty * symbolem wieloznacznym). 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, właściwą odpowiedzią było dodanie
na górze lub w pobliżu
/etc/resolvconf/interface-order
.(Tak, wiem, że wiele osób mówi mi „odinstaluj resolvconf”, co samo w sobie wydaje się złym pomysłem. Ale co więcej, przynajmniej przebiegle i ksenialnie uważają resolvconf za istotną część systemu [tj. Ubuntu -minimal zależy od tego], 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.( EDYCJA : najwyraźniej nie zrobiłem tego, kiedy o to proszono, przepraszam. W tym momencie nie pamiętam o wiele więcej szczegółów niż to, co powiem dalej :) W skrócie, zamieniłem plik wykonywalny resolvconf na otoczkę powłoki który zrzucił swoje argumenty, dane wejściowe, wyjściowe i stderr do plików; i dodał zestaw -x do skryptów aktualizacji resolvconf.( EDIT : I może . Powiedzieć, że to, co mam na myśli w pierwszej części jest to, że użyłem sudo przenieść rzeczywisty wykonywalny resolvconf, które można odnaleźć za pomocą którego polecenia lub polecenia typu Następnie należy utworzyć skrypt, który ostatecznie po prostu wykonuje przeniesiony resolvconf, ale także echa argumentów do jakiegoś pliku i używa przekierowania powłoki do wysyłania stdin, stdout i stderr do różnych innych plików. Nie pamiętam, gdzie znajdują się „skrypty aktualizacji resolvconf” i nie można ich obecnie łatwo sprawdzić. wielu maniaków Linuksa może zrozumieć, co mam na myśli; być może jakiś dobry samarytanin poda jeszcze więcej szczegółów w komentarzu.)
źródło
Innym sposobem jest zdefiniowanie specyficznych dla dokera serwerów DNS w:
Jeśli nie masz takiego pliku, po prostu go utwórz:
Źródło: https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
Zobacz także: https://docs.docker.com/engine/reference/commandline/dockerd/#/daemon-configuration-file
źródło
Aby zmienić DNS, postępuj zgodnie z instrukcjami w: https://developers.google.com/speed/public-dns/docs/using
Przejdź do sieci
Wybierz połączenie, dla którego chcesz skonfigurować DNS.
Aby zmienić ustawienia połączenia bezprzewodowego, wybierz kartę Bezprzewodowe, a następnie wybierz odpowiednią sieć bezprzewodową.
Kliknij strzałkę (po prawej) iw wyświetlonym oknie wybierz kartę Ustawienia IPv4 lub Ustawienia IPv6.
Jeśli wybraną metodą jest Automatyczny (DHCP), otwórz menu rozwijane i wybierz Tylko adresy automatyczne (DHCP). Jeśli metoda jest ustawiona na coś innego, nie zmieniaj jej.
W polu Serwery DNS wpisz adresy IP DNS oddzielone przecinkiem
źródło
0. Dodaj tymczasowy DNS. Edytuj /etc/resolv.conf.
1. Zainstaluj lub zaktualizuj resolvconf.
2. Dodaj swój serwer nazw do /etc/resolvconf/resolv.conf.d/tail
3. Uruchom ponownie komputer.
źródło