在 shell 脚本中查找公共 IP 地址

在 shell 脚本中查找公共 IP 地址

我可以使用 ifconfig 或 hostname -i 命令找到我的 IP 地址。

但是我如何找到我的公共 IP?

(我有一个静态公共 IP,但我想使用 unix 命令找出它)

答案1

curl ifconfig.me

curl ifconfig.me/ip (仅适用于 IP)

curl ifconfig.me/all (更多信息需要时间)

欲了解更多命令,请访问:http://ifconfig.me/#cli_wrap

答案2

您可以myip.opendns.com从 OpenDNS 请求 .。 dig @208.67.222.220 myip.opendns.com

答案3

dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short

dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short

dig -4 @resolver1.opendns.com -t a myip.opendns.com +short


请注意,以上方法目前仅适用于 IPv4(这些解析器目前似乎都没有 IPv6,但如果您省略-4和显式的-t a,则可能会在未来出现故障(Google 的除外txt,如果 Google 正确启用,它可能有一天实际上适用于 IPv6))。

请注意,myip.opendns.com只能通过 解析resolver1.opendns.com,而不能通过 解析auth1.opendns.com— 因此,他们似乎在对自己的域名进行 DNS 劫持和中间人攻击!因此,您无法使用它来查找随机解析器的 IP,因为resolver1.opendns.com不具有权威性myip.opendns.com

请注意,这o-o.myaddr.l.google.com看起来是最灵活和面向未来的方法;它甚至可以很好地测试您的 DNS 解析器是否支持客户端子网的实验性 EDNS0 扩展(很少有解析器支持该扩展):

% dig @8.8.8.8 -t txt o-o.myaddr.l.google.com +noall +answer +stats | tail -8
;; global options:  printcmd
o-o.myaddr.l.google.com. 60     IN      TXT     "74.125.189.16"
o-o.myaddr.l.google.com. 60     IN      TXT     "edns0-client-subnet 88.198.54.0/24"
;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec  8 20:38:46 2013
;; MSG SIZE  rcvd: 114

答案4

我为此编写了一个简单、快速的网络服务。

curl ident.me

您可以请求您的 IPv4:

curl v4.ident.me

或 IPv6:

curl v6.ident.me

它还支持 HTTPS、DNS、SSH。

该 API 的文档记录在http://api.ident.me/

相关内容