如果我检查谷歌,我可以看到我的公共 IP。Ubuntu 命令行上是否有可以给我相同答案的东西?
答案1
如果您不在路由器后面,您可以使用 来找到它ifconfig
。
如果您位于路由器后面,那么您的计算机将不知道公共 IP 地址,因为路由器会进行网络地址转换。您可以向某个网站询问您的公共 IP 地址正在使用什么,curl
或者wget
从中提取所需的信息:
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
或更短
curl https://ipinfo.io/ip
答案2
要查找外部 IP,您可以使用外部基于 Web 的服务,也可以使用基于系统的方法。更简单的方法是使用外部服务,而且ifconfig
只有当您没有使用 时,基于系统的解决方案才会在您的系统中起作用NAT
。下面详细讨论了这两种方法。
使用外部服务查找外部 IP
最简单的方法是通过命令行浏览器或下载工具使用外部服务。由于wget
Ubuntu 默认提供,因此我们可以使用它。
要查找您的 IP,请使用-
$ wget -qO- https://ipecho.net/plain ; echo
礼貌:
- https://hawknotes.blogspot.in/2010/06/finding-your-external-ip-address.html
- https://ipecho.net/plain
您还可以使用lynx
(浏览器)或curl
代替wget
上述命令,并对命令进行细微改动,以查找您的外部 IP。
使用curl
以下方式查找 IP:
$ curl https://ipecho.net/plain
为了获得更好的格式化输出使用:
$ curl https://ipecho.net/plain ; echo
一种更快(可以说是最快的)的方法,使用dig
withOpenDNS
作为解析器:
这里的其他答案都通过 HTTP 传输到远程服务器。其中一些需要解析输出,或者依赖 User-Agent 标头使服务器以纯文本响应。它们也经常更改(关闭、更改名称、张贴广告、可能更改输出格式等)。
- DNS 响应协议是标准化的(格式将保持兼容)。
- 从历史上看,DNS 服务(OpenDNS、Google Public DNS 等)往往比当今流行的任何新潮的 whatismyip.com HTTP 服务存活时间更长,而且更稳定、可扩展且更受关注。
- (对于那些关心微优化的极客来说),这种方法应该本质上更快(仅仅几微秒)。
使用 dig 和 OpenDNS 作为解析器:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
复制自: https://unix.stackexchange.com/a/81699/14497
无需依赖外部服务即可查找外部 IP
- 如果您知道网络接口名称
在终端中输入以下内容:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
在上面的文本中,替换为<interface_name>
您的实际接口的名称,例如:eth0
,,,等等...eth1
pp0
用法示例:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- 如果你不知道你的网络接口名称
在您的终端中输入以下内容(这将获取系统中每个网络接口的名称和 IP 地址):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
用法示例:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
注意:输出仅作参考,并非真实情况。
礼貌: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
更新
LANG=c
已添加到ifconfig
基本用法中,以便它始终提供英文输出,而不管区域设置如何。
答案3
我最喜欢的一直是:
curl ifconfig.me
简单,易于输入。
您必须先安装 curl ;)
如果 ifconfig.me 瘫痪,请尝试 icanhazip.com 或 ipecho.net
curl icanhazip.com
或者
curl ipecho.net
答案4
运行我自己的服务,设计得简单而愚蠢,ident.me。
其 API 和实现记录在https://api.ident.me/
来自终端的示例(https://
为了安全性而牺牲速度):
curl ident.me
curl v4.ident.me
curl v6.ident.me