これが私の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
nslookup
A レコードと 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
出力は、nslookup
Aレコード応答(最初の6行)を受け取り、AAAAレコードの待ち時間を超えたことを意味します。
この問題を「修正」する1つの方法は、その構成ファイルを配置してドメインに対する権限がdnsmasq
あることを示すことです。これで、次のように動作します。test
auth-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)
nslookup
今ping
答えてください。
また、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.
答え2
nslookupには3回の再試行と5秒の時間制限があるようです。これは15秒の遅延を説明します。インタラクティブモードで起動してnslookup
これを確認できます(名前を入力してEnterを押すだけです)。このモードでは、set all
使用されているすべてのオプション(およびその値)のリストを作成してインポートしますnslookup
。おそらくこれが最も簡単な部分でしょう。
nslookup
これが正解を与えると言われました。はい、しかし、DNSサーバー(/etc/resolv.confにあるサーバー)に接続することは127.0.0.53
答えではありません。dnsmasq
応答のアドレスが対応するDHCPサーバーの範囲内にあるため、応答は128.8.8.254のサーバーから来ます。
focal-250.test
ファイルにアドレスがない場合/etc/hosts
。あなたはそうではないようです。したがって、の観点からは、nslookup
送信されたアドレス要求に127.0.0.53
応答せずに再試行するように構成されています。
難しい部分は、サーバーがどのようにsystemd-resolved
機能するかを説明することです。ドメイン名が正規化されている場合、つまりなどの複数のポイントがある場合、検証は簡単で上流のexample.com
DNSサーバーに送信されます。128.8.8.254
そして192.168.1.1(これがローカルルータであると仮定)コマンドに示されているようにresolvectl
。しかし、使用した名前のように名前にドットがない場合、解像度focal-250
は可能まず、LLMNR、MulticastDNS、および/またはAvahiシステムに移動し、解決されていない場合は通常のDNSサーバーに移動します。読んでくださいポイント4.1はこちらこの質問を簡単に研究してください。
つまり、実際に確認したいDNSサーバーで短い名前が解決されていることを検出して確認する必要があります。 A dig @128.8.8.254 focal-250
、dig @192.168.1.1 focal-250
そしてdig @127.0.0.53 focal-250
どれが成功したのかを教えて、正しい答えを提供する必要があります。
注:どこかに誤ったインターフェース設定がありますens4
。ブリッジアドレスはに設定されていますが、192.168.4.183
そのインターフェイスのDNSサーバーはに設定されています192.168.1.1
。