如何以编程方式确定子网后面的动态IP

如何以编程方式确定子网后面的动态IP

抱歉,这个问题比较菜鸟,但我正在尝试破解一个临时动态 DNS,以便可靠地连接位于不同地理区域的两台机器。我的问题是,我尝试的每个命令(ifconfig、iwconfig、netstat 等)都为我提供了子网后面的 IP 地址(例如 10.0.0.1),但我需要能够告诉另一台机器我当前的外部 IP 是什么,而不是告诉子网上其他机器的 IP 是什么。我该怎么做?

了解如何使用 Python 实现此操作的提示可获得加分

答案1

如果此设备位于 NAT 后面,则无法执行此操作。NAT 设备不知道其数据包是如何被 NAT 的途中- 只有 NATting 设备(防火墙、路由器等)知道这一点。

编辑:不,从技术上讲,我的意思是它是不可知的,正如你对这个问题的定义一样。这种事情一直在发生。你的计算机无法知道哪个发电机构正在为该计算机供电。从原则上讲,这并非不可知,但是没有普遍有效的技术可以从相关计算机中找出这些信息,因为电子上没有小标签说明谁最后推动了它们。

如果您的问题是“我如何才能找出生成机构”,我们可以提供帮助;如果是“我如何才能从我的计算机中找到它,而无需咨询外部服务”,那么这个问题就没有答案。

同样,如果您问“我如何知道我的计算机的 IP 地址被 NAT 到了哪里”,那么我们可以提供帮助,正如 Jenny D 所言;答案不是普遍有效的,并且取决于 NAT 设备的品牌、它当前支持的访问安排等等(尽管这个问题可能与 Server Fault 无关,可能会被关闭,即使这个问题也可能被关闭)。但您问“我的计算机如何知道它的 IP 地址被 NAT 到了哪里”,这个问题没有普遍的答案。

至于如何避免被踩,你最好读一读,然后消化一下关于提出好问题的帮助文档

答案2

如果您无法访问防火墙/路由器/其他设备,则需要使用自己网络之外的某些设备来回答该问题。您可以将某些设备组合在一起,例如http://www.whatismyip.com/- 但除非你拥有或支付远程服务费用,否则它不可靠

相关内容