Jaki jest właściwy sposób zmiany adresu IP DNS?

56

Podejrzewam, że serwer nazw dostarczony przez mój modem / router ADSL jest wadliwy. Ilekroć przeglądam stronę internetową po raz pierwszy w Ubuntu, rozpoznanie nazwy domeny zajmuje co najmniej 15 sekund.

Aby obejść ten problem, zmieniłem konfigurację serwera nazw /etc/resolv.confz 192.168.1.1 (mój modem ADSL) na 8.8.8.8 (podstawowy DNS Google). Wydaje się, że to rozwiązuje problem, ale niestety moje zmiany /etc/resolv.confsą zastępowane przez „NetworkManager” przy każdym uruchomieniu.

Jaki jest właściwy sposób skonfigurowania adresu IP serwera nazw w systemie Ubuntu 10.4?

Wim Coenen
źródło

Odpowiedzi:

51

Jeśli masz typową konfigurację połączenia z menedżerem sieci i DHCP, spróbuj wykonać następujące czynności:

  1. Kliknij prawym przyciskiem myszy ikonę menedżera sieci w panelu i wybierz „Edytuj połączenia ...”
  2. Wybierz połączenie z karty przewodowej lub bezprzewodowej, wybierz „Edytuj”
  3. (Wprowadź hasło, jeśli połączenie jest ustawione jako „dostępne dla całego systemu”)
  4. Wybierz kartę ustawień IPv4
  5. Przełącz metodę na „Tylko adresy automatyczne (DHCP)”
  6. Wpisz żądany serwer nazw w polu „Dodatkowe serwery DNS” i naciśnij „Zastosuj”

To powinno wystarczyć.

Marcel Stimberg
źródło
1
Działa to nadal w Ubuntu 12.04 i nowszych, mimo że NetworkManager używa teraz resolvconf do obsługi resolv.conf.
jdthood,
4
Jeśli zastanawiasz się, gdzie kończy się konfiguracja, spójrz na /etc/NetworkManager/system-connections/(potrzebne będą uprawnienia administratora, aby uzyskać dostęp do tych plików konfiguracyjnych).
Lekensteyn
2
To zmienia tylko dns dla bieżącego połączenia, ale czy jest też sposób na globalną zmianę DNS ?
rubo77
lista jest dla mnie pusta. z czego korzysta domyślnie?
J. Taylor,
1
Działa dokładnie tak samo na interfejsie terminalowym nmtuibtw!
Granitozaur
30

Możesz je zmienić w ten sposób.

Najpierw kliknij ikonę menedżera sieci w pasku menu, a następnie kliknij Edit Connections...element.

wprowadź opis zdjęcia tutaj

Teraz przełącz się na zakładki „Przewodowe” lub „Bezprzewodowe”, w zależności od tego, czego używasz - używam Wi-Fi, więc będę z tego korzystać.

Wybierz nazwę swojej sieci i kliknij Edit...

Przejdź na kartę IPv4, a następnie zmień tylko z automatycznego adresu DHCP na automatyczne adresy (DHCP).

Wpisz adres IP swojego serwera DNS.

wprowadź opis zdjęcia tutaj

Kliknij zapisz i gotowe!

jrg
źródło
Chociaż możesz zmienić serwer DNS w ustawieniach sieciowych na dowolnym komputerze, najlepiej zmienić je w rzeczywistym routerze, który łączy się z Internetem, aby wszystkie podłączone urządzenia mogły z niego korzystać.
Mark Rooney,
3
Co jeśli nie ma routera jako takiego? A może po prostu chce zmienić DNS dla tego komputera / użytkownika? Co jeśli to tylko ten jeden raz? Może tak naprawdę nie ma dostępu do routera i chce użyć innego serwera DNS ... Mogę dodawać powody do tej listy przez całą noc. Dobra wskazówka i odpowiedź @jrg.
Bruno Pereira,
6
Jest to przyjemna graficzna instrukcja ustawiania dns na jednym komputerze z menedżerem sieci. Chciałbym tylko zaznaczyć, że możesz ustawić więcej niż jeden, oddzielając przecinkami. 8.8.8.8,8.8.4.4. Ustawienie DNS dla sieci LAN może być również pomocne, jeśli sieć LAN jest wystarczająco duża, ja osobiście korzystam z routera lub dnsmask. W sieci LAN często łatwiej jest utrzymywać czarną listę lub serwer proxy w jednym miejscu (router / dnsmask / squid) niż na każdym kliencie lub na każdym kliencie na każdym kliencie, ale to nieco więcej niż pytanie tutaj postawione.
Panther,
29

