nslookupが応答を返した後にタイムアウトするのはなぜですか?

nslookupが応答を返した後にタイムアウトするのはなぜですか?

これが私のnslookupが行うことです。

ubuntu@ca:~$ time nslookup focal-250
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   focal-250.test
Address: 128.8.8.187
;; connection timed out; no servers could be reached



real    0m15.024s
user    0m0.005s
sys     0m0.018s

最初の6行(つまり正しい応答)がすぐに印刷され、15秒の「タイムアウト」が待ちます。同様の機能pingも同じです。 15秒間一時停止してから操作を開始します。

これは systemd-resolved を実行する Ubuntu 20.04 LTS システムです。唯一の奇妙なことは、dnsmasqインターフェイスの1つからネームサービスを受信し、そのインターフェイスのアドレスが独自のネームサーバーとして構成されていることです。

ubuntu@ca:~$ resolvectl 
Global
       LLMNR setting: no                  
MulticastDNS setting: no                  
  DNSOverTLS setting: no                  
      DNSSEC setting: no                  
    DNSSEC supported: no                  
          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 (ens5)
      Current Scopes: DNS        
DefaultRoute setting: yes        
       LLMNR setting: yes        
MulticastDNS setting: no         
  DNSOverTLS setting: no         
      DNSSEC setting: no         
    DNSSEC supported: no         
  Current DNS Server: 128.8.8.254
         DNS Servers: 128.8.8.254
          DNS Domain: test       

Link 2 (ens4)
      Current Scopes: DNS         
DefaultRoute setting: yes         
       LLMNR setting: yes         
MulticastDNS setting: no          
  DNSOverTLS setting: no          
      DNSSEC setting: no          
    DNSSEC supported: no          
  Current DNS Server: 192.168.1.1 
         DNS Servers: 192.168.1.1 
          DNS Domain: freesoft.org
ubuntu@ca:~$ ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens4             UP             192.168.4.183/24 fe80::e2c:d2ff:fe67:0/64 
ens5             UP             128.8.8.254/24 fe80::e2c:d2ff:fe67:1/64
ubuntu@ca:~$ tail -5 /etc/dnsmasq.conf 
listen-address=128.8.8.254
bind-interfaces
dhcp-range=128.8.8.101,128.8.8.200,12h
dhcp-authoritative
domain=test
ubuntu@ca:~$ tail -4 /etc/resolv.conf 

nameserver 127.0.0.53
options edns0 trust-ad
search test freesoft.org

「.test」ドメインに対するクエリに応答する私が望むことをしていますが、応答を受信して​​から15秒間応答しなかった理由を理解できません。

ベストアンサー1

nslookupA レコードと AAAA レコードの両方が照会されるため、A クエリーがすぐに返され、AAAA が返されない場合、nslookup即時に応答が印刷され、タイムアウトが発生します。

dnsmasq以下は、128.8.8.254のサーバーがさまざまな種類のクエリに応答する方法を示す表です。

dig @128.8.8.254 A focal-250          immediate success (A record)
dig @128.8.8.254 A focal-250.test     immediate success (A record)
dig @128.8.8.254 AAAA focal-250       immediate SERVFAIL
dig @128.8.8.254 AAAA focal-250.test  15 second timeout, no response

出力は、nslookupAレコード応答(最初の6行)を受け取り、AAAAレコードの待ち時間を超えたことを意味します。

この問題を「修正」する1つの方法は、その構成ファイルを配置してドメインに対する権限がdnsmasqあることを示すことです。これで、次のように動作します。testauth-zone=test

dig @128.8.8.254 A focal-250          immediate success (A record)
dig @128.8.8.254 A focal-250.test     immediate success (A record)
dig @128.8.8.254 AAAA focal-250       immediate SERVFAIL
dig @128.8.8.254 AAAA focal-250.test  immediate NOERROR (no records)

nslookupping答えてください。

また、dnsmasq同じ理由で「特権ある」ものにすることが役に立つと思いますin-addr.arpa。したがって、タイムアウトの代わりにすぐにNOERRORを返します。このsystemd-resolvedサービスは、何も応答しないサーバーではなく、応答を記録するサーバーからの応答を使用しているようです。

ubuntu@ca:~$ dig +short @128.8.8.254 -x 18.165.83.71
ubuntu@ca:~$ dig +short @192.168.1.1 -x 18.165.83.71
server-18-165-83-71.iad55.r.cloudfront.net.
ubuntu@ca:~$ dig +short @127.0.0.53 -x 18.165.83.71
server-18-165-83-71.iad55.r.cloudfront.net.

おすすめ記事