Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 获取广域网IP:HTTP和DNS之间的区别_Linux_Http_Networking_Dns_Wan - Fatal编程技术网

Linux 获取广域网IP:HTTP和DNS之间的区别

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服务器

一、 传统上,始终具有别名/功能,以便从CLI轻松访问我的WAN IP:

$ 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地址
  • 如果可用,则为DNS解析程序代表其进行查询的客户端(本例中为您)的子网(edns客户端子网)

  • 有关
    edns客户端子网的更多详细信息,请阅读。

    我在问题中添加了澄清。我的外部IP没有更改。哪个DNS查询与HTTP IP匹配?HTTP查询是否也来自178.167.254/255子网?不,它来自完全不同的子网。86.45. 有些事情真的很奇怪,我的回答描述了我网络上的行为,这是NAT背后的典型家庭网络。也许你的网络对不同的请求使用了某种代理。