为什么nslookup和挖掘给我一个“警告:ID不匹配…得到0”错误?

我正在尝试解决一些持续性连接问题,并且在使用dig或nslookup时,我经常会收到以下错误消息。

bash$ nslookup > www.google.com ;; Warning: ID mismatch: expected ID 36298, got 0 ;; Warning: ID mismatch: expected ID 36298, got 0 ;; Warning: ID mismatch: expected ID 36298, got 0 bash$ dig www.google.com ;; Warning: ID mismatch: expected ID 34149, got 0 ;; Warning: ID mismatch: expected ID 34149, got 0 ;; Warning: ID mismatch: expected ID 34149, got 0 ; <<>> DiG 9.8.3-P1 <<>> www.capitalone360.com ;; global options: +cmd ;; connection timed out; no servers could be reached 

任何人都可以阐明这个错误信息是什么意思,特别是“得到0”部分?

这意味着nslookupdig收到一个ID为零的回复,而不是它期望的ID。 作为防止伪造DNS答复的一部分,每个DNS查询都包含一个ID,通常是随机select的。 DNS服务器将ID复制到回复中,允许客户端匹配对查询的回复,并防止接受伪造的DNS回复。

这可能是由于DNS服务器损坏或DNS转发或重写scheme损坏造成的。 这也可能是由于欺骗性的DNS回复攻击造成的,尽pipe这不太可能。

出于好奇,我在apple.stackexchange.com以及SF的许multithreading中遇到了这个解决scheme。

 sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist 

运行这些命令是否解决了您的问题?

资源

  • DNS名称查找(是SSH)雪豹升级后无法使用
  • nslookup的作品,ping和SSH不 – OS X的狮子10.7.3