我需要从路由器自动获取自己的 WAN-IP 地址。我找到了这个问题除其他外,还dig
提出了一个解决方案:
dig +short myip.opendns.com @resolver1.opendns.com
它工作得很好,但现在我想了解它在做什么。这是我(希望)到目前为止所理解的(如果我错了,请纠正我):
+short
只是给了我一个简短的输出@resolver1.opendns.com
是 DNS 服务器,询问哪个 IP 地址属于给定域
我不清楚的是myip.opendns.com
。如果我改为写www.spiegel.de
,我会得到域的 IP 地址www.spiegel.de, 正确的?我myip.opendns.com
得到了我的路由器的WAN-IP。那么myip.opendns.com
只是模拟一个解析到我的路由器的域吗?它是如何做到的?它从哪里获取我的 IP?它与网页有何不同,例如,www.wieistmeineip.de, 是做?他们还试图获取我的 IP。
在里面回答Krinkle关于我提到的问题,指出这种“dns-approach”会比“http-approach”更好。为什么它更好,有什么区别?
肯定是有区别的,因为我从dig +short myip.opendns.com @resolver1.opendns.com
(ip1) 获得的 WAN-IP 也是我在路由器的 Web 界面中可以看到的,而www.wieistmeineip.de
(以及其他类似站点)则给了我另一个 IP 地址 (ip2) 。我可以想象我的 ISP 正在使用某种子 LAN,因此我对网络服务器的请求将通过另一个具有 ip2 的 (ISP-) 路由器,因此www.wieistmeineip.de
只能看到这个地址 (ip2)。但是,话又说回来,那myip.opendns.com
又在做什么呢?
另外:从我的局域网内打开 ip1 会从我的 RasPi 中提供测试网站,从我的局域网外部(移动互联网)打开它不起作用。这是否意味着 ip1 不是正确的“互联网 IP”,而更像是 LAN IP?
答案1
首先总结一下一般用法dig
:它从默认 DNS 服务器请求分配给给定域的 IP。因此,egdig google.de
会请求分配给该域的 IP google.de
。那会是172.217.19.99
。
你提到的命令是:
dig +short myip.opendns.com @resolver1.opendns.com
myip.opendns.com
该命令的作用是:向 DNS 服务器发送对该域的 IP 的请求resolver1.opendns.com
。该服务器被编程为,如果请求该特殊域,则 IP请求来自被送回。
krinkle提到了使用DNS查询WAN IP的方法更好的原因:标准化、更稳定、更快。
请注意,默认情况下,dig
要求输入 IPv4 地址(DNSA
记录)。如果dig
通过 IPv6 建立与 opendns.com 的连接,您将不会得到任何结果(因为您要求提供 IPv4 地址,但正在使用 IPv6 地址)。因此,更强大的命令可能是:
dig +short ANY @resolver1.opendns.com myip.opendns.com
这将返回您的 IP 地址,版本 4 或 6,具体取决于dig
的连接。要指定 IP 版本,请使用dig -4
或 ,dig -6
如中所示马夫凯特尔的回答。
我可以想象这两个 IP 的原因是您的路由器缓存 DNS 请求并返回旧 IP。
另一个问题可能是双栈精简版。新的互联网合同经常使用这种方式。您知道您的 ISP 是否使用 DS Lite 吗?