Najlepszym sposobem ustawienia serwera nazw za pomocą interfejsu CLI, bez NetworkManger, ze statycznym adresem lub niezależnym od połączenia jest:

Zainstaluj pakiet resolvconf .

Biegać

sudo nano /etc/resolvconf/resolv.conf.d/head

(zignoruj ​​przerażające ostrzeżenie. /etc/resolv.conf jest generowany automatycznie, więc ostrzeżenie tam jest, więc zostanie umieszczone w pliku /etc/resolv.conf po wygenerowaniu /etc/resolv.conf.) Na końcu pliku, Dodaj

 nameserver <ip_of_nameserver>

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:

 sudo resolvconf -u
Azendale
źródło
1
Z jakiegoś powodu około miesiąc temu moja nocna kompilacja Xubuntu przestała rozpoznawać nazwy hostów LAN. Mój serwer DHCP powinien sam się wydawać (192.168.68.1) jako serwer DNS, zapisałem go również na stałe w Menedżerze sieci i każdym miejscu (wspomnianym powyżej tej odpowiedzi). Ze względu na sposób, w jaki Xubuntu / NetworkMan / Cokolwiek używa obecnie adresu IP 127.0.xx, trudno jest zdiagnozować problem. Mogłem rozwiązać zewnętrzne adresy IP, więc otrzymywałem COŚ dla DNS. W każdym razie była to jedyna odpowiedź, która rozwiązała mój problem. Dzięki
Adam Plocher,
18

Innym sposobem na to jest edycja, /etc/dhcp3/dhclient.confmożesz to zrobić, wpisując to w oknie dialogowym uruchamiania (pojawia się, naciskając Alt+ F2)

gksudo gedit /etc/dhcp3/dhclient.conf

Następnie znajdź następujący wiersz

#prepend domain-name-servers 127.0.0.1;

I zmień na

prepend domain-name-servers 8.8.8.8;

Spowoduje to, że dhclient (klient DHCP, którego używa NetworkManager) przygotuje to na serwerach dns, więc resol.conf będzie wyglądać tak

nameserver 8.8.8.8
nameserver 192.168.1.1

To rozwiązanie będzie działać wszędzie i zawsze otrzymasz DNS, który wybrałeś jako podstawowy.

LassePoulsen
źródło
4
Wydaje mi się, że Network Manager pisze resolv.conf bez konsultacji z dhclient.conf
daithib8
2
na Ubuntu 11.10 musisz zmodyfikować /etc/dhcp/dhclient.conf zamiast /etc/dhcp3/dhclient.conf
Pawel Barcik
1
można umieścić wiele?
PyRulez
1
@PyRulez Tak, oddzielone przecinkami, średnikiem na końcu
Sergiy Kolodyazhnyy
2
Próbowałem tego w 14.10, ale bez efektu
rubo77
7

Innym rozwiązaniem jest zmiana konfiguracji routera na inny serwer DNS. Po prostu zaloguj się do jego administratora i dopóki problem nie jest spowodowany przez router, wszystkie komputery klienckie będą miały lepszy DNS.

Oli
źródło
+1 Zgadzam się, jeśli jest to problem, który prawdopodobnie nie zostanie wkrótce rozwiązany najlepiej naprawić go na routerze, zostanie on naprawiony dla wszystkich komputerów w sieci. Uważam, że najlepiej jest używać Google DNS lub OpenDNS.
Mark Davidson
1
Już to zrobiłem, ale router nadal działa jako pośredni serwer nazw między klientami a skonfigurowanym serwerem nazw i nadal działa bardzo wolno.
Wim Coenen,
1
Wielu dostawców Internetu blokuje swoje routery, abyś nie mógł zmienić tych ustawień lub musiał za to zapłacić.
LassePoulsen,
@ Wim Jeśli router nie może zapewnić rozdzielczości DNS w rozsądnym czasie, powiedzmy 50ms przy dobrym połączeniu, coś jest z nim naprawdę nie tak. Tak źle, może to nieskutecznie obsługiwać inny ruch. Może być czas na ulepszenie o wartości 30 USD / 20 GBP.
Oli
1
@Oli: Problem DNS pojawia się tylko podczas korzystania z routera z Linuksa: Miałem ten sam problem z Debianem, ale nie miałem problemów z Windows. Jestem pewien, że to tylko subtelny problem ze zgodnością. W przeciwnym razie router działa dobrze.
Wim Coenen
6

