DNS ustawiony na systemd's 127.0.0.53 - jak zmienić na stałe?

38

Niedawno zaktualizowałem do wersji 17.10. Kiedy próbuję przeglądać witrynę internetową lub pingować domenę, nie powiedzie się, że strony nie można rozwiązać.

network-adminpokazuje zawartość /etc/resolv.confbyćnameserver: 127.0.0.53

Jeśli zmienię to na 8.8.8.8 lub 208.67.222.222, wtedy wszystko będzie działać. Do momentu ponownego uruchomienia.

Po ponownym uruchomieniu lub wznowieniu serwer nazw zostaje zresetowany do 127.0.0.53.

Jak na stałe ustawić serwer nazw na coś, co działa?


Dla fanów systemowych, jeśli uruchomię systemd-resolve --status, dostanę

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Jeśli zastosuję się do porady podanej w tym pytaniu - DNS resetuje się po ponownym uruchomieniu. Ubuntu 17.10 - DNS nadal nie może rozwiązać.

Terence Eden
źródło
systemctl stop systemd-resolvedi systemctl mask systemd-resolvedpowinien załatwić sprawę :)
Shayan

Odpowiedzi:

28

Możesz zainstalować pakiet resolvconf, który zmodyfikuje sposób /etc/resolv.confbudowania podczas uruchamiania systemu.

sudo apt install resolvconf

Następnie możesz utworzyć lub zmodyfikować plik /etc/resolvconf/resolv.conf.d/tail. Jeśli umieścisz w tym pliku linię nameserver 8.8.8.8, ta linia zostanie dodana na końcu /run/resolvconf/resolv.confbootowania. /etc/resolv.confbędzie teraz symbolicznym linkiem do tego pliku.

oscar1919
źródło
4
To działa - dziękuję! Czy wiesz, czy jest jakiś sposób, aby sam 127.0.0.53 działał samodzielnie?
Terence Eden
1
Jestem dość nowy w tej sprawie. Właśnie próbowałem pozbyć się problemów z DNS podczas włączania / wyłączania VPN w ciągu ostatnich tygodni. Możesz spróbować sudo dpkg-reconfigure resolvconf. Próbowałem tego ostatnio, wyczyściłem plik ogona i na początku wydaje się, że działa.
oscar1919
@TerenceEden, jeśli chcesz, aby 127.0.0.53 działało samo (tak jak powinno), spójrz na moją odpowiedź: askubuntu.com/a/1083843/281191
intelfx
10

Poprawne rozwiązanie byłoby naprawić Systemd-rozdzielczej zamiast próbować leczyć migrenę z gilotyny.

To naprawdę miłe narzędzie, jeśli jest właściwie używane.

Sądząc po wynikach systemd-resolve --status...

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

... Twoje narzędzie menedżera sieci nie przekazuje konfiguracji DNS dla interfejsu do systemu-rozwiązany.

Na przykład najnowsze wersje NetworkManagera zrobiłyby to automatycznie, jeśli /etc/resolv.confdowiązanie symboliczne wskazuje wewnątrz /run/systemd/resolvelub do /usr/lib/systemd/resolv.conf. Alternatywnie, najnowsze wersje systemd-resolved starają się być kompatybilne z historycznym interfejsem resolvconf, instalując plik resolvconfbinarny komunikujący się z systemd-resolved.

Podczas gdy jedno z tych dwóch rozwiązań byłoby preferowane, jeśli szukasz szybkiego i brudnego rozwiązania, możesz po prostu skonfigurować systemd-resolved do globalnego korzystania z serwerów DNS:

$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>

Następnie uruchom ponownie systemd-resolved.servicelub uruchom ponownie .

intelfx
źródło
Przynajmniej dla mnie ta odpowiedź nie działa, używając Ubuntu 18.04, po zmianie wpisu „DNS” utrzymuje on numer 127.0.0.53
André M. Faria
1
@ AndréM.Faria dowiedz się, jak działa resolved. 127.0.0.53to adres lokalnego programu rozpoznawania kodów pośredniczących buforowania. Przekazuje żądania DNS na dowolne określone wcześniej serwery DNS.
intelfx
Czasami coś wiesz i po prostu zignoruj, tak, masz rację.
André M. Faria
1
Warto również zauważyć, że domyślnie systemd-resolvedbuforuje odpowiedzi DNS. Chociaż może to czasem być przydatne, w niektórych sytuacjach może powodować problemy. Usuń komentarz z cache=yeswiersza w pliku konfiguracyjnym w odpowiedzi i ustaw go na no.
Quentin Skousen
co faktycznie powoduje /etc/resolve.conf(lub tak naprawdę, na /run/resolvconf/resolv.confco wskazuje to pierwsze)? byłoby miło wiedzieć o testach, bez zakładanego ponownego uruchomienia. wszystko, co mogę powiedzieć, to to, że ponowne uruchomienie systemd-resolved.servicenie wydaje się załatwić
bbarker
8

