我可以使用 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/