Dns
dnsutils 指向客戶端機器的公共 IP,而不是伺服器
我通過 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。
dig
如果您在遠端電腦上執行,opendns 極不可能發現您的 SSH 客戶端的 IP 地址。最有可能的是您的客戶端的公共 IPv4 地址與您的遠端電腦的公共 IPv4 地址相同。如果兩者位於相同的物理位置或在相同的 LAN 上(可能通過 VPN),就會發生這種情況。
這是由於1990 年代後期引入的網路地址轉換以減緩IPv4 地址耗盡。這意味著您的家庭或辦公室路由器將為整個 LAN 使用一個 IP 地址,並使其看起來好像您的 LAN 上的所有東西都只是一台具有該單個 IP 地址的機器。
萬一這對未來的讀者來說不是很明顯,
myip.opendns.com
從 DNS 伺服器resolver1.opendns.com
(或任何resolver*.opendns.com
伺服器)請求將產生一個 A 名稱 DNS 記錄,其中包含 DNS 伺服器所看到的 DNS 客戶端的 IP 地址。