如何调试 DNS 名称解析?(nslookup 有效,但 telnet 无效)

如何调试 DNS 名称解析?(nslookup 有效,但 telnet 无效)

我正在尝试连接到一个网站:

http://superuser.com.sixxs.org

我可以 ping 该地址:

C:\Users\Ian>ping /6 superuser.com.sixxs.org

Pinging ipv6.nginx.sixxs.net [2001:838:2:1::30:67] with 32 bytes of data:
Reply from 2001:838:2:1::30:67: time=257ms
Reply from 2001:838:2:1::30:67: time=176ms
Reply from 2001:838:2:1::30:67: time=161ms
Reply from 2001:838:2:1::30:67: time=164ms

Ping statistics for 2001:838:2:1::30:67:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 161ms, Maximum = 257ms, Average = 189ms

C:\Users\Ian>ping supersuer.com.sixxs.org
Ping request could not find host supersuer.com.sixxs.org.
  Please check the name and try again.

但我无法浏览它(在铬合金或者IE):

在此处输入图片描述

我也不能远程登录对它

C:\Users\Ian>telnet superuser.com.sixxs.org 80
Connecting To superuser.com.sixxs.org...Could not open connection to the host,
  on port 80: Connect failed

nslookup可以很好地解析名称,并具有权限记录和所有内容!

首先,我们刷新 DNS,以防有人认为这是由于 DNS 缓存造成的:

C:\Users\Ian>ipconfig /flushdns

Windows IP Configuration

Successfully flushed the DNS Resolver Cache.

现在回到查找:

C:\Users\Ian>nslookup superuser.com.sixxs.org
Server:  solo.avatopia.com
Address:  10.0.0.98

Non-authoritative answer:
Name:    ipv6.nginx.sixxs.net
Addresses:  2001:838:2:1:2a0:24ff:feab:3b53
          2001:960:800::2
          2001:1af8:4050::2
          2620:0:6b0:a:250:56ff:fe99:78f7
          2001:838:2:1::30:67
Aliases:  superuser.com.sixxs.org

所有这些地址都有效:

  • 我可以ping他们
  • 我可以telnet在他们的端口上
  • 我可以浏览铬合金(例如http://[2001:838:2:1::30:67])对他们来说

这个名字甚至可以在我手动调用 Windows API 函数 GetAddrInfo

为什么我该如何诊断ping、、telnet和做错了Chrome什么?Internet Explorer

笔记:Wireshark 现在没有帮助,因为 DNS 服务器(solo.avatopia.com)位于加密 VPN 链接的另一端;并且 WireShark 拒绝解密加密的 VPN 流量。

答案1

DNS 解析并不一定意味着 HTTP 可达性;就您而言,这实际上是问题的一部分。

sixxs.org答案全部CNAME带有 到 的DNS 查询ipv6.nginx.sixxs.net。例如,iamugly显然不可能是真实网站,因为没有顶级域名。

[mpenning@Bucksnort ~]$ dig +short iamugly.sixxs.org
ipv6.nginx.sixxs.net.
[mpenning@Bucksnort ~]$ dig +short google.com.sixxs.org
ipv6.nginx.sixxs.net.
[mpenning@Bucksnort ~]$ dig google.com.sixxs.org

; <<>> DiG 9.7.3 <<>> google.com.sixxs.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22229
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.sixxs.org.          IN      A

;; ANSWER SECTION:
google.com.sixxs.org.   3553    IN      CNAME   ipv6.nginx.sixxs.net.

;; AUTHORITY SECTION:
sixxs.net.              3316    IN      SOA     ns.paphosting.net. hostmaster.sixxs.net. 2012010601 86400 7200 1209600 86400

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon May 28 15:39:58 2012
;; MSG SIZE  rcvd: 133

[mpenning@Bucksnort ~]$

ipv6.nginx.sixxs.net只是一个转发流量的 HTTP 代理,因此只要其代理启动,就可以 ping 通,您就可以telnet访问它...

[mpenning@Bucksnort ~]$ telnet superuser.com.sixxs.org 80
Trying 2620:0:6b0:a:250:56ff:fe99:78f7...
Connected to ipv6.nginx.sixxs.net.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
[mpenning@Bucksnort ~]$

在您访问之后superuser.com.sixxs.orgsixxs.net它会将您重定向到ipv6gate.sixxs.net,并且他们会重写超级用户的 html 内容,并通过 发送页面上的所有链接foo.sixxs.org

在此处输入图片描述

有一些东西阻止您通过sixxs.org,它可能来自您路径上其他地方的 vpn 服务器、防火墙或透明 http 代理。

答案2

这是我的猜测关于正在发生的事情。

(我原本打算将其作为评论发布,但它太长了,所以我将其作为答案发布,并由您自己和/或其他人决定它是否正确。)

我认为该 ISP 已将其名称服务器配置为回复每个子域。

我尝试了一个随机 GUID,结果0937c1fa-15dc-4a3a-837c-b9ada0953a7e.sixxs.org解析(与 superuser.com.sixxs.org 相同的 IP 地址)

这意味着所有到 0937c1fa-15dc-4a3a-837c-b9ada0953a7e.sixxs.org 的流量都将发送给他们。当流量到达他们时,他们可能正在检查 http 主机标头以确定如何处理它。对于 0937c1fa-15dc-4a3a-837c-b9ada0953a7e.sixxs.org,我怀疑他们会直接忽略该请求,因为他们不太可能知道如何处理它。

对于 superuser.com.sixxs.org 的情况,您可能会认为他们应该将其重定向到 superuser.com,但这似乎不起作用。

我认为,他们的设置之外的任何人都不可能确切知道为什么这不起作用,但这可能是因为他们的一些内部映射错误并且它被发送到错误的目的地。

另一种可能性是,他们可能不会向所有人提供此服务,并且如果非订阅者尝试使用此地址,他们可能会忽略该请求。

底线是,我不太确定 telnet、Chrome 和 Internet Explorer 是否真的做错了什么,我建议在假设您的设置有任何问题之前先使用 sixxs.net 进行检查。

答案3

我遇到了类似的问题,以下是我尝试过的。

  1. 这可能与 Winsock 的 LSP 有关,请尝试LSP 修复找出导致错误的原因。
  2. 重置互联网协议 (TCP/IP)
  3. 运行sfc /scannow以修复由于文件损坏而可能出现的任何问题。
  4. 重置 WinSock netsh winsock reset
    5.虽然完全不相关,但尝试重置分支缓存netsh branchcache reset
    6.重置 IPv6 配置netsh int ipv6 reset
    7.尝试从设备管理器中删除并重新安装网络适配器

答案4

我不确定您是否只在一个网站上遇到问题,或者您无法连接到所有网站(并且使用不同的 PC 发布此信息),但如果您的浏览器中每个网站都出现 DNS 错误,并且您仍然可以连接并且可以 ping 东西,请尝试以下几个命令。虽然不一定总是其中之一,但我确实从未见过所有这些命令都无法解决您的问题。

netsh winsock reset catalog

netsh int ipv4 reset reset.log

netsh int ipv6 reset reset.log

ipconfig /release

ipconfig /flushdns

ipconfig /renew

ipconfig /registerdns

相关内容