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

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

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

请尽可能详细地说明。我正在为 Net+ 考试做准备

答案1

您可以使用 PowerShell调用 RestMethod

PS > Invoke-RestMethod ipinfo.io/ip
99.109.97.210

或者别名:

PS > irm ipinfo.io/ip
99.109.97.210

答案2

你不能。为什么?“公共 IP 地址”没有明确的定义。我注意到答案是一个巨大的抽象,足以解释我的观点,但充满了小漏洞。欢迎对大问题发表评论(这样我就可以填补它们)。

本质上,公有 IP 地址是子网上未被保留用于私人用途的地址。就网络堆栈而言,公有 IP 地址和私有 IP 地址没有区别。它只是子网之间的路由。理论上,在封闭网络中,虽然它的糟糕的实践中,你可以使用公共 IP 地址范围,而反向操作 - 在公共互联网上使用 RFC 1918 地址,这可能会破坏事情。

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

在此处输入图片描述

我的 IP 地址不在路由上的任何地方(因此... 您的电脑可能实际上不知道其公共 IP 地址)。

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

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

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

答案3

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

C:\> nslookup myip.opendns.com resolver1.opendns.com

并使用 DNS 请求返回您的公开 IP。答案最初找到这里

答案4

试试这个。您可以使用 %MyIP% 作为变量或仅用于显示。

@echo off
nslookup myip.opendns.com resolver1.opendns.com | find "Address" >"%temp%\test1.txt"
more +1 "%temp%\test1.txt" >"%temp%\test2.txt"
del %temp%\test1.txt
set /p MyIP=<%temp%\test2.txt
del %temp%\test2.txt
set MyIP=%MyIP:~10%
cls
echo .
echo %MyIP%
echo .

相关内容