Wyszukane w systemie Ubuntu 17.04 wyszukiwania DNS losowo kończą się niepowodzeniem

38

Uaktualniłem do Ubuntu 17.04 i wydaje się, że teraz ma nowy mechanizm rozpoznawania nazw DNS po raz pierwszy wprowadzony w Ubuntu 16.10.

Otrzymuję teraz błędy wyszukiwania DNS w 50% przypadków. Każde inne połączenie z nslookup kończy się niepowodzeniem, a połowa połączeń jest w porządku, a połowa daje to:

watch -n 1 nslookup google.com

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL

Z tego, co rozumiem, ten adres IP serwera DNS jest teraz używany do reprezentowania rozwiązania systemd, który dokonuje pewnego rodzaju wyszukiwania meta, aby uniknąć spowolnienia zapytań DNS (czy coś takiego ...). Widzę dokładnie to samo zachowanie na dwóch komputerach, które zaktualizowałem do 17.04 w ostatnim tygodniu.

Masz pojęcie, na czym polega problem i właściwy sposób jego rozwiązania?

Przed aktualizacją wszystko działało dobrze (od 16.04 lub 16.10, nie pamiętam które, przepraszam). Myślałem, że 17.04 było wydaniem LTS, ale teraz widzę, że podskoczyłem z pistoletu i nie będzie uważany za stabilny aż do kwietnia. A więc jestem tu.

Warto również zauważyć ... wydaje się, że przeglądarki nie wykazują problemów, ale nslookup, ping, git itp.

nastrój
źródło
2
Wskazówka na przyszłość: wersje Ubuntu to rok, w którym wyjdzie .w miesiąc, w którym zostanie wydane. (Więc w twoim przypadku będzie to 04/ 17)
timotree
Wygląda na to, że rozwiązany przez system zatłoczenie w dystrybucji powoduje problemy innych ludzi .
moodboom

Odpowiedzi:

46

Ubuntu 17.04 nie może rozpoznać serwerów DNS z obsługą DNSSEC od 18.04.2017. Wyłącz DNSSEC za pomocą tego demona:

sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf

Opcjonalnie ponownie skonfiguruj resolvconf, jeśli pomieszałeś go (powiedz „tak”, aby „przygotować /etc/resolve.conf do aktualizacji dynamicznych?”):

sudo dpkg-reconfigure resolvconf

Uruchom ponownie systemd rozwiązany:

sudo systemctl restart systemd-resolved

Twój DNS powinien zacząć działać. Możesz to sprawdzić, próbując systemd-resolve www.google.comzobaczyć odpowiedź.

Sajad Bahmani
źródło
Dziękuję za odpowiedź - czy możesz wyjaśnić, co robi?
bertieb
Ubuntu 17.04 nie może (aż tutaj) rozpoznać serwera DNS z obsługą DNSSEC. Wyłączam DNSSEC za pomocą tego demona.
Sajad Bahmani
Dzięki, czy możesz edytować to wyjaśnienie w swojej odpowiedzi? :)
bertieb
To rozwiązanie nie działało dla mnie - po ustawieniu tego, za każdym razem, gdy przeprowadzam wyszukiwanie za pierwszym razem, pojawia się błąd SERVFAIL, po kilku próbach udaje się, a następnie wyniki są buforowane.
Guss
1
@SamuelL. jeśli chodzi o tee, to tylko fantazyjny sposób na wydrukowanie czegoś i jednoczesne przesłanie go do pliku. Zazwyczaj możesz przekierować dane wyjściowe do pliku za pomocą> [znak większy niż], ale wtedy nie zobaczysz danych wyjściowych. Tee pozwala przejść do obu miejsc. Resolvconf „konfiguruje rozwiązanie”.
moodboom
12

Przełączałem się między zarządzaniem systemd a ręcznym zarządzaniem /etc/resolv.conf i nie znalazłem jeszcze systemowego mechanizmu rozwiązywania DNS.

Najwyraźniej jest co najmniej jeden błąd libnss w Ubuntu 16.10 i prawdopodobnie nadal w 17.04. Istnieje wiele osób z problemami DNS, odkąd system Ubuntu 16.10 włączył systemd rozwiązany, oto jedna analiza, a tutaj jest obejście innej osoby. Żadne z nich nie działało dla mnie, dopóki ręcznie nie nadpisałem /etc/resolv.conf za pomocą serwerów DNS Google.

nameserver 8.8.8.8   << or another if you don't trust google
nameserver 8.8.4.4

Jest to całkowicie poprawne rozwiązanie , jeśli nie potrzebujesz dynamicznej konfiguracji DNS. Tylko upewnij się, że zatrzymałeś i wyłączyłeś systemd rozwiązany:

sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
nastrój
źródło
Zmiana na resolveconf nie pomogła w moim problemie, jak wrócić do korzystania z systemd-rozwiązanego? (Dzięki)
Edward Moffett,
1
Spróbuj:systemctl enable systemd-resolved.service && systemctl start systemd-resolved.service
moodboom 17.07.17
1
Stary, właśnie uratowałeś mój system !! BRAVO
rewolucyjny
Dobrze pracował w 18.04
André M. Faria
4

Ubuntu 17.04 i inne dystrybucje obejmują systemd, w tym systemd-resolved, który poddaje użytkowników raczej ciężkiej rozdzielczości DNS.

  • Jak wspomniano w odpowiedzi SjB, obsługa DNSSEC może powodować problemy.
  • systemd-rozwiązany wysyła polecenia ping do wszystkich programów rozpoznawania nazw DNS, aby mógł korzystać z najszybszego. Może to powodować problemy z VPNami itp. W bardziej złożonych środowiskach.
  • Certyfikaty serwera DNS są zweryfikowane, miałem błędy, jeśli mój zegar jest przekrzywiony.

Nie sądzę, że to koniecznie ZŁA zmiana, to po prostu DUŻO zmian. Spróbuję zaktualizować i rozszerzyć tę odpowiedź, gdy dowiem się więcej.

nastrój
źródło
4

Mówiąc wprost, wystarczy mieć wiersz „DNSSEC = no” w sekcji [Rozwiąż] pliku /etc/systemd/resolved.conf.

https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1682499/

John Ball
źródło
Dzięki za link do poprawki. Wartość domyślna zostanie zmieniona z powrotem na DNSSEC = no w nadchodzących wersjach aktualizacji, co sprawi, że ten konkretny problem zniknie.
moodboom
1

wystarczy dodać serwer nazw /etc/systemd/resolved.conf DNS = 194.109.xxx.xxx (na routerze, zewnętrzny serwer nazw)

systemctl uruchom ponownie systemd-rozwiązany

nie trzeba zmieniać rand z 3 na 2, nie trzeba zmieniać ustawienia dnssec na off

kurwa
źródło
Niestety, to samo nie rozwiązuje problemu „nieudane żądanie”.
moodboom
Zgadzam się z @moodboom, to też mnie nie rozwiązuje.
André M. Faria