如何通过 Windows 命令行获取公共 IP 地址?

MIc*_*l S 7 windows command-line ip

是否可以在不使用http://whatismyipaddress.com/等网站的情况下通过 cmd 获取您的公共 IP 地址?我在路由器后面。

请随意走得尽可能详细。我正在为 Net+ 考试而学习

小智 11

您可以使用 PowerShell Invoke-RestMethod

PS > Invoke-RestMethod ipinfo.io/ip
99.109.97.210
Run Code Online (Sandbox Code Playgroud)

或别名:

PS > irm ipinfo.io/ip
99.109.97.210
Run Code Online (Sandbox Code Playgroud)

  • OP 要求不使用外部站点的解决方案。 (3认同)

Jou*_*eek 9

你不能。为什么?“公共IP地址”没有明确的定义。我会注意到答案是一个巨大的抽象,足以解释我的观点,但充满了小漏洞。随意评论大的(所以我可以插入它们)。

从本质上讲,所有公共 ip 地址都是子网上的一个地址,该地址未被保留供私人使用。就网络堆栈而言,公共和私有 IP 地址之间没有区别。它只是子网之间的路由。理论上,在封闭网络中,虽然它的做法很糟糕,但您可以使用公共 IP 地址范围,反之亦然——在公共互联网上使用 RFC 1918 地址,可能会破坏事情。

如果我运行路径(虽然我不愿意将我的 IP 地址贴在互联网上,但它不是 cgn,并且以 101 开头)

在此处输入图片说明

我的 ip 地址不在路线上的任何地方(所以...你的电脑实际上可能不知道它的公共 ip 地址)。

公共 IP 地址的概念也很模糊。双 nat(eww!),甚至三重 nat(可能具有重叠的 IP 地址范围!)的背后是什么?CGN 甚至封闭网络的背后是什么?

本质上,每个路由器或系统只需要知道下一跳,而您的 PC 没有必要或方法知道其公共 IP 地址是什么。

外部服务可以找到您的“公共”IP 地址的原因是,就服务器而言,这是消息传递到的跃点。它也将/不需要知道这是否是最终用户的计算机、您拥有最终用户计算机的代理、路由器/交换机甚至是烤面包机。


小智 4

Windows 中没有自动内置任何功能来执行此操作。正如其他用户过去所建议的那样,您可以尝试以下操作:

C:\> nslookup myip.opendns.com resolver1.opendns.com
Run Code Online (Sandbox Code Playgroud)

并使用 DNS 请求返回面向公众的 IP。答案最初是在这里找到的。