如何在命令行快速获取公网动态IP地址

电子说

1.3w人已加入

描述

服务器

如何确定公网IP地址是一个让很多家用宽带朋友们经常遇到的问题,毕竟固定IP地址总是价格不菲因而不适用于家庭宽带,而我们的电信宽带运营商(ISP)往往给我们分配的是动态IP地址,之所以称作为动态IP地址,是因为每次拨号得到的IP地址可能会不一样,还有更骚的操作就是有的运营商每天或不定期在某个时间刷新IP地址池,这样已经获得的IP地址将会被强制释放并分配新的IP地址。

这对于我们一些运行在家用带宽下的服务带来了影响——需要重新设置服务端 IP 地址,比如监控、网络存储等等,这时候 DDNS 就发挥作用的,现在大部分路由器内置了 DDNS 客户端,比如花生壳等服务客户端,但是这些客户端存在收费、不稳定以及刷新间隔小等问题,对于自己有域名的朋友可以使用 DNS 服务商的 API 自己实现 IP 更新操作,比如阿里云(Aliyun)、Cloudflare 均可以实现。

对于 DDNS 如何使用 API 更新不在本文叙述范围内,但调用 API 有个关键参数那就是公网IP地址,如何获取当前运营商分配的公网 IP地址呢?除了问路由器外(打开路由器管理界面找到 WAN 口信息)我们还可以通过一些网络服务进行检测。

1使用 Shell 命令获取公网 IP 地址

浏览器方式

如果我们使用浏览器打开这个地址checkip.amazonaws.com你就会发现你的公网IP地址赫然在目,互联网上的服务器总是能够知道是什么 IP地址的客户端发起了连接,当然就可以通过这种方式获取公网 IP,同样功能的网站有很多,这里列举部分我收集到的:

 

https://checkip.amazonaws.com
https://api.ipify.org
https://ifconfig.me/ip
https://icanhazip.com
https://ipinfo.io/ip
https://ipecho.net/plain
https://checkipv4.dedyn.io

 

curl 方式

在命令行下我们当然不能为这点小事随便启动浏览器,我们可以请出另外一个功能强大的工具,那就是curl,cURL 是一个利用URL语法在命令行下工作的文件传输工具,关于cURL的快速用法可以参考阮一峰的网络日志《curl 的用法指南》,这里不再详述,最简单的用法就是curl 你要请求的网址,比如curl checkip.amazonaws.com。

 

[root@www.lutixia.cn ~]# curl cip.cc
IP  : 171.43.148.打码
地址  : 中国  ...
运营商  : 电信
...
URL  : http://www.cip.cc/171.43.148.打码


[root@www.lutixia.cn ~]# curl ip.sb
171.43.148.打码


[root@www.lutixia.cn ~]# curl ifconfig.me
171.43.148.打码


[root@www.lutixia.cn ~]# curl  myip.ipip.net
当前 IP:171.43.148.打码  来自于:中国 。。。电信


[root@www.lutixia.cn ~]# curl ip.threep.top
171.43.148.打码

 

使用 dig 命令

首次在别人脚本中看到这个方式获取公网IP觉得比较新奇,命令如下:

 

dig +short myip.opendns.com @resolver1.opendns.com

 

这个是由OpenDNS提供的服务,如果你的主机上没有安装dig命令,对于Debian系列系统可以通过apt-get install dnsutils安装,这个命令的原理是指定resolver1.opendns.com为域名myip.opendns.com的解析服务器,为什么要指定,主要是避免 DNS 下游服务器缓存,另外这个指定的解析服务器被 OpenDNS 进行了特殊配置,其始终将域名myip.opendns.com解析为发起 DNS 请求的客户端 IP 地址,这样也就实现了查找公网 IP的功能。

这个和 cURL 方式比有什么优势呢?当然是数据量更小传输更快,毕竟使用 cURL 发起 HTTP 请求必然会导致协议头等无关信息的交换,如果启用了 HTTPS/TLS 那么还要进行加密协商,效率会比较低,当然这种方式的缺点就是 DNS 查询容易被运营商审计和过滤,稳定性略差,不过我测试下来除了偶尔查询失败外其余情况是完全 OK 的。

 

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分