原文: https://www.tecmint.com/find-linux-server-public-ip-address/
使用dig进行dns查询
opendns.com DNS公共服务器提供这一项功能。当客户端进行dns查询的时候服务端能够得到客户端的公网ip。对一个特定的域名进行查询。opendns会返回客户端ip达到效果
dig +short myip.opendns.com @resolver1.opendns.com 120.88.41.175
大概找了一下。国内的公共DNS并没有提供这种服务。因为默认使用的UDP协议。应该比TCP更快一些
使用host命令
host命令也是用来进行DNS查询,但是感觉dig要高大上一点。实际原理和方案一是一样的
host myip.opendns.com resolver1.opendns.com | grep "myip.opendns.com has" | awk '{print $4}' 120.88.41.175
使用wget命令
当我们使用http协议访问服务端的时候,服务端能够获取到客户端公网ip。提供这种服务的网站特别多
$ wget -qO- http://ipecho.net/plain | xargs echo $ wget -qO - icanhazip.com 120.88.41.175
使用curl命令行下载
和上面的方案原理上并没有变化
curl ifconfig.co curl ifconfig.me curl icanhazip.com
Note:
- 国内使用建议用
curl ifconfig.cat
。国外建议使用curl ipinfo.io/ip
- 国情特殊。个人用户现很多公网ip都不是固定的。甚至于某一段时间内都不是固定的。所以获取到变动的ip也不足为奇。如下图