Jak ustawić adres serwera nazw na stały w /etc/resolv.conf?

14

Nie mogę zachować adresu serwera nazw, który ustawiłem /etc/resolv.conf. Za każdym razem, gdy ustawiam tę wartość, menedżer sieci zastępuje ją domyślną bramą przy ponownym uruchomieniu.

Jak to ustawić?

Wolałbym inny sposób niż zmiana serwera nazw w routerze.

Ashildr
źródło
Musisz to zmienić za pomocą NetworkManager(tak jak podano w pierwszym wierszu). Ten plik jest generowany ponownie przy każdym uruchomieniu przez NetworkManager. To, w jaki sposób uzyskać do tego dostęp, zależy od twojej dystrybucji linux (o której nie wspomniałeś) NetworkManager.
Rik

Odpowiedzi:

13

To zależy. Proszę przeczytać do końca.

Jeśli nie masz zainstalowanego pakietu resolvconf , jest to łatwe: po zmianie go tak, jak chcesz, wydaj polecenie

 sudo chattr +i /etc/resolv.conf

Polecenie zmienia atrybuty pliku, czyniąc go immutable(opcja + i).

Jeśli jednak masz zainstalowany pakiet resolvconf, plik /etc/resolv.conf może zostać przekształcony w dowiązanie symboliczne,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

który jest plikiem w wirtualnym systemie plików, jest ucieleśnieniem niestałej wersji. Zabawne jest to, że możesz nie wiedzieć, że masz zainstalowany resolvconf, ponieważ najnowsze wersje systemów podobnych do Debiana są fabrycznie zainstalowane. Możesz ustalić, czy Twoja dystrybucja go zainstalowała, wydając polecenie:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Co najważniejsze, możesz ustalić, czy Twój /etc/resolv.confplik został przekształcony w link za pomocą polecenia (plik /etc/resolv.conf) powyżej. Jeśli odpowiedź brzmi ASCII text, użyj chattr, w przeciwnym razie ...

Jeśli używasz statycznego adresu IP, najprostszą rzeczą jest dodanie następującego wiersza (lub czegoś takiego)

 dns-nameservers 8.8.4.4 8.8.8.8

do sekcji określającej właściwości twojego statycznego interfejsu w / etc / network / interfaces.

Jeśli zamiast tego korzystasz z laptopa, który cały czas łączy się z różnymi sieciami, możesz zastosować się LawrenceCdo doskonałej sugestii. Ale jeśli masz resolvconf w swoim systemie, poprawnym (i najprostszym) sposobem zapewnienia stałego zestawu DNS jest użycie plików w /etc/resolvconf/resolv.conf.d . W szczególności wykorzystywane są następujące pliki (patrz strona Stephane Graber ):

podstawa : używane, gdy nie można znaleźć innych danych

head : Używany do nagłówka resolv.conf, może być użyty do zapewnienia, że ​​serwer DNS jest zawsze pierwszy na liście

tail : Każdy wpis w tail jest dołączany na końcu wynikowego resolv.conf.

Więc umieść swoje ulubione serwery nazw w głowie w następujący sposób

  nameserver 8.8.8.8

i gotowe.

MariusMatutiae
źródło
2
@dhiller Ultrasawblade zmienił swoje imię na LawrenceC, to jedno z poniższych.
MariusMatutiae
Bardzo fajny i interesujący post, chciałbym, abyś dodał linki do dokumentacji na ten temat dla użytkowników, którzy chcą dowiedzieć się więcej na ten temat, Thx
Philippe Gachoud
/etc/resolvconf/nie istnieje domyślnie w systemie Ubuntu 18.04.
Dan Dascalescu
9

Dodaj podobną linię do /etc/dhcp/dhclient.confkorzystania z terminala głównego:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Powoduje to dhclient, że program, który wysyła żądanie DHCP i dokonuje zmian zgodnie z tym, co powiedziała odpowiedź, zastępuje informacje otrzymane z serwera DHCP powyższymi informacjami przed dokonaniem zmian.

Powyżej są dwa serwery DNS OpenNIC. Wymień w razie potrzeby na dowolne serwery, których chcesz używać.

Ponieważ dzieje się tak za każdym razem, gdy otrzymujesz informacje o konfiguracji z DHCP, więc skorzystaj z dhclient -v eth0dowolnego interfejsu, aby go odświeżyć i zobaczyć zmianę.

LawrenceC
źródło
1
Zamiast po prostu nadpisywać DNS (zwykle router), można prepend domain-name-servers 8.8.8.8na przykład dodać linię . Użyłoby to DNS ISP, jeśli jest dostępny.
Axel Latvala
3

Wygląda na to, jak wspomniano w @Rik, że przyczyną wymiany DNS przy ponownym uruchomieniu komputera jest ustawiony menedżer sieci / narzędzie. W Linux Mint, jak na zrzut ekranu, moją metodę IPv4 ustawiłem tylko na adresy automatyczne (DHCP). Następnie możesz wprowadzić poprawne ustawienia w /etc/resolv.conf lub w sekcji Serwery DNS. Pamiętam, że w Ubuntu 13.04 moje serwery nazw zmieniały się kilka razy przez długi czas, ale po tym, jak faktycznie poszedłem i je edytowałem w GUI, wszystko wydawało się odtąd stabilne.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Rudolph
źródło
3

Miałem ten sam problem, ale używam statycznego adresu IP. Poprawka polegała na dodaniu dns do / etc / network / interfaces

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]
kanelbolle
źródło
Tak, to naprawia, ponieważ NetworkManager ignoruje interfejsy wymienione w /etc/network/interfaces. Dobry chwyt!
Izzy
1

Jeśli korzystałeś z WICD, kliknij prawym przyciskiem myszy ikonę i kliknij Informacje o połączeniu. Po otwarciu okna kliknij właściwości tego, z którym jesteś połączony.

Zaznacz użyj statycznego DNS i w wierszu z napisem „Serwer DNS 1” wpisz adres IP Google DNS, 8.8.8.8aw wierszu „Serwer DNS 2 typ”, 8.8.4.4a następnie kliknij „ok”.

Jeśli otrzymujesz błędy z wartości domyślnych, możesz skontaktować się z usługodawcą internetowym i wspomnieć o nich. Zazwyczaj przypisują serwery DNS do modemu podczas łączenia się z nimi.

Yames
źródło
0

Włamanie się do systemu przez chattr +ilub w podobny sposób jest w najlepszym razie szybkie obejściem i należy go unikać, gdy tylko jest to możliwe (przynajmniej na dłuższą metę - jak powiedziano, jest to krótkotrwałe obejście, dopóki nie znajdzie się czasu na prawdziwe rozwiązanie) . Jak już wspomniano, jest to zadanie dla NetworkManagera, który oferuje CLI, którego możemy użyć do tego:

# znajdź interfejs do dostosowania
urządzenie nmcli
# wyjście wygląda następująco:
# PODŁĄCZENIE RODZAJU URZĄDZENIA
# enp0s3 ethernet podłączone moje biuro
# lo loopback niezarządzany -
# Od tego potrzebujemy POŁĄCZENIA.

# Teraz dodaj nasze „domeny wyszukiwania”:
połączenie nmcli zmodyfikuj moje biuro ipv4.dns-search example1.com
nmcli z mod my-office + ipv4.dns-search example2.com

# A nasze serwery nazw:
nmcli z modyfikacją mojego biura ipv4.dns 213.73.91.35
nmcli con zmodyfikuj my-office + ipv4.dns 87.118.100.175
# zanotuj „+” w drugim wierszu: dodaj kolejny,
# podczas gdy pierwszy wiersz zastępuje istniejący wpis.
# moglibyśmy to zrobić za pomocą jednego połączenia:
nmcli z modyfikuj mój biuro ipv4.dns „213.73.91.35 87.118.100.175”

# OK, więc teraz powiedzmy, aby ignorowało aktualizacje z serwera DHCP:
nmcli z modyfikować mój biuro ipv4.ignore-auto-dns tak

# i zastosuj zmiany do naszej konfiguracji biegania
nmcli con up my-office

Jeśli używasz statycznego adresu IP, możesz również użyć rozwiązania z odpowiedzi Kanelbolle .

Izzy
źródło
0

Niesamowite, jak frustrujące to mały problem można uzyskać, gdy te rozwiązania podane na niego nie działają na Ubunutu 18.04.

Dla mnie zadziałało po prostu nadpisanie nameserverwartości /etc/resolv.confprzy każdym rozruchu. sudoedytuj /etc/rc.locali dodaj ten wiersz:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
Dan Dascalescu
źródło