在“Ubuntu 20.04.4 LTS”上平以及一个带有dnspython1.16.0 返回不存在的 URL 的 IP 地址。在 Windows 10 WSL 下使用“Ubuntu 20.04.4 LTS”时,不会发生这些错误。这些错误发生在运行多个 apache2.4 vhost 的专用服务器上。我得到例如:
ping akjdsla.com -c 1
PING akjdsla.com.com (45.11.57.36) 56(84) bytes of data.
64 bytes from comcomproxy1.com.com (45.11.57.36): icmp_seq=1 ttl=57 time=37.5 ms
--- akjdsla.com.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 37.460/37.460/37.460/0.000 ms
但
nslookup akjdsla.com
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find akjdsla.com: NXDOMAIN
nslookup akjdsla.com dns.google
Server: dns.google
Address: 2001:4860:4860::8888#53
** server can't find akjdsla.com: NXDOMAIN
和
dig akjdsla.com
; <<>> DiG 9.16.1-Ubuntu <<>> akjdsla.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33872
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;akjdsla.com. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Mar 17 16:17:49 CET 2022
;; MSG SIZE rcvd: 40
所以nslookup和挖按预期工作,同时平和dnspython失败。行为取决于查询的顶级域:如果为不存在的 URL 返回 IP,则对于某些 TLD,它将始终是相同的 IP。我得到:
com 45.11.57.36 comcomproxy1.com.com
de 54.153.56.183 ec2-54-153-56-183.us-west-1.compute.amazonaws.com
eu 54.153.56.183 ec2-54-153-56-183.us-west-1.compute.amazonaws.com
org 34.206.39.153 ec2-34-206-39-153.compute-1.amazonaws.com
另一方面:对于顶级域名网, edu, fr, ca, biz,平和dnspython 识别当 URL 为不存在的. 如果 URL 中 TLD 不存在,dnspython 会崩溃它被查询。
一位读者建议,应该考虑域名服务器可能会发布不存在的域名的“虚假 IP”来宣传自己的服务。在这种情况下,IP 应该随域名服务器一起更改,但事实并非如此。由于恶意软件风险,“comcomproxy1.com.com”背后的网站被“uBlock Origin”阻止。ec2-34-206-39-153.compute-1.amazonaws.com 被重定向到https://aws.amazon.com/ec2-54-153-56-183.us-west-1.compute.amazonaws.com 不会指向 HTTPS 站点。此外,这也不能解释不同 DNS 查询程序的不同行为。因此,广告假设在我看来似乎不太合理。
我们托管 .com、.de、.eu 和 .org 域名。因此我怀疑托管的 TLD 可能存在某种联系。然而, 我们还托管一个.net领域。
重启没有用。sudo systemd-resolve --flush-caches
没有用。我注意到DNS缓存大小始终保持在1并且没有达到0。
有什么想法我可以在哪里寻找此错误的原因?
由于nslookup/挖掘一方面ping/dnspython另一侧的情况不同,可以假设在这些情况下使用了(至少略有)不同的 OS API 访问。任何有关这些差异的提示也会有所帮助。