Większość informacji, które widzę online, mówi do 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 jest lokalną instancją dnsmasq
. Dokumenty dnsmasq
mówią do edycji /etc/resolv.conf
. Próbowałem umieścić niestandardowe serwery nazw /etc/resolv.conf.d/base
, ale zmiany nie pojawiły się /etc/resolv.conf
po uruchomieniu sudo resolvconf -u
.
Do Twojej wiadomości, nie chcę zmieniać DNS dla poszczególnych połączeń, 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, ponieważ:
- To działa.
- Wymaga najmniejszej ilości zmian i
- Nadal działa w połączeniu z pamięcią podręczną DNS dnsmasq, a nie pomija ją.
dns=none
w/etc/NetworkManager/NetworkManager.conf
(szczegóły w mojej odpowiedzi poniżej).Odpowiedzi:
Uważam, że jeśli chcesz zastąpić serwer nazw DNS, po prostu dodajesz wiersz podobny do tego w swoim
base
pliku podresolv.conf.d
.Przykład
Następnie umieść listę serwerów nazw w taki sposób:
Wreszcie aktualizacja
resolvconf
:Jeśli spojrzysz na stronę man,
resolvconf
to opisuje ona różne pliki/etc/resolvconf/resolv.conf.d/
.Mimo że u góry
head
pliku znajduje się ostrzeżenie :to ostrzeżenie jest po to, aby podczas konstruowania tych plików ostrzeżenie ostatecznie działało w
resolv.conf
pliku wynikowym , który zostaną wykorzystane do utworzenia tych plików. Więc równie łatwo można dodaćnameserver
dobase
pliku wiersze opisane powyżej dlahead
pliku.Bibliografia
źródło
base
i uruchomiłemresolvconf -u
, serwery nazw nie zostały umieszczone w resolv.conf - kiedyhead
/run/resolvconf/interface/NetworkManager
nslookup google.com
i pierwszy adres IP na liście powinien być twoim nowym/etc/resolvconf/resolv.conf.d/head
, a nie zbase
. Potwierdzony znslookup google.com
.resolvconf
zainstalowany. Możesz to zrobić, robiąc tosudo apt-get install resolvconf
.Interesuje mnie również to pytanie i wypróbowałem rozwiązanie zaproponowane @sim.
Testuję to
w
/etc/resolvconf/resolv.conf.d/base
iw
/etc/resolvconf/resolv.conf.d/head
Następnie ponownie uruchomiłem sieć za pomocą
W rezultacie
/etc/resolv.conf
wygląda to taki
nm-tool
stwierdza, że serwer dnsserver jestktóre są dostarczane przez mój router. Z drugiej strony, kopanie adresu mówi o tym
Jeśli mam rację, z tego wszystkiego wyciągam wnioski
W sumie to działa, ale nie sądzę, że jest to zamierzony zamierzony wynik. Myślę, że bliższe rozwiązanie jest następujące. Edytować
następnie dodaj
Wynik jest następujący: resolv.conf zawiera tylko 127.0.0.1, co oznacza, że wywoływana jest pamięć podręczna dnsmasq i nm-tool mówi
co oznacza, że jeśli szukana nazwa nie znajduje się w pamięci podręcznej, jest o nią proszona w 8.8.8.8, a nie na serwerze dostarczonym przez dhcp.
Inną (być może lepszą) opcją jest użycie „prepend” zamiast „supersede”: w ten sposób, jeśli nazwa nie zostanie rozwiązana w wersji 8.8.8.8, wówczas żądanie powróci na drugi serwer. W rzeczywistości nm-tool mówi
źródło
Dowiedziałem się, że możesz zmienić używane serwery nazw,
dnsmasq
dodając następujące wiersze do/etc/dnsmasq.conf
:Nie miałem jednak
/etc/dnsmasq.conf
pliku, ponieważ jest on instalowany przez pakiet dnsmasq, ale Ubuntu jest dostarczany tylko z dnsmasq-base. Pobiegłemsudo apt-get install dnsmasq
, potem zredagowałem/etc/dnsmasq.conf
, potemsudo service dnsmasq restart
isudo service network-manager restart
.Pobiegłem
sudo tail -n 200 /var/log/syslog
sprawdzić mój syslog i sprawdzić, czydnsmasq
korzystałem z serwerów nazw, które określiłem:źródło
sudo service network-manager restart
)W przypadku statycznych adresów IP Przewodnik Ubuntu Server mówi o zmianie pliku / etc / network / interfaces, które mogą wyglądać następująco:
Zmieniasz adresy IP 192.168.3.45 192.168.8.10 na te, które chcesz, np. 8.8.8.8
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Strona 38
źródło
ifdown eth0; ifup eth0
.Otwórz to
Następnie wybierz WiFi lub Ethernet lub cokolwiek, którego używasz, i kliknij edytuj. Dostaniesz to:
Wybierz ipv4 w zakładkach
Wpisz poniżej swoją nazwę DNS i zapisz ją
Jesteś skończony
źródło
sudo service network-manager restart
, poczekaj chwilę, sprawdź za pomocąnmcli d list | grep 'DNS\|IP-IFACE'
. I pinguj swojego wewnętrznego klienta według nazwy.Szybkie i nieprzyzwoite obejście, o którym jeszcze nie wspomniano, polega na ustawieniu niezmiennej flagi na
resolv.conf
pliku zaraz po jego edycji.Dodaj to i zapisz:
Następnie:
To powinno wystarczyć. Robię to również w moim systemie.
źródło
Konfiguracja DNS pod Linuksem
Korzystanie z DNS w systemie Linux odbywa się za pomocą zestawu procedur w bibliotece C, które zapewniają dostęp do internetowego systemu nazw domen (DNS). Plik konfiguracyjny resolvera (
resolv.conf
) zawiera informacje odczytywane przez procedury resolvera przy pierwszym wywołaniu przez proces. W skrócie, każdy proces żądający DNS odczyta/etc/resolv.conf
bibliotekę. Na wierzchu jest NSS i jest skonfigurowany przez/etc/nsswitch.conf
.Linux DNS config znajduje się w pliku,
/etc/resolv.conf
ALE istnieje wiele programów / usług, które chcą automatycznie zarządzać i obsługiwać plik konfiguracyjny DNS na/etc/resolv.conf
. W niektórych sytuacjach możesz samodzielnie zarządzać tym plikiem. Każdy program / usługa zarządzająca DNS ma własne pliki konfiguracyjne, takie jak/etc/dnsmasq.conf
(dla usługi dnsmasq) i dołącza konfigurację DNS przy zmianie połączenia i / lub w innych przypadkach ... szybkim rozwiązaniem jest zablokowanie pliku konfiguracyjnego DNS,chattr +i /etc/resolv.conf
ale nie jest to zalecane w niektórych przypadkach lepszym rozwiązaniem jest prawidłowe skonfigurowanie wszystkich programów / usług za pomocą DNS, takich jak (dnsmasq / network-manager / resolvconf / etc.)Odzyskiwanie kontroli nad systemem DNS
Oto wyczerpująca lista ustawień, aby odzyskać kontrolę nad plikiem resolv.conf i uniknąć nadpisywania go ( jak wyłączyć / skonfigurować DNS z innej lokalizacji niż resolv.conf ). Uwaga: resolvconf jest niezależnym programem od resolv.conf, również w zależności od systemu / konfiguracji możesz nie mieć jednego lub wielu programów wymienionych tutaj.
1. Resolvconf:
Pliki konfiguracyjne
Zaktualizuj konfigurację
Wyłącz resolvconf
2. Usługa Dnsmasq:
Pliki konfiguracyjne
Zaktualizuj konfigurację
3. Menedżer sieci:
Pliki konfiguracyjne
Wyłącz DNS
Włącz DNS
Skorzystaj z usługi rozwiązanej
Użyj resolvconf
Zaktualizuj konfigurację
4. Interfejsy sieciowe:
Pliki konfiguracyjne
Zaktualizuj Config
5. Klient DHCP:
Pliki konfiguracyjne
Zaktualizuj Config
6. Usługa Rdnssd:
Wyłącz rdnssd
7. Usługa rozwiązana:
Wyłącz rozwiązane
8. Netconfig:
Pliki konfiguracyjne
Wyłącz netconfig
Zaktualizuj Config
Ustawianie serwera DNS
Przykład
/etc/resolv.conf
konfiguracjiźródło
Mój problem był nieco inny, chciałem zastąpić serwery DNS 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
i dodaj następujący wiersz:
zastępowanie
<dns_ip_address*>
przedmiotów odpowiednią treścią.źródło
dhcp3
folderu? Mam Xubuntu 17.10, czy zmieniło się to/etc/dhcp
po prostu?Być może coś mi brakuje, ale zgodnie z instrukcjami konfiguracji na https://help.ubuntu.com/14.04/serverguide/network-configuration.html wystarczy zaktualizować następujące. Nie uruchamiam proxy - tylko maszyna za firewallem i lokalnym DNS (przykład pokazuje Googles, ale ustaw na cokolwiek potrzebujesz).
Domyślna:
AKTUALIZACJA:
Uruchom ponownie, jeśli możesz.
źródło
Spróbuj dodać
dns-nameservers XXX.XXX.XXX.X
do swojego/etc/networking/interfaces
pliku.źródło
Niektóre odpowiedzi tutaj działają dobrze. Jednak nie był zadowolony z faktu, że trzeba ręcznie przejść plików konfiguracyjnych żeby ustawić „właściwego”
DNS
, które ja już otrzymuję nadDHCP
zNetworkManager
.Zrobiłem trochę kopania i zauważyłem, że
/etc/resolv.conf
plik jest tak naprawdę linkiem i wskazuje na/run/systemd/resolve/stub-resolv.conf
. Po eksperymentach okazuje się, że/run/systemd/resolve/
katalog zawiera inny plik o nazwie,resolv.conf
który już zawiera ustawienia, które otrzymałeśDHCP
. Zamiast ręcznie nadpisywać / tworzyć pliki konfiguracyjne/etc/
, możesz po prostu ponownie połączyć,/etc/resolv.conf
aby wskazać/run/systemd/resolve/resolv.conf
plik, i wszystko powinno być w porządku:Powinieneś teraz móc edytować ustawienia nawet z Network Managera w Gnome. :)
Nie jestem pewien, czy to zadziała na starszych Ubuntu, ale działa na Ubuntu 17.10.
źródło
systemd-resolve --flush-cache
oryginalny połączony plik, najwyraźniej zostaje odcięty, powyższa odpowiedź przywraca oryginalną funkcjonalnośćEDYCJA MAJ 6,2016
Napisałem skrypt, aby zaktualizować wszystkie ustawienia połączeń systemowych w
/etc/Network-Manager/system-connections/
katalogu. 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ą dns ustawionego z grep i ustawia go z awk.Ponieważ dostęp do tych plików wymaga
sudo
dostępu, uruchom ten skrypt za pomocą,sudo
a następnie - uruchom ponownie menedżera sieciSkrypt w akcji:
ORYGINALNY POST Niektórzy użytkownicy wskazali, że DNS jest w jakiś sposób kontrolowany
dnsmasq
. To prawda. Mam do czynienia z nieco mniejszy problem, gdzie bez względu na to jak zmieniłemhead
lubbody
w/etc/resolvconf/resolv.conf.d
mój komputer nie może aktualnie dostęp internowany przez nazwę domeny - tylko pracy z adresami IP.To, co zrobiłem, to edycja
/etc/NetworkManager/NetworkManager.conf
pliku. Początkowo, to powiedział,dns=dnsmasq
ale zmieniłem go na adres:dns=208.67.222.222
. Chociaż w ten sposóbnm-tool
nie wspomina się o 208.67.222.222, nadal mogłem używać nazw domen, nie tylko adresów IP.Oto
NetworkManager.conf
jak teraz wygląda mój plik:UWAGA: Więcej informacji na temat mojego problemu i tego rozwiązania można znaleźć 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 moim domowym WiFi. Przeczytałem trochę dalej
man NetworkManager.conf
i okazuje się, żedns=
in[main]
jest faktycznie linią dla wtyczek, więc liniadns=dnsmasq
faktycznie dodaje wtyczkę dnsmasq do NetworkManagera.Moje rozwiązanie nadal działało, ale nie tak, jak się spodziewałem. Oto fragment strony man:
Tak więc, ustawiając,
dns=208.67.222.222
mogłem zasadniczo uniemożliwić NetworkManagerowi korzystanie z tej wtyczki, która w innym przypadku używałaby lokalnego serwera DNS (który najwyraźniej nie działa).źródło
Istnieją dwie metody
Metoda 1
Serwer DNS, którego chcesz użyć, można zmienić, aktualizując
head
plik w obszarze podresolv.conf.d
a następnie biegnij
Powyższe wygeneruje ogólny
resolv.conf
plik w/etc
katalogu. Wszystkie twoje prośby dotyczące rozwiązania zostaną wysłane na wyżej wymieniony serwer nazw. Rozwiązany.Są to jednak implikacje. W przypadku
resolvconf
bezpośredniego zapytania1.1.1.1
o rozdzielczość adresów nie ma mocy buforowania dostarczanej przez dnsmasq. Każda prośba trafi do1.1.1.1
Metoda 2
Jeśli nie chcesz, aby stało wyżej i wykorzystanie dnsmasq rezolucji DNS odnoszą tę odpowiedź. Odpowiedź jest po prostu opisana tutaj.
Dodaj następującą zawartość do
/etc/dnsmasq.conf
pliku.Następnie uruchom ponownie usługę dnsmasq
Wszystko będzie dobrze. Rozwiązany.
źródło
Prosty sposób na zmianę DNS:
Jeśli pojawią się problemy, zainstaluj
nano
:następnie ..
dns-nameservers
dns-nameservers 199.85.126.10 199.85.127.10
Mam nadzieję, że to najlepszy sposób, tak przy okazji, zrobiłem to na VPS.
źródło
na root:
dns=dnsmasq
na/etc/NetworkManager/NetworkManager.conf
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 powodują zmiany przedstawione powyżej:
Poczekaj 7/10 sekund, aby zakończyć proces restartu, sprawdź swoją konfigurację za pomocą „nslookup nist.gov”. Działa dobrze na Ubuntu LTS 14.04.
źródło
Uwaga: Podobnie jak większość odpowiedzi, ta zakłada użycie NetworkManager. Jednak w przeciwieństwie do większości innych odpowiedzi, to nie zakłada wykorzystanie
resolvconf
,dhclient
czy cokolwiek innego - strzeżcie się, że mogą one przejąć choć (patrz aktualizacji).Biorąc pod uwagę liczbę wyświetleń tego pytania, to niewiarygodne, że to 8-znakowe rozwiązanie nie zostało jeszcze opublikowane: zgodnie z
man NetworkManager.conf
,Dlatego dodaj
w
[main]
sekcji,/etc/NetworkManager/NetworkManager.conf
a następnie uruchom ponownie NetworkManager i nie będzie/etc/resolv.conf
już modyfikowany .Zauważ, że ustawienie
rc-manager=unmanaged
powinno być równoważnedns=none
, a ustawienierc-manager=symlink
to/etc/resolv.conf
jako łącze symboliczne może być lepszym pomysłem (czytaj wyżej wspomnianą stronę podręcznika).Aktualizacja :
Gdy NetworkManager przestał nadpisywać
/etc/resolv.conf
, pomyślałem, żedhcpcd
już zastępuje/etc/resolv.conf
go bezużytecznym pustym plikiem podczas uruchamiania. Stronadhcpcd.conf
pomocy pomogła, wystarczy dodaćw twoim
dhcpcd.conf
(moje jest w/etc/dhcpcd.conf
).źródło
Na moim serwerze Linux Centos7 najlepszym sposobem na zmianę tej opcji było użycie
polecenie, które nie jest sugerowane w żadnej odpowiedzi tutaj. W tym narzędziu możesz edytować serwery nazw, a kiedy zmienisz opcje menedżera sieci z tego narzędzia, zostaną one automatycznie zastosowanenmtui
/etc/resolv.conf
po ponownym uruchomieniu. Tutaj możesz znaleźć więcej informacji .źródło