我有很多 Raspberry Pi 系统,它们位于我无法控制的不同网络中。
最近我发现在一个网络有时但并非总是第一个 DNS 查找失败,但第二个能够解析该名称:
pi@pi:~ $ ping api.twilio.com
ping: unknown host api.twilio.com
pi@pi:~ $ ping api.twilio.com
PING nlb-api-public-c3207ffe0810c880.elb.us-east-1.amazonaws.com
(18.211.224.155) 56(84) bytes of data.
...
api.twilio.com 只是一个例子,我也可以用其他域名复制它,例如谷歌网站。
我本来希望查找可能会给我更好的提示:
pi@pi:~ $ ping api.twilio.com
ping: unknown host api.twilio.com
pi@pi:~ $ nslookup api.twilio.com
Server: 127.0.0.1
Address: 127.0.0.1#53
** server can't find api.twilio.com: REFUSED
pi@pi:~ $ ping api.twilio.com
PING nlb-api-public-c3207ffe0810c880.elb.us-east-1.amazonaws.com (18.208.54.140) 56(84) bytes of data.
^C
--- nlb-api-public-c3207ffe0810c880.elb.us-east-1.amazonaws.com ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3106ms
pi@pi:~ $ nslookup api.twilio.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
api.twilio.com canonical name = virginia.us1.api-lb.twilio.com.
virginia.us1.api-lb.twilio.com canonical name = nlb-api-public-c3207ffe0810c880.elb.us-east-1.amazonaws.com.
Name: nlb-api-public-c3207ffe0810c880.elb.us-east-1.amazonaws.com
Address: 18.212.47.248
Name: nlb-api-public-c3207ffe0810c880.elb.us-east-1.amazonaws.com
Address: 18.211.224.155
Name: nlb-api-public-c3207ffe0810c880.elb.us-east-1.amazonaws.com
Address: 18.208.54.140
我可以在各种系统上重现该行为,但并非总是如此。有时,查找似乎可以工作一段时间,然后一段时间后,该行为再次出现(我此时的猜测是,这可能是在 DNS 租用时间之后?)。
我的问题是,是否有更好的方法来调查为什么第一次查找有时无法正常工作?或者更好的是,如果有人暗示可能会导致问题的原因是什么?
答案1
[是否有]更好的方法来调查为什么第一次查找有时无法正常工作?
- 找出哪个 DNS 服务器正在侦听 127.0.0.1。
- 如果尚未打开日志记录,请打开其日志记录并重复测试用例。
- 查看它的日志。
一个称职的 DNS 服务器软件会记录它正在执行的后端事务(发送什么查询和接收什么响应)以及从缓存中提取什么。它还可能告诉您为什么它第一次拒绝前端请求。
诊断问题时阅读日志。
答案2
DNS 按照先回答者的方式进行工作。因此,如果您的第一个 DNS 列表找不到 IP 地址,它会将其传递给第二个 DNS。如果时间太长,就会超时。
我建议检查您的 DNS 是否正常工作,方法是单独添加两台 DNS 服务器(0.0.0.0)作为辅助服务器,以测试哪一个出现故障。无论是哪一个,都可能会查看 127.0.0.1 而不是 DNS。 OpenDNS 代理可以做到这一点。检查您的手动 DNS 配置。 ifconfig -a 将显示完整的 IP 配置,或 ip ad -a。