nslookup не удалось, но SystemD-разрешение работает

684
Richard Collins

Это странная проблема, на которой я провел весь день. Было бы здорово, если бы кто-то мог пролить свет на это.

Проблема проявляется как проблема с разрешением имен, но я не уверен, что это основная причина:

# host www.google.com ;; connection timed out; no servers could be reached 

пока так скучно, но подождите!

#systemd-resolve www.google.com www.google.com: 209.85.202.103 209.85.202.106 209.85.202.105 209.85.202.104 209.85.202.147 209.85.202.99 

Просто проблема в resolv.conf, верно?

# This file is managed by man:systemd-resolved(8). Do not edit. # # 127.0.0.53 is the systemd-resolved stub resolver. # run "systemd-resolve --status" to see details about the actual nameservers. nameserver 127.0.0.53  search xxx.uk xyz 

Таким образом, система использует решатель systemd?

#dig @127.0.0.53 www.google.com ; <<>> DiG 9.10.3-P4-Ubuntu <<>> @127.0.0.53 www.google.com ; (1 server found) ;; global options: +cmd ;; connection timed out; no servers could be reached 

Хорошо, так что, если системный распознаватель говорит, что это на 127.0.0.53, почему он не отвечает.

#sudo netstat -lupn | grep 127 udp 0 0 127.0.0.53:53 0.0.0.0:* 1679/systemd-resolv 

Если он не слушает, что делает systemd-resolv?

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 20 (veth10858e2) Current Scopes: LLMNR/IPv6 LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no  Link 14 (vnet0) Current Scopes: LLMNR/IPv6 LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no  Link 13 (virbr0-nic) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no  Link 12 (virbr0) Current Scopes: LLMNR/IPv4 LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no  Link 11 (docker0) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no  Link 10 (docker_gwbridge) Current Scopes: LLMNR/IPv4 LLMNR/IPv6 LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no  Link 3 (em2) Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 192.168.100.1 192.168.100.2 192.168.100.3 192.168.100.4 DNS Domain: cqp  Link 2 (em1) Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: xxx.xxx.x.xx xxx.xxx.x.xx DNS Domain: xxx.uk 

У меня есть несколько серверов, все они работают на современном Ubuntu хитро, эта проблема перемещается между серверами в процессе, чтобы попытаться это исправить.
Они являются частью роя Docker и удаления, а затем повторное добавление исправить проблему в один момент.


Я включил отладку с разрешением systemd, но при запросе не было никакого вывода.

1
Возможно, ваш брандмауэр блокирует это? grawity 6 лет назад 0
Возможно, вы правы, но я не вижу правила, которое могло бы на него повлиять - я не понимаю, как система решает, что спрашивать, я подумала, что она прочитала resolv.conf, куда отправлять запрос. Richard Collins 6 лет назад 0
nslookup - это не "система". systemd-resolctl не является "системой". Они оба используют более прямой подход, чем «система», и оба используют разные API (systemd-resolctl использует D-Bus, а не UDP.) grawity 6 лет назад 0
Я знаю, что это в конечном итоге сводится к gethostbyname (), что является причиной сбоя, как это решает, как разрешить адрес, если он не использует 127.0.0.53, как говорится в resol.conf? Richard Collins 6 лет назад 0
Я хотел сказать, что ** это не ** сводится к gethostbyname (). Инструмент `nslookup` по-прежнему использует resolv.conf, но на самом деле говорит непосредственно на DNS. И инструмент `systemd-resol` вообще не говорит по DNS, он говорит по D-Bus. grawity 6 лет назад 0

1 ответ на вопрос

1
Neil Smith

Я нашел этот ответ в Hacker News, который предложил использовать ссылки /etc/resolv.confна /run/systemd/resolve/resolv.conf:

sudo rm /etc/resolv.conf sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf 

Это сработало для меня. Я не думаю, что мне пришлось перезапускать какие-либо службы после воссоздания символической ссылки.

Спасибо, но это уже так. Richard Collins 5 лет назад 0

Похожие вопросы