DNS na systemd 127.0.0.53 ignoruje niektóre wyszukiwania


14

Wygląda na to, że DNS systemd uwielbiany w wersji 127.0.0.53 działa, chyba że pytam o maszyny lokalne według nazwy. Ale jeśli zapytam o nie i konkretnie podam lokalny serwer DNS (mój router), wtedy otrzymam właściwą odpowiedź. Ale plik konfiguracyjny mówi, że używa również routera jako adresu wyszukiwania. jakieś pomysły?

Używam Ubuntu 18.04 na moim laptopie Dell.

Niepoprawne wyniki:

$ nslookup web1

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find web1: SERVFAIL

Również zawodzi

$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found

Prawidłowe wyniki:

$ nslookup web1 192.168.1.1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

Informacje o konfiguracji systemd-resolver

$ systemd-resolve --status

Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 3 (wlp3s0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.1
          DNS Domain: wp.comcast.net

Link 2 (enp2s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Informacje o konfiguracji NetworkManager

$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Jak więc uzyskać nslookup, aby zwrócił prawidłową odpowiedź? Link 3 wydaje się być poprawną informacją (moje połączenie Wi-Fi), a mój DNS na routerze zwraca prawidłową odpowiedź, ale lokalna pamięć podręczna nigdy nie próbuje wyszukać adresu (a przynajmniej tak się wydaje).


Sprawdź ten post i sprawdź, czy to rozwiąże problem: askubuntu.com/questions/1034064/…

Nie mam dns = dnsmasq w moim pliku konfiguracyjnym. Aktualizuję moje pytanie, aby to pokazać.
schworak

Którą wersję Ubuntu używasz i czy możesz również zaktualizować swój post za pomocą konfiguracji IP?

Używam Ubuntu 18.04 na laptopie Dell.
schworak

mógłby plz spróbowaćnslookup -i wlp3s0 web1
cmak.fr

Odpowiedzi:


9

Twój plik resolv.conf nie wskazywał niewłaściwego miejsca - domyślnie ../run/systemd/resolve/stub-resolv.conf jest tam, gdzie powinien wskazywać.

Problem polega na tym, systemd-resolvedże nie przekazuje nazw DNS bez kropek. Najwyraźniej działa to „zgodnie z przeznaczeniem”. Zobacz ten problem github, który stwierdza, że ​​„rozwiązany nigdy nie pozwoli na wycieki pojedynczej etykiety na DNS emisji pojedynczej”.

Czy zgadzasz się z rozumowania w tej kwestii github, nie jest to sposób, aby to naprawić. Nie wymaga nawet wprowadzania zmian w domyślnej konfiguracji na komputerze Ubuntu:

  1. Po pierwsze, DNS twojej sieci LAN musi mieć nazwę domeny.

    Jeśli używasz dnsmasq, dodaj następujące informacje /etc/dnsmasq.confna swoim serwerze DNS:

    expand-hosts
    domain=your-domain # replace "your-domain" with domain of your choice
    

    Powinieneś być teraz w stanie rozpoznać nazwy hostów LAN, jeśli dodasz domenę:

    nslookup web1.your-domain
    
  2. Po drugie, upewnij się, że nazwa domeny LAN jest również ustawiona na serwerze DHCP, jeśli jest inna niż serwer DNS. Na moim serwerze DHCP (moim routerze) to ustawienie nazywa się po prostu „nazwą domeny”.

    Jeśli następnie odnowisz dzierżawę DHCP w polu Ubuntu, powinna pojawić się dyrektywa wyszukiwania w /run/systemd/resolve/stub-resolv.conf:

    nameserver 127.0.0.53
    search your-domain
    

Teraz wyszukiwanie web1spowoduje rozwinięcie go do web1.your-domain, który następnie rozwiąże za pomocą DNS.

$ nslookup web1
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   web1.your-domain
Address: 192.168.1.107

Pamiętaj, że jeśli używasz digzamiast nslookup, digdomyślnie nie używa ścieżki wyszukiwania - użyj jej +searchopcji, aby to włączyć.


Przed ponownym uruchomieniem po prostu sprawdził web1.mydomain.com. Ale oczywiście wyszukiwanie tylko web1 nie działało. Więc zrestartowałem się i przez całe życie nie mam pojęcia, gdzie wybiera domenę Comcast, ale teraz, gdy szukam web1, odpowiada prawidłowym adresem IP, ale pokazuje domenę Comcast zamiast mojej domeny. Rozwiązuje, więc nie jestem zbyt zmartwiony, ale co do cholery ????
schworak

@schworak Weird! Czy Twój serwer DHCP jest również modemem Comcast? Czy widzisz tę domenę wyświetlaną w /etc/resolv.conflub w danych wyjściowych jednego nmcli -g alllub systemd-resolve --status? Może spróbuj spojrzeć na to, co znajduje się w Twojej dzierżawie DHCP ?
Laurence Gonsalves,

To nie jest modem Comcast. Mam router SysLink z uruchomionym DDWRT. Ustawienia Comcast zostały całkowicie zastąpione. Nazwa comcast pojawia się w pliku resolv.conf, który jest automatycznie generowany podczas uruchamiania. Nie martwię się tym zbytnio, ale to dziwne.
schworak

@LaurenceGonsalves Dzięki tonie za link do wydania Github. Znalazłem obejścia tego problemu, ale pomogło mi to ustalić główny problem.
Gregory Arenius

19

Znalazłem poprawkę, która zadziałała dla mnie.

mój plik resolv.conf wskazywał niewłaściwe miejsce. To wydaje się być błędem w Ubuntu, ponieważ zdarzyło się to na moim laptopie (maszynie, na której po raz pierwszy zauważyłem ten problem) i na świeżej instalacji Ubuntu 18.04 Server.

Domyślny

$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Apr 26 12:07 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Usunąłem to i wskazałem właściwy plik. Po ponownym uruchomieniu rozwiązało to mój problem. Udało mi się nawet przełączać sieci na laptopie, a DNS przełączał się poprawnie. Oczywiście w sieciach zewnętrznych nie mogę rozwiązać żadnego z moich lokalnych komputerów, ale jest to oczekiwane. Gdy tylko przełączę się z powrotem do sieci lokalnej, wszystkie komputery lokalne zostaną poprawnie rozwiązane, ponieważ moim routerem jest DNS.

Poprawka

$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 32 May 29 08:48 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

$ sudo reboot

Potem wszystko działało tak, jak się spodziewałem i 127.0.0.53 już nie jest używane.

Prawidłowe wyniki

$ nslookup web1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

$ nslookup google.com

Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.7.174
Name:   google.com
Address: 2607:f8b0:4004:80e::200e

Zgłoś ten błąd za pomocą ubuntu-bug resolvconf.
Chai T. Rex

Kiedy zaczynam wysyłać, mówi resolvconf (niezainstalowany). Czy resolvconf i systemd-resolver to samo?
schworak

systemd-resolvejest dostarczany przez systemdpakiet , więc spróbuj ubuntu-bug systemdzamiast tego.
Chai T. Rex

Dzięki! Nigdy wcześniej nie korzystałem z tej funkcji zgłaszania błędów. Bardzo dobrze.
schworak

1
Wow, to jest szalone. Dziękuję Ci. Czy ten błąd kiedykolwiek został naprawiony? Czy jest to błąd specyficzny dla Dockera? Myślę, że resolv.confjest skonfigurowany w ten sposób dla sieci DNS mostu dokującego, prawda?
void.pointer
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.