Gareth Asked: 2009-07-17 16:47:21 +0800 CST2009-07-17 16:47:21 +0800 CST 2009-07-17 16:47:21 +0800 CST 我可以使用什么基于 *nix 的命令来查找我的外部 IP? 772 类似于http://whatismyip.com查找。它显然需要查询那里的计算机。只是想知道是否有人有聪明的方法来做到这一点? linux networking command-line-interface 10 个回答 Voted Best Answer Can Berk Güder 2009-07-17T17:12:58+08:002009-07-17T17:12:58+08:00 curl http://myip.dnsomatic.com Brad Gilbert 2009-07-17T19:33:22+08:002009-07-17T19:33:22+08:00 挖 +short myip.opendns.com 这仅在您使用 OpenDNS 作为 dns 服务器时才有效。 如果你不是,其中之一应该工作: 挖 +short myip.opendns.com @208.67.222.222 挖 +short myip.opendns.com @208.67.220.220 挖 +short myip.opendns.com @208.67.222.222 @208.67.220.220 bortzmeyer 2009-07-21T09:39:11+08:002009-07-21T09:39:11+08:00 STUN是正确的解决方案。 % stun -v stun.ekiga.net ... 映射地址 = 88.189.152.187:18009 公共 STUN 服务器列表 免费软件STUN 客户端 STUN标准 Alex 2009-07-17T16:58:39+08:002009-07-17T16:58:39+08:00 您可以使用 curl 从 whatismyip 之类的内容中获取页面,然后将其取出。我在这个例子中使用了 whatismyipaddress.com ......显然这些字段会因不同的服务而有所不同。 curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }' Jason Down 2009-07-17T17:19:32+08:002009-07-17T17:19:32+08:00 lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}' fuero 2009-07-18T02:09:10+08:002009-07-18T02:09:10+08:00 必须使用 OpenDNS 的服务器才能使用它...您可以像这样使用 dig 查询某个 DNS 服务器: 挖 +short myip.opendns.com @208.67.222.222 chickeninabiscuit 2009-07-17T16:52:45+08:002009-07-17T16:52:45+08:00 我只是在互联网上的某个地方运行一个跟踪路由,然后从我们的本地网络中寻找一跳。 也许有更好的方法? Geoff Fritz 2009-07-17T16:55:26+08:002009-07-17T16:55:26+08:00 “猞猁http://whatismyip.com ” Sina Loghavi 2013-02-05T18:18:36+08:002013-02-05T18:18:36+08:00 最简单的方法是: curl ifconfig.me cas 2009-07-18T17:18:18+08:002009-07-18T17:18:18+08:00 您可以使用 ifconfig 命令列出所有接口及其关联的 IP 地址。 所以,如果你知道你的互联网接口是 ppp0,你可以运行 $ ifconfig ppp0 ppp0 链路封装:点对点协议 inet 地址:XXXX.X PtP:YYYY 掩码:255.255.255.255 UP POINTOINT RUNNING NOARP MULTICAST MTU:1444 Metric:1 RX 数据包:198986 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:122929 错误:0 丢弃:0 超限:0 运营商:0 碰撞:0 发送队列:3 RX 字节:134195571 (127.9 MiB) TX 字节:17101701 (16.3 MiB) XXXX 将是您的 IP 地址。YYYY 是下一跳的 IP 地址。 然后,您可以使用 grep/awk/sed/cut/perl/whatever 对 ifconfig 的输出进行后处理,以仅提取 IP。 如果您安装了 iproute 工具,另一种选择是使用 ip 命令。例如 $ ip 地址列表 ppp0 21842:ppp0:mtu 1444 qdisc htb 状态未知 qlen 3 链接/ppp inet XXXX peer YYYY/32 范围全局 ppp0 这可能更容易阅读,当然也更容易解析: $ ip 地址列表 ppp0 | awk '/inet/ {打印 $2}' XXXX
这仅在您使用 OpenDNS 作为 dns 服务器时才有效。
如果你不是,其中之一应该工作:
STUN是正确的解决方案。
您可以使用 curl 从 whatismyip 之类的内容中获取页面,然后将其取出。我在这个例子中使用了 whatismyipaddress.com ......显然这些字段会因不同的服务而有所不同。
必须使用 OpenDNS 的服务器才能使用它...您可以像这样使用 dig 查询某个 DNS 服务器:
我只是在互联网上的某个地方运行一个跟踪路由,然后从我们的本地网络中寻找一跳。
也许有更好的方法?
“猞猁http://whatismyip.com ”
最简单的方法是: curl ifconfig.me
您可以使用 ifconfig 命令列出所有接口及其关联的 IP 地址。
所以,如果你知道你的互联网接口是 ppp0,你可以运行
XXXX 将是您的 IP 地址。YYYY 是下一跳的 IP 地址。
然后,您可以使用 grep/awk/sed/cut/perl/whatever 对 ifconfig 的输出进行后处理,以仅提取 IP。
如果您安装了 iproute 工具,另一种选择是使用 ip 命令。例如
这可能更容易阅读,当然也更容易解析: