我可以使用 ifconfig 或 hostname -i 命令找到我的 IP 地址。
但是我如何找到我的公共 IP?
(我有一个静态公共 IP,但我想使用 unix 命令找到它)
小智 51
curl ifconfig.me
curl ifconfig.me/ip
(仅用于 ip)
curl ifconfig.me/all
(更多信息,需要时间)
更多命令请访问:http : //ifconfig.me/#cli_wrap
Zor*_*che 27
您可以请求myip.opendns.com
. 来自 OpenDNS。 dig @208.67.222.220 myip.opendns.com
cns*_*nst 19
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
,它实际上可能适用于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
Run Code Online (Sandbox Code Playgroud)
Mat*_*Ife 12
如果您可以访问互联网,一个非常简单的答案是:
curl icanhazip.com
Run Code Online (Sandbox Code Playgroud)
请记住,为您的 IP 信任第三方来源可能会有问题,特别是如果您对这些数据的处理具有特殊意义。
更值得信赖的方法是选择一个已知的、值得信赖的 DNS 服务器(最好运行 DNSSEC)并使用它查询主机名,前提是您的 DNS 服务器包含此类条目;
dig @trustworthysource.com +short `hostname`
Run Code Online (Sandbox Code Playgroud)
我为此编写了一个简单而快速的网络服务。
curl ident.me
Run Code Online (Sandbox Code Playgroud)
您可以询问您的 IPv4:
curl v4.ident.me
Run Code Online (Sandbox Code Playgroud)
或 IPv6:
curl v6.ident.me
Run Code Online (Sandbox Code Playgroud)
API 记录在http://api.ident.me/
如果
然后您可以解析 ifconfig 的输出以获取接口的 IP 地址(“inet addr:”部分)以获取所有接口的 IP 地址列表。不在私有范围内的一个 IP 地址(请参阅http://en.wikipedia.org/wiki/IP_address#IPv4_private_addresses)是您的公共 IP 地址。
也可以通过以下方式获得相同的列表
ip addr show
Run Code Online (Sandbox Code Playgroud)
这可能更容易解析。
如果您没有直接的互联网连接(NAT 等),没有外部帮助就无法找到您的公共 IP 地址(因为您的计算机不知道)。然后你必须像在其他答案中那样做。