获取WAN IP:HTTP和DNS之间的区别

时间:2016-04-16 17:28:17

标签: linux http networking dns wan

传统上,我总是有一个别名/功能,可以从CLI轻松访问我的WAN IP:

$ type -a whatismyip 
whatismyip is a function
whatismyip () 
{ 
    curl ipv4.icanhazip.com
}

这个别名是多年前创建的,可能使用不同的域,但始终使用HTTP。

最近我发现越来越频繁地引用单行,通过DNS找到相同的信息。

但它真的一样吗?

在写这篇文章的时候,我正在使用4G网络共享,而且协议之间的结果也不同。

更令人惊讶的是,它们在DNS服务器之间也存在差异。

有趣的是,ns1.google.com8.8.8.8的结果不同。

$ whatismyip 
92.251.255.11

$ dig +short myip.opendns.com @resolver1.opendns.com
178.167.254.133

$ dig TXT +short o-o.myaddr.l.google.com @8.8.8.8
"74.125.73.77"
"edns0-client-subnet 178.167.255.120/32"

$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
"178.167.255.120"

$ ifconfig | grep 'inet addr:'
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet addr:192.168.42.125  Bcast:192.168.42.255  Mask:255.255.255.0
          inet addr:10.47.206.109  Bcast:10.63.255.255  Mask:255.192.0.0

任何人都有部分细节解释这个的精神? :)

~~ 编辑:为了澄清,我在某种程度上尝试了上述所有命令,并提供了一致的结果。~~

~~ EDIT2 :我原本忘记发布whatismyip结果,但没有一个DNS查询与HTTP匹配。我正在尝试重现它,但未成功。我必须回到咖啡馆:)~~

EDIT3 :我回到那里获得了新数据。与上次一致!

1 个答案:

答案 0 :(得分:0)

您提出的两个DNS查询:

$ dig +short myip.opendns.com @resolver1.opendns.com
$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com

应该返回相同的地址:您的外部IP。也许您的外部IP在您的请求之间发生了变化,这就是您获得不同结果的原因。 它不是DNS协议的任何部分,而是由返回发起查询的IP的DNS服务器实现的技巧。列出了这些和其他一些DNS技巧in this post

另一方面:

$ dig TXT +short o-o.myaddr.l.google.com @8.8.8.8

无法提供客户端的IP,因为8.8.8.8不是o-o.myaddr.l.google.comns1.google.com)的权威DNS服务器,因此它不会直接获取您的IP并且响应您正在看到的是DNS协议允许的尽力而为的近似(逐行描述):

  1. TXT记录的权威服务器联系的DNS解析程序的IP地址。
  2. 如果可用,则代表DNS解析程序进行查询的客户端(在本例中为您)的子网(edns-client-subnet)。
  3. 有关edns-client-subnet的详细信息,请阅读this article