Używam Lubuntu i Kubuntu 18.04. Problem DNS udało mi się rozwiązać w 2 krokach:

Pierwszy krok: Instalacja unboundi ustawić go zastąpić systemd-resolvedjako Grégoire C pokazuje tutaj .

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound

restart

Otwórz jako plik root /etc/NetworkManager/NetworkManager.conf

( sudo leafpad /etc/NetworkManager/NetworkManager.confw Lubuntu 18.04 lub w Kubuntu 18.04 SUDO_EDITOR=kate sudoedit /etc/NetworkManager/NetworkManager.conf)

i poniżej [main]wstaw tę linię:

dns=unbound

uruchom ponownie

Drugi krok: jeśli po ponownym uruchomieniu problem nadal nie został rozwiązany, tak jak w moim przypadku, uruchom menedżera plików jako root, przejdź do /etc, usuń resolv.confi utwórz nowy resolv.conf. Pozostaw to puste i uruchom ponownie system operacyjny. W moim przypadku po tym ponownym uruchomieniu problem zniknął.

W Kubuntu 18.04 nie możesz uruchomić Dolphin jako root, więc możesz najpierw przejść do /etci otworzyć terminal, a następnie wpisać sudo sui nacisnąć Enter, aby użyć go jako root, a następnie usunąć resolv.confza pomocą polecenia rm resolv.conf. Następnie możesz utworzyć nowy pusty plik na pulpicie, nazwać go resolv.confi stamtąd otworzyć terminal. Użyj sudo supolecenia, aby przejść do trybu rootowania dla terminala, a następnie skopiuj nowy resolv.confz pulpitu /etcna polecenie cp resolv.conf /etc.

Muszę dodać , że nie próbowałem zrobić drugiego kroku przed instalacją unbound, więc następnym razem zrobię to, aby zobaczyć, czy to wystarczy.

Калоян Грънчаров
źródło
Dlaczego nie edytować go jako root i usunąć zawartość?
Ballie,
@Ballie Na początku próbowałem tego, ale to nie pomogło. Również oryginał resolv.confz /etczostał pokazany jako jakiś skrót, co nie jest normalne, tak myślę. Dlatego postanowiłem go usunąć i odtworzyć, tworząc nowy pusty plik i nazywając go resolv.conf. I zadziałało. Z tego powodu napisałem powyżej, że następnym razem, gdy będę musiał ponownie zainstalować system operacyjny, spróbuję to zrobić najpierw, nie wykonując „pierwszego kroku” - aby sprawdzić, czy to wystarczy. Ale oryginalne resolv.confw /etcpotrzeby należy usunąć i odtworzyć w każdym razie - o tym jestem pewien.
Калоян Грънчаров
Właśnie wyłączyłem systemd-resolved.service i usunąłem link resolv.conf i utworzyłem go ręcznie, i zadziałało!
André M. Faria
8

działając w ramach systemdparadygmatu dodaj DNS do łącza / urządzenia

używając Ubuntu 17.10+ dodaj *.networkplik:

sudo nano /lib/systemd/network/100-somecustom.network:

100-somecustom.network (100 może być dowolną liczbą dla priorytetu i wymaga .networkrozszerzenia pliku):

[Match]
Name=wlo1 # the device name here

[Network] # add multiple DNS 
DNS=8.8.8.8
DNS=208.67.222.222

Następnie uruchom ponownie:

sudo service systemd-networkd restart

Zobacz także:

netplan apply

Następnie sprawdź:

systemd-resolve --status wlo1

Ze strony informacyjnej info systemd.network:

Dodatkowo /etc/systemd/network, katalogi „.d” można umieszczać w katalogach / lib / systemd / network lub / run / systemd / network . Pliki drop-in w / etc mają pierwszeństwo przed tymi w / run, które z kolei mają pierwszeństwo przed plikami w / lib. Pliki drop-in w dowolnym z tych katalogów mają pierwszeństwo przed głównym plikiem netdev, gdziekolwiek się on znajduje. (Oczywiście, ponieważ / run jest tymczasowe, a / usr / lib jest dla sprzedawców, jest mało prawdopodobne, aby drop-in był używany w jednym z tych miejsc).

Inne podejście wyłącza DNSStubListenerdo użytku z dnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

związane z:

jmunsch
źródło
Dziwne jest to, że stwierdziłeś, że DNSStubListener = false, ale faktyczna konfiguracja z komentarzem to DNSStubListener = tak, zwykle odwrotnością wartości „tak” jest „nie”, a nie „fałsz”, kto w przypadku „fałszu” był zwykle „ prawdziwe".
André M. Faria
Twoja odpowiedź na utworzenie pliku z rozszerzeniem .network nie zadziałała.
André M. Faria
2

W ten sposób zmieniam mój rekord dns w konfiguracji interfejsu.

$ vi /etc/netplan/50-cloud-init.yaml

Zmień adresy serwerów nazw, poprzednio było to .4, a potem zmieniłem na .3:

