Jak ustawić mój DNS podczas nadpisywania pliku resolv.conf?

Większość informacji, które widzę online, wymaga 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 to lokalna instancja dnsmasq. Dokumenty dnsmasq nakazują edycję /etc/resolv.conf. Próbowałem umieścić niestandardowe serwery nazw w /etc/resolv.conf.d/base, ale zmiany nie pojawiły się w /etc/resolv.conf po uruchomieniu sudo resolvconf -u.

Do Twojej wiadomości, nie chcę zmieniać DNS dla każdego połączenia, 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 od:

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

Komentarze

  • Lepiej odpowiedz na swoje pytanie zamiast je zaktualizować Myślę, że łatwiej będzie znaleźć właściwą odpowiedź, której udzieliłeś na swój problem
  • Wygląda na to, że większość odpowiedzi dotyczy Ubuntu i jest zbyt skomplikowana. Uniwersalnym rozwiązaniem dla użytkowników NetworkManager jest po prostu dodanie dns=none w /etc/NetworkManager/NetworkManager.conf (szczegóły w mojej odpowiedzi poniżej).
  • Myślę, że ta odpowiedź wyjaśnia, dlaczego plik solution.conf został nadpisany, więc wiesz, jak go skonfigurować.

Odpowiedź

Uważam, że jeśli chcesz zastąpić serwer nazw DNS, wystarczy dodać wiersz podobny do tego w base plik pod resolv.conf.d.

Przykład

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

Następnie umieść listę serwerów nazw w więc:

nameserver 8.8.8.8 nameserver 8.8.4.4 

Na koniec zaktualizuj resolvconf:

$ sudo resolvconf -u 

Jeśli spojrzysz na stronę podręcznika dla resolvconf, znajdziesz tam opis różnych plików pod /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 na początku pliku head znajduje się ostrzeżenie:

jest to ostrzeżenie, więc po utworzeniu tych plików ostrzeżenie ostatecznie przejdzie do wynikowego pliku resolv.conf, że te pliki będą być używany do zrobienia. Możesz więc równie łatwo dodać nameserver wiersze, które są opisane powyżej dla pliku base, do head też.

Referencje

Komentarze

  • Ubuntu 14.04 – kiedy umieściłem serwery nazw w base i uruchomiłem resolvconf -u, serwery nazw były nie wstawione do resolv.conf – kiedy umieściłem serwery nazw w head, były one
  • Ubuntu 14.04 – również musiałem skomentować konfiguracja ustawiona w /run/resolvconf/interface/NetworkManager
  • wpisz nslookup google.com, a pierwszy adres IP na liście powinien być nowym serwerem nazw, jeśli nie , zrobiłeś to źle
  • Ubuntu 16.04: działało tylko po dołączeniu do /etc/resolvconf/resolv.conf.d/head, a nie z base. Potwierdzone przez nslookup google.com.
  • Początkowo musisz mieć zainstalowany resolvconf. Możesz go zainstalować, wykonując sudo apt-get install resolvconf.

Odpowiedz

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

Aby je przetestować, wstawiłem

nameserver 8.8.8.8 

w /etc/resolvconf/resolv.conf.d/base i

nameserver 8.8.4.4 

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

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

sudo service network-manager restart 

W rezultacie /etc/resolv.conf wygląda jak

# 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-tool stwierdza, że serwerami dns są

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, że

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

Jeśli mam rację, wnioskuję z tego wszystkiego, że

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

Podsumowując, działa, ale ja nie myśl, że jest to oczekiwany wynik.Myślę, że bliższe rozwiązanie jest następujące. Edytuj

sudo vim /etc/dhcp/dhclient.conf 

, a 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, a narzędzie nm-tool mówi

DNS: 8.8.8.8 

co oznacza, że jeśli szukanej nazwy nie ma w pamięci podręcznej , to jest wymagane w 8.8.8.8, a nie na serwerze dostarczonym przez dhcp.

Inną (być może lepszą) opcją jest użycie „przedpend” zamiast „supersede”: w ten sposób, jeśli name nie jest rozwiązywana przez 8.8.8.8, wtedy żądanie wraca na inny serwer. W rzeczywistości nm-tool mówi

