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:
- Działa.
- Wymaga najmniejszej ilości zmian i
- Nadal działa w połączeniu z pamięcią podręczną DNS dnsmasq, zamiast go pomijać.
Komentarze
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łemresolvconf -u
, serwery nazw były nie wstawione do resolv.conf – kiedy umieściłem serwery nazw whead
, 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 zbase
. Potwierdzone przeznslookup google.com
. - Początkowo musisz mieć zainstalowany
resolvconf
. Możesz go zainstalować, wykonującsudo 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
- tylko część „head” jest odczytywana przez resolvonf: część „podstawowa” jest w jakiś sposób kontrolowana przez dnsmasq
- 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
- 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ź
-
Wyszukaj „Połączenie sieciowe”
-
Otwórz
-
Następnie wybierz WiFi lub Ethernet, lub cokolwiek, z czego korzystasz, i kliknij edytuj. Otrzymasz to:
-
Wybierz ipv4 na kartach
-
Wybierz adresy tylko w metodzie
-
Wpisz poniżej swoją nazwę DNS i zapisz ją
-
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:
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 tę 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 ..
- znajdź to:
dns-nameservers
- jeśli go nie znajdziesz, po prostu wpisz go tam
- 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:
- komentarz
dns=dnsmasq
on/etc/NetworkManager/NetworkManager.conf
- 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
-
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ę.
dns=none
w/etc/NetworkManager/NetworkManager.conf
(szczegóły w mojej odpowiedzi poniżej).