...
            nameservers:
                addresses:
                - 192.168.1.3
...

Zapisz konfigurację, a następnie zastosuj konfigurację:

$ sudo netplan apply

Następnie zrestartuj usługę resolvectl.

$ sudo systemctl restart systemd-resolved.service

Notatki: zrestartowałem serwer i zmiany, które wprowadziłem, pozostają nienaruszone. Używam resolvctl dnspolecenia do weryfikacji rekordu dns.

kapten
źródło
To jest właściwie poprawna odpowiedź. Dziwi mnie, że to nie jest przyjęte.
Toumal
0

Miałem pewne problemy z NordVPN, więc postanowiłem to dodać.

Ustalenia:
NordVPN określa /run/systemd/resolve/resolv.confustawienia DNS podczas łączenia.
NordVPN usuwa wszystkie ustawienia DNS /run/systemd/resolve/resolv.confpo rozłączeniu.
To powoduje, że serwer DNS przestaje działać (ponieważ nie ma jednego zestawu).

System wymaga ponownego uruchomienia, aby zresetować go do czegokolwiek. Standardowy restart usługi ( sudo systemctl restart systemd-resolved.service) nie działa.

Rozwiązanie obejścia tego:

sudo apt install resolvconf

Udaj się do /etc/resolvconf/resolv.conf.d/

cd /etc/resolvconf/resolv.conf.d/
sudo nano tail

Dodaj serwery nazw

nameserver 1.1.1.1
nameserver 1.0.0.1

Sprawdź następujące miejsca dla serwerów nazw, które mogły zostać ustawione:

/run/resolvconf/interface/original.resolvconf
/run/resolvconf/interface/systemd-resolved
/etc/resolvconf/resolv.conf.d/tail
/etc/resolvconf/resolv.conf.d/head
/etc/systemd/resolved.conf
/run/systemd/resolve/resolv.conf
/run/systemd/resolve/stub-resolv.conf

Sprawdź, które serwery DNS są używane z:

nslookup google.com

Server:         1.1.1.1
Address:        1.1.1.1#53
Eirik Rimehaug
źródło
0

Może trochę późno, ale wpadłem na ten problem. Muszę przyznać, że ręcznie konfigurowałem ustawienia sieciowe za pomocą cli przed, a nie przez wbudowanego menedżera sieci. Używam Ubuntu 18.04.

Tak więc po wyłączeniu, a następnie ponownym włączeniu usługi systemd.resolved.service, dla mnie zostało rozwiązane to błędne zachowanie losowej utraty konfiguracji DNS.

systemctl disable systemd.resolved.service
reboot

po ponownym uruchomieniu:

systemctl enable systemd.resolved.service
reboot

Jestem stosunkowo świeżym użytkownikiem Linuksa, więc musi być ktoś, kto może wyjaśnić, w jaki sposób i dlaczego to by zadziałało, ale warto wspomnieć, czy może pomóc innym.

Sjoerd
źródło
Spróbuj rozczarować, ale musi być coś, co zrobiłeś pomiędzy, które naprawiło problem. Operacje, które tutaj sugerujesz, mogą opuścić system tylko tak, jak były.
tishma
-1

Podczas korzystania z rozpoznawania nazw dhcp działa w systemie Ubuntu zgodnie z oczekiwaniami. Problemy zaczynają się, gdy chcesz stać. cat /etc/resolv.confpokaże, że twój dns to 127.0.0.53, a nie te, które masz w /etc/netplan/.yamlpliku. Aby to naprawić, musisz usunąć /etc/resolve.conflink i utworzyć nowy, wskazujący na/run/resolve/resolve.conf

Mikael Ljung
źródło
Edytuj swoją odpowiedź i napraw formatowanie ...
Yufenyuy Veyeh Dider
-2

Wymagało to trochę zabawy. Po zaktualizowaniu ustawienia uruchomiłem się ponownie. Posługiwać się:

ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

/etc/systemd/resolved.conf
DNS=8.8.8.8
Cache=no

System resolved failed
systemctl stop systemd-resolved
systemctl disable systemd-resolved

Gdy skomentujesz „prośbę” o

# domain-name, domain-name-servers, domain-search, host-name,

Dodaj ten wiersz do /etc/dhcp/dhclient.conf:

 supersede domain-name "cwillenterprise.com";

Edytuj plik konfiguracyjny i dodaj wpis. Dodatkowe nie zastąpią.

Dodaj wpisy do /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8
search "cwillenterprise.com"

Uruchom, aby wprowadzić zmiany

resolvconf -u
ogkiller
źródło
1
Witamy w Ask Ubuntu ! Proszę edytować swoją odpowiedź Aby użyć kodu formatowania kodu, który należy podać w postaci plików lub terminala. Nie poprzedzaj #„komentarzy” do kodu - oznacza to nagłówek w Markdown. Zawsze sprawdzaj podgląd swojego posta przed wysłaniem.
Melebius