Linux 获取广域网IP:HTTP和DNS之间的区别
一、 传统上,始终具有别名/功能,以便从CLI轻松访问我的WAN IP:Linux 获取广域网IP:HTTP和DNS之间的区别,linux,http,networking,dns,wan,Linux,Http,Networking,Dns,Wan,一、 传统上,始终具有别名/功能,以便从CLI轻松访问我的WAN IP: $ type -a whatismyip whatismyip is a function whatismyip () { curl ipv4.icanhazip.com } 此别名是多年前创建的,可能使用不同的域,但始终使用HTTP 最近我发现越来越频繁地引用一个liner,它通过DNS查找相同的信息 但它真的是一样的吗? 在写这篇文章时,我使用了4G连接,不同协议的结果不同 更令人惊讶的是,DNS服务器
$ type -a whatismyip
whatismyip is a function
whatismyip ()
{
curl ipv4.icanhazip.com
}
此别名是多年前创建的,可能使用不同的域,但始终使用HTTP
最近我发现越来越频繁地引用一个liner,它通过DNS查找相同的信息
但它真的是一样的吗?
在写这篇文章时,我使用了4G连接,不同协议的结果不同
更令人惊讶的是,DNS服务器之间也存在差异
有趣的是,ns1.google.com
,与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:我回到那里,得到了新的数据。和上次一样 您进行的两个DNS查询:
$ dig +short myip.opendns.com @resolver1.opendns.com
$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
我们应该返回相同的地址:您的外部IP。也许您的外部IP在您的请求之间发生了变化,这就是您得到不同结果的原因。
这绝不是DNS协议的一部分,而是DNS服务器返回发起查询的IP的一个技巧。下面列出了这些和其他几个DNS技巧
另一方面:
$ dig TXT +short o-o.myaddr.l.google.com @8.8.8.8
无法向您提供客户端的IP,因为8.8.8.8
不是o-o.myaddr.l.google.com
(ns1.google.com
是)的权威DNS服务器,因此它不会直接获取您的IP,您看到的响应是DNS协议允许的最佳近似值(逐行描述):
TXT
记录联系权威服务器的DNS解析程序的IP地址有关
edns客户端子网的更多详细信息,请阅读。我在问题中添加了澄清。我的外部IP没有更改。哪个DNS查询与HTTP IP匹配?HTTP查询是否也来自178.167.254/255子网?不,它来自完全不同的子网。86.45. 有些事情真的很奇怪,我的回答描述了我网络上的行为,这是NAT背后的典型家庭网络。也许你的网络对不同的请求使用了某种代理。