Kliknij wskaźnik sieci w prawym górnym rogu ekranu i wybierz Edit Connections.... Wybierz połączenie, które chcesz zmodyfikować (prawdopodobnie na karcie Wiredlub Wireless, i kliknij Edit...przycisk.

Przejdź do IPv4 Settingszakładki okna połączenia i zmień metodę z Automatic (DHCP)na Automatic (DHCP) addresses only. Teraz powinieneś być w stanie określić adres IP serwera DNS.

Zapisz połączenie i powinieneś iść. Konieczne może być zresetowanie połączenia przez wybranie go z menu wskaźnika po zmianie ustawień.

James Henstridge
źródło
1

Wierzę, że jeśli zmienisz to w menedżerze sieci, zmiany będą się utrzymywać.

Aby na przykład użyć eth0

Menedżer sieci -> Przewodowy -> Auto eth0 -> Ustawienia ipv4.

Ustaw serwer DNS na 8.8.8.8 i zastosuj.

Mark Davidson
źródło
Miałem problem ze znalezieniem czegoś, co nazywa się „menedżerem sieci”. Istnieje „System - Administracja - Narzędzia sieciowe”, ale to nie pomaga. W końcu okazało się, że potrzebuję „System - Preferencje - Połączenia sieciowe”.
Wim Coenen,
1
W panelu znajduje się ikona menedżera sieci (ta wyświetlająca stan sieci), którą można kliknąć prawym przyciskiem myszy, aby edytować połączenia.
Marcel Stimberg,
To nie działa
568021
0

Korzystanie z terminala

Musisz edytować /etc/resolv.confplik, aby ustawić adres IP serwera nazw, który powinien być zapytany przez program rozpoznawania nazw. Można zdefiniować do 3 internetowych adresów IP serwerów nazw. Jeśli istnieje wiele serwerów, biblioteka tłumacząca wysyła do nich zapytania w podanej kolejności.

Najpierw wpisz

sudoedit /etc/resolv.conf

Dodaj swój adres IP preferowanego serwera DNS w następujący sposób:

nameserver <preferred-ip1>
nameserver <preferred-ip2>
nameserver <preferred-ip3>

pochodzi z: http://www.cyberciti.biz/faq/ubuntu-linux-configure-dns-nameserver-ip-address/

Amith KK
źródło
6
Pamiętaj, że jeśli serwery nazw są ustawione przez DHCP, /etc/resolv.confzostaną zastąpione. To podejście jest odpowiednie tylko dla maszyn z ręcznymi konfiguracjami sieci. Technicznie, mógłby zrobić chattr +i /etc/resolv.conf, aby zapobiec pliku przed modyfikacją (tak zrobiłem rok temu), ale najlepszym sposobem dla większości maszyn byłaby JRG na podejście w jego odpowiedź: askubuntu.com/a/90263/13398 .
Scott Severance
@ScottSeverance Czego system nie miał X
Amith KK
W takim przypadku jest to prawdopodobnie serwer z ręcznie skonfigurowaną siecią, w którym to przypadku odpowiedź jest całkowicie właściwa. Ale większość maszyn Ubuntu działa w X i może łatwo obsługiwać inne podejście. Jeśli na komputerze nie działa X, ale ma zainstalowany odpowiedni interfejs GUI, możesz również uruchomić narzędzia graficzne za pośrednictwem SSH ForwardX11=yes.
Scott Severance
6
Jeśli zamierzasz spróbować ręcznie edytować plik /etc/resolv.conf, właściwym sposobem (aby nie został nadpisany) jest zainstalowanie pakietu „resolvconf”, a następnie edycja pliku / etc / resolvconf / resolv. conf.d / head lub /etc/resolvconf/resolv.conf.d/tail.
Azendale,
0

W przypadku serwerów bezgłowych, w których nie ma X, a zarządzanie odbywa się przez ssh lub cokolwiek innego, konieczne jest rozwiązanie z linii poleceń. Jeśli resolv.conf nie zostanie nadpisane, to jest to właściwe miejsce do zmiany serwerów nazw.

Jeśli resolv.conf robi się nadpisane następnie na 14.04LTS przynajmniej, pliki do edycji są:

  • /etc/resolvconf/resolv.conf.d/head
  • /etc/resolvconf/resolv.conf.d/tail

Zdecydowanie sugeruję umieszczanie ciągów komentarzy w takich plikach, aby pojawiły się w wygenerowanym pliku (/etc/resolve.conf) i można je znaleźć w przyszłości. Zaczynam i kończę każdy plik z komentarzem w jednym wierszu formularza:

  • # ====== początek /etc/resolveconf/resolv.d/tail ======
  • # ====== end /etc/resolveconf/resolv.d/tail ======

i umieść między nimi odpowiednie dyrektywy.

Gordon
źródło
0

Przekonałem się, że dodanie wiersza dns-nameserver ipdo pliku interfejsów, ustawienie ustawień ipv4 połączenia przewodowego tylko na ustawienia automatyczne (DHCP) i wprowadzenie adresu IP serwera DNS i nazwy domeny. Dodanie lokalnego adresu IP DNS do sekcji statycznego DNS routera DSL powoduje, że NetworkManager dołącza ten adres lokalny do resolv.confpliku, który zastępuje, wraz z innymi informacjami pobranymi z routera. Wszystko to razem sprawia, że ​​lokalne rozpoznawanie nazw DNS jest trwałe - wydaje się to zaskakująco trudne zadanie. Potrzebuję lokalnego DNS do montowania klienta Linux na udziale Samby za mount.cifspomocą sieci obsługiwanej przez DHCP.

Danegerous
źródło
0

Jeśli Network-Managerzostanie zatrzymany i/etc/resolvconf/resolv.conf.d/base został skonfigurowany.

Może resolvconf --enable-updatesjest przydatny.

J.Doe
źródło
0

Możesz zmienić ustawienia DNS IPv4 w sposób graficzny, zgodnie z odpowiedzią tutaj

Ale jeśli zastanawiasz się, jak zrobić to samo za pomocą wiersza polecenia, musisz wyświetlić listę plików w /etc/NetworkManager/system-connectionskatalogu z lspoleceniem:

ls /etc/NetworkManager/system-connections

Musi być plik z nazwą twojego połączenia, mój nazywa się Wired Connection 1 .

Musimy więc edytować plik i dodać do niego serwery DNS:

Sudo nano "/etc/NetworkManager/system-connections/Wired connection 1"

Dodaj dowolną liczbę serwerów DNS w [ipv4]sekcji i rozdziel je średnikami, ;a także umieść ;na końcu ostatniego serwera DNS w następujący sposób:

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;

Możesz po prostu usunąć ten wiersz, jeśli nie chcesz przypisywać żadnych dns.

Musisz także dodać tę linię, ignore-auto-dns=trueaby zignorować serwery DNS dostarczone przez DHCP (takie jak serwer DNS ustawiony w konfiguracji routera):

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;
ignore-auto-dns=true

Mały kontekst dla tej odpowiedzi: próbowałem dowiedzieć się, jaki plik poddaje się edycji, gdy dodam serwer DNS w ustawieniach DNS GUI, więc uruchomiłem to polecenie przez ponad 16 godzin: sudo grep -rs "1.1.1.1" /skanowanie wszystkich plików na mojej maszynie wirtualnej Ubuntu ale nigdy nie skończyło się nawet po tak długim uruchomieniu, ale wiedziałem, że to możliwe, że plik może istnieć, /etc/NetworkManagerwięc uruchomiłem grepponownie wskazując na ten katalog i znalazłem to: /etc/NetworkManager/system-connections/Wired connection 1:dns=1.1.1.1;więc wróciłem tutaj, aby napisać odpowiedź tylko po to, aby dowiedzieć się, że Lekensteyn już to zrobił zwrócił na to uwagę w komentarzach do przyjętej odpowiedzi .

Shayan
źródło