DNS: 8.8.8.8 DNS: 208.67.222.222 DNS: 208.67.220.220 

Komentarze

  • O wiele lepsza odpowiedź niż włamanie się do Konfiguracje NS. Szczególnie opcja dodania serwera przed serwerami dostarczonymi przez dhcp. Wydaje się, że jest to idealna równowaga w rozwiązywaniu problemu bez tworzenia nowych!
  • To ' warto zauważyć, że narzędzie nmcli zostało zastąpione przez nmcli

Odpowiedź

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

server=8.8.8.8 server=8.8.4.4 

Nie mam /etc/dnsmasq.conf, ponieważ jest instalowany przez pakiet dnsmasq, ale Ubuntu jest dostarczany tylko z dnsmasq-base. Uruchomiłem sudo apt-get install dnsmasq, potem edytowałem /etc/dnsmasq.conf, potem sudo service dnsmasq restart i sudo service network-manager restart.

Uruchomiłem sudo tail -n 200 /var/log/syslog, aby sprawdzić mój syslog i upewnić się, że dnsmasq używa serwery 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 

Komentarze

  • Jest powód, dla którego jest to oznaczone jako najlepsze odpowiedz … bo tak jest! Dziękuję bardzo! Dodam, że po wszystkich wymienionych krokach może być konieczne ponowne uruchomienie sieci, aby wszystko działało sprawnie (było to dla mnie …. sudo service network-manager restart)
  • Na serwerze Ubuntu 14.04 przez mniej więcej połowę czasu zimny rozruch spowodowałby brak połączenia internetowego przy użyciu adresu URL, ale działałby adres IP. Spędziłem dużo czasu bezowocnie próbując to naprawić, poddałem się na miesiące, a potem znalazłem to rozwiązanie. Ja również uważam, że to najlepsza odpowiedź.
  • To ' intrygujące, ż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 zawodzi …)
  • nie ma takiego pliku na Centos
  • ubuntu 16: zmiany z procedury z dnsmasq nie są propagowane do /etc/resolv.conf. Konsekwencją jest to, że nslookup nadal używa swojego pierwotnie zdefiniowanego hosta lokalnego 127.0.0.1. Chociaż mogę potwierdzić wspomniane syslogs.

Odpowiedź

W przypadku statycznych adresów IP przewodnik Ubuntu Server Guide mówi zmień plik / etc / network / interfaces, który może wyglądać tak:

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 , na przykład 8.8.8.8

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

Komentarze

  • To z pewnością wygląda dobrze, ale jak mogę teraz zregenerować plik resolv.conf ?!
  • @JoelBerger ifdown eth0; ifup eth0.
  • brak / etc / network / interfaces na Centos

Odpowiedź

  1. Wyszukaj „Połączenie sieciowe”

  2. Otwórz

    tutaj wprowadź opis obrazu

  3. Następnie wybierz WiFi lub Ethernet, lub cokolwiek, z czego korzystasz, i kliknij edytuj. Otrzymasz to:

    tutaj wprowadź opis obrazu

  4. Wybierz ipv4 na kartach

  5. Wybierz adresy tylko w metodzie

  6. Wpisz poniżej swoją nazwę DNS i zapisz ją

  7. Gotowe

Komentarze

  • I ' Muszę to jednak robić dla każdego połączenia sieciowego. W przeszłości można było zmienić ustawienia domyślne dla wszystkich połączeń, co właśnie chciałem tutaj zrobić.
  • Kocham Cię! to ustawienie interfejsu użytkownika uratowało moją dupę przed bałaganem sudo i vim: ' (
  • Używanie Mint (na Ubuntu 14.04) – ale widziałem to również w KDE – dla niektórych powód, ustawienie serwerów DNS w GUI Network Manager nie ' nie wpływa na ustawienia DNS używane w terminalu
  • Najlepsza odpowiedź imho. W Ubuntu 14.04 mam 2 zewnętrzne Adresy IP dla DNS, które nie ' nie rozpoznają klientów w mojej sieci domowej. Opuszczam metodę ' Automatycznie (DHCP) dla połączenia przewodowego dodał mój router ' adres IP do istniejącej listy.W przypadku połączenia bezprzewodowego przez wlan0 to nie ' nie działało, ale metoda na ' Automatyczne (DHCP) adresy tylko ' zastąpił adresy zewnętrzne adresem IP mojego routera i to też zadziałało. Zastosuj zmiany za pomocą sudo service network-manager restart, poczekaj chwilę, zweryfikuj za pomocą nmcli d list | grep 'DNS\|IP-IFACE'. I pinguj swojego klienta wewnętrznego, podając nazwę.
  • to jest poprawna odpowiedź

