我通过 SSH 登录到远程计算机,这是一台 Raspberry Pi 4。我尝试使用它dnsutils
来提取远程计算机的公共 IP。但是,它返回我实际使用的客户端计算机的公共 IP。我正在使用 shell 脚本来执行此操作。我使用的具体命令是
public_ip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
我通过 Windows 11 计算机使用 SSH。这并不重要,但我正在使用 Visual Studio Code 远程 - SSH 扩展包。我还尝试通过 Windows PowerShell 进行 SSH,它仍然返回客户端计算机的公共 IP。
答案1
dig
如果您在远程计算机上执行,opendns 不太可能发现您的 SSH 客户端的 IP 地址。
最有可能的情况是您的客户端的公共 IPv4 地址与远程计算机的公共 IPv4 地址相同。如果两者位于同一物理位置或位于同一 LAN(可能通过 VPN),就会发生这种情况。
这是因为网络地址解读于 20 世纪 90 年代末推出,以减缓IPv4地址耗尽。这意味着您的家庭或办公室路由器将为整个 LAN 分配一个 IP 地址,并使其看起来好像 LAN 上的所有设备都只是一台具有该 IP 地址的计算机。
如果未来的读者不清楚,myip.opendns.com
从 DNS 服务器resolver1.opendns.com
(或任何服务器resolver*.opendns.com
)发出的请求将产生一条 A 名称 DNS 记录,其中包含 DNS 服务器所看到的 DNS 客户端的 IP 地址。