我可以使用什么基于* nix的命令来查找我的外部IP?


Answers:



8
挖+短myip.opendns.com

仅当您将OpenDNS用作dns服务器时,此方法才有效。

如果不是,请使用以下方法之一:

挖+短myip.opendns.com @ 208.67.222.222
挖+短myip.opendns.com @ 208.67.220.220
挖+短myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

1
在我的MacOS 10.5,Ubuntu 8.04或Ubuntu 9.04上不起作用。
德鲁·史蒂芬斯

有趣的是,它可以在我的Ubuntu 8.10上执行。
布拉德·吉尔伯特

可能是因为我使用了opendns。
布拉德·吉尔伯特

+1用于使用DNS来查找IP(而不是http)。您还可以使用其名称来指定dns服务器,例如,@resolver1.opendns.com(出于可读性考虑)
jfs



2

必须使用OpenDNS的服务器才能使用此...您可以使用dig这样查询某个DNS服务器:

挖+短myip.opendns.com @ 208.67.222.222

2

您可以使用curl从诸如whatismyip之类的内容中获取页面,然后将其分解。在此示例中,我使用了whatismyipaddress.com ...显然,不同服务的字段会有所不同。

curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'

1

我只是在Internet上的某个地方运行traceroute,然后从我们的本地网络中寻找跳数。

也许有更好的方法?




0

您可以使用ifconfig命令列出所有接口及其关联的IP地址。

因此,如果您知道互联网接口是ppp0,则可以运行

$ ifconfig ppp0
ppp0 Link encap:点对点协议
          inet地址:XXXX.X PtP:YYYY掩码:255.255.255.255
          UP POINTOPOINT运行NOARP MULTICAST MTU:1444指标:1
          RX数据包:198986错误:0掉落:0超限:0帧:0
          TX数据包:122929错误:0掉落:0超限:0运营商:0
          碰撞:0 txqueuelen:3
          接收字节:134195571(127.9 MiB)发送字节: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对等YYYY / 32范围全局ppp0

这可能更容易阅读,而且更容易解析:

$ ip地址列表ppp0 | awk'/ inet / {print $ 2}'
XXXX

-ifconfig中的任何IP都可能与真实的Internet IP不匹配(如果使用biNAT)-在FreeBSD中,没有iproute2软件包,因此ip命令不适用
SaveTheRbtz

是的,我没有使用NAT,所以我从未想到过。...在我看来,使用外部服务来获取您可以查询自己系统的信息是“错误的”。即使使用NAT,我仍然更希望弄清楚如何查询进行NAT的路由器(也许通过SNMP查询),而不是依赖于我需要时可能可用或可能不可用的外部服务。
cas

@Craig,您的方法很好。但是,它不是外部IP,除非您可以从外部获得该值。您确实必须依靠外部观点来获得此答案。这个想法是为查询找到一个可靠的(至少比您的外围点更多)外​​部点。OpenDNS是一个好点。
nik

@nik:边界路由器的IP不是外部IP的唯一可能情况是,当您位于多层NAT之后时...在这种情况下,正确的解决方案是尽快切换到不损害大脑的服务。同样,获取URL来查找IP的问题在于,它仅告诉您实际获取IP的主机的IP-可能是剥离Via标头的代理。
cas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.