Odpowiedź

Szybkim i brudnym obejściem, o którym jeszcze nie wspomniano, jest ustawienie niezmiennej flagi w pliku resolv.conf zaraz po jego edycji.

$ sudo nano /etc/resolv.conf 

Dodaj i zapisz:

nameserver 8.8.8.8 

Następnie:

$ sudo chattr +i /etc/resolv.conf 

To powinno załatwić sprawę. Robię to również w moim systemie.

Komentarze

  • Za każdym razem, gdy twoje rozwiązanie obejmuje chattr, ' to naprawdę nie jest rozwiązanie.
  • to właśnie robię w systemach, w których z jakiegoś powodu muszę tymczasowo zmienić DNS i nie ' nie chcę modyfikować konfiguracji. Jako trwałe rozwiązanie nie ' nie polecam tego.
  • ” szybkie i nieprzyjemne obejście ”
  • To nie jest ' t brudne. Programy które niszczą lokalną konfigurację, ponieważ uważają, że wiedzą lepiej, są brudne.

Odpowiedź

Mój problem był nieco inny , Chciałem zastąpić serwery DNS moich 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ępując <dns_ip_address*> elementy odpowiednią treścią.

Komentarze

  • To jest odpowiedź, która rozwiązała mój problem.
  • Idealnie. Dodam tylko, że należy ponownie uruchomić sieć usługi sudo, aby włączyć zmiany.
  • A jeśli nie ' nie będziemy mieć tego dhcp3 folder? Mam Xubuntu 17.10, czy został on przeniesiony do /etc/dhcp po prostu?
  • @PlasmaBinturong w moim przypadku było to /etc/dhcp/dhclient.conf na najnowsze wersje Debiana i Ubuntu.

Odpowiedź

Spróbuj dodać dns-nameservers XXX.XXX.XXX.X do pliku /etc/networking/interfaces.

Komentarze

  • Zostaw komentarz, gdy głosujesz przeciw. Jest to metoda opisana w podręczniku , strona 38.
  • Niewymieniony podręcznik pokazuje wszystkie adresy IP w jednym wierszu. Ta odpowiedź wydaje się sugerować dodanie linii. A dlaczego ostatnia liczba ma tylko jedną szerokość X? Myślę, że to głównie bardzo nieformalne i niepewne krótkie pisanie w stylu czatu, które spotkało się z negatywnymi opiniami, @Zook.

Odpowiedź

Może czegoś mi brakuje, ale zgodnie z instrukcjami konfiguracyjnymi podanymi w https://help.ubuntu.com/14.04/serverguide/network-configuration.html wszystko, co musisz zrobić, to zaktualizuj następujące. Nie używam serwera proxy – tylko komputer za zaporą i lokalnym DNS (przykład pokazuje Google, ale ustaw go na cokolwiek potrzebujesz).

nano /etc/network/interfaces 

Domyślnie:

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

Odpowiedź

Niektóre z odpowiedzi działają dobrze. Jednak nie byłam zadowolona z faktu, że muszę ręcznie pliki konfiguracyjne tylko po to, aby ustawić „właściwe” DNS, które już ady otrzymuję za DHCP z NetworkManager.

Poszukałem trochę informacji i zauważyłem, że plik /etc/resolv.conf jest w rzeczywistości linkiem i wskazuje na /run/systemd/resolve/stub-resolv.conf. Po kilku eksperymentach wydaje się, że katalog /run/systemd/resolve/ zawiera inny plik o nazwie resolv.conf, który zawiera już ustawienia otrzymane za pośrednictwem DHCP. Dlatego zamiast ręcznie nadpisywać / tworzyć pliki konfiguracyjne w /etc/, możesz po prostu ponownie połączyć /etc/resolv.conf, aby wskazywały na /run/systemd/resolve/resolv.conf i wszystko powinno być w porządku:

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

Teraz powinieneś móc edytować ustawienia nawet z sieci Menedżer w Gnome. 🙂

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

Komentarze

  • kiedy uruchamiamy systemd-resolve --flush-cache oryginalny połączony plik jest najwyraźniej zerwany, powyższa odpowiedź przywraca oryginalna funkcjonalność

Odpowiedź

EDYCJA 6 MAJA, 2016

Napisałem skrypt aktualizujący wszystkie ustawienia połączeń systemowych w katalogu /etc/Network-Manager/system-connections/. 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ą ustawionych dns za pomocą grep i ustawia to za pomocą awk.

Ponieważ dostęp do tych plików wymaga dostępu sudo, uruchom ten skrypt z sudo, a następnie – zrestartuj 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:

tutaj wprowadź opis obrazu

ORYGINALNY POST Niektórzy użytkownicy wskazali tutaj, że DNS jest w jakiś sposób kontrolowany przez dnsmasq. To rzeczywiście prawda. „Miałem nieco mniejszy problem, w którym niezależnie od tego, jak zmieniłem head lub body w /etc/resolvconf/resolv.conf.d, mój komputer w rzeczywistości nie mógł uzyskać dostępu do internowanej nazwy domeny – działał tylko z adresami IP.

Zmieniłem plik /etc/NetworkManager/NetworkManager.conf. Pierwotnie był to dns=dnsmasq, ale zmieniłem go na: dns=208.67.222.222. Chociaż w ten sposób nm-tool nie wspomina o 208.67.222.222, nadal mogłem używać nazw domen, a nie tylko adresów IP.

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

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

UWAGA: Więcej szczegółów na temat mojego problemu i tego rozwiązania znajdziesz 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 domową siecią Wi-Fi. Czytałem trochę na man NetworkManager.conf i okazuje się, że dns= w [main] to w rzeczywistości wiersz na wtyczki, więc wiersz dns=dnsmasq najwyraźniej dodaje wtyczkę dnsmasq do NetworkManagera.

Więc moje rozwiązanie nadal działało, tylko nie tak, jak się spodziewałem. Oto fragment strony podręcznika:

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

Wtyczki DNS służą do zapewnienia funkcji lokalnego buforowania serwera nazw (co przyspiesza zapytania DNS) i wypycha dane DNS do aplikacji, które go używają.

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

Odpowiedź

Istnieją dwie metody

Metoda 1

Serwer DNS, którego chcesz używać, można zmienić, aktualizując plik head w katalogu resolv.conf.d

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

, a następnie uruchom

$ sudo resolvconf -u 

Powyższe spowoduje wygenerowanie ogólnego pliku resolv.conf w katalogu /etc. Wszystkie żądania rozwiązania zostaną wysłane do wyżej wymienionego serwera nazw. Rozwiązany.

Jednak ma to swoje konsekwencje. Podczas korzystania z resolvconf do bezpośredniego wysyłania zapytań 1.1.1.1 do rozwiązywania adresów, moc buforowania zapewniana przez dnsmasq znika. Każde żądanie trafi do 1.1.1.1

Metoda 2

Jeśli nie chcesz, aby powyższe miało miejsce i użyj dnsmasq do rozwiązywania DNS, zobacz odpowiedź. Odpowiedź jest tutaj opisana w prosty sposób.

Dodaj następującą zawartość w pliku /etc/dnsmasq.conf .

server = 1.1.1.1

Następnie ponownie uruchom usługę dnsmasq

$ sudo systemctl restart dnsmasq.service 

Wszystko będzie dobrze. Rozwiązane.

Odpowiedź

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 go nie znajdziesz, po prostu wpisz go tam
  3. Mój zrobiłam tak: dns-nameservers 199.85.126.10 199.85.127.10

Mam nadzieję, że to najlepszy sposób. Nawiasem mówiąc, zrobiłem to w ten sposób na VPS.

Odpowiedź

na stronie głównej:

  1. komentarz dns=dnsmasq on /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 wprowadzają przedstawione powyżej zmiany:

$ 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 ponownego uruchamiania, sprawdź konfigurację za pomocą” nslookup nist.gov „. Działa dobrze na Ubuntu LTS 14.04.

Odpowiedź

Uwaga: Jak większość odpowiedzi, ta zakłada użycie NetworkManagera . Jednak w przeciwieństwie do większości innych odpowiedzi nie zakłada użycia resolvconf, dhclient ani niczego innego – uważaj, że mogą przejąć, choć (patrz aktualizacja).

Biorąc pod uwagę liczbę wyświetleń tego pytania, jest to dość niewiarygodne, że 8 znaków nie zostało jeszcze opublikowane: zgodnie z man NetworkManager.conf,

dns: […] none: NetworkManager nie modyfikuje resolv.conf. Oznacza to niezarządzany rc-manager

Dlatego dodaj

dns=none 

w sekcji [main] /etc/NetworkManager/NetworkManager.conf, a następnie uruchom ponownie NetworkManager i nie będzie modyfikować /etc/resolv.conf już.

Pamiętaj, że ustawienie rc-manager=unmanaged powinno być równoważne z dns=none i to ustawienie rc-manager=symlink wraz z /etc/resolv.conf jako symbolem olic może być lepszym pomysłem (przeczytaj wyżej wymienioną stronę podręcznika).

Aktualizacja:

Po tym, jak NetworkManager przestał nadpisywać /etc/resolv.conf, pomyślałem dhcpcd już zastępował /etc/resolv.conf bezużytecznym pustym plikiem podczas rozruchu. Strona podręcznika dhcpcd.conf pomogła, wystarczy dodać

nohook resolv.conf 

w swoim dhcpcd.conf (mój jest w /etc/dhcpcd.conf).

Odpowiedz

To ponieważ konkretna zainstalowana aplikacja zarządza tym plikiem. Możesz odinstalować tę aplikację lub ustawić żądane opcje bezpośrednio przez tę aplikację.

W moim przypadku (minimalny serwer Linux centos7) sytuacja taka sama jak ja # Generated by NetworkManager u góry pliku resolv.conf, więc najlepszym sposobem zmiany tej opcji było użycie

nmtui

. Możesz edytować serwery nazw w tym narzędziu, a po zmianie opcji menedżera sieci w tym narzędziu zostaną one automatycznie zastosowane do /etc/resolv.conf po ponownym uruchomieniu. Tutaj możesz znaleźć więcej informacji .

Odpowiedź

Nic na wszystko w internecie on Spowodowało to, że narzędzie CLI NordVPN nadpisywało /etc/resolv.conf za każdym razem, gdy łączyłem się i rozłączałem z VPN. To nawet przesłoniło chattr +i, co było bardzo irytujące !!

Udało mi się całkowite wyłączenie resolvconf !

Edytuj /etc/resolvconf.conf i ustaw ten wpis jako jedyny:

resolv_conf=NO 

To w szczególności wyłącza resolvconf, co oznacza, że /etc/resolv.conf nigdy nie zostanie przez to zmienione. Następnie śmiało i sudo chattr +i /etc/resolv.conf dla dobrego pomiaru.

Przetestowano na Arch Linux.

Odpowiedź

W Centos 7 przy użyciu NetworkManager najczystszym, trwałym i działającym rozwiązaniem, jakie udało mi się znaleźć, jest utworzenie skryptu NetworkManager, który używa nmcli do ustawiania żądanych wartości.

np.

Utwórz /etc/NetworkManager/dispatcher.d/mydns.sh z uprawnieniami 755 i następującą zawartością:

#!/usr/bin/sh if [ $1 == "enp0s11" -a $2 == "up" ] then echo "Setting my DNS ($1 is $2)" | logger # disable default DNS nmcli device mod enp0s11 ipv4.ignore-auto-dns yes # Substitute our own DNS, in the desired order nmcli device mod enp0s11 ipv4.dns "10.0.1.101 10.0.1.1" fi 

Aby przetestować bez ponownego uruchamiania:

systemctl restart NetworkManager.service cat /etc/resolv.conf 

YMMV, ale to jedyny sposób, jaki znalazłem, który pozwala mojemu /etc/resolv.conf na „przetrwać” ponowne uruchomienie bez nadpisywania wartościami, których nie chcę.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *