在linux中确认公网ip需依赖外部服务,可用curl/wget请求http服务(如ifconfig.me)、dig查询opendns的txt记录、curl+json api(如ipinfo.io)配合jq提取,或编写多服务轮询脚本提升可靠性。

如果您在Linux系统中需要确认当前网络对外通信所使用的公网IP地址,该地址即为数据包离开本地网络时经由NAT或路由器映射后的出口IP,则需依赖外部服务返回真实出口地址。以下是多种可直接执行的查询方法:
一、使用curl命令请求纯文本IP服务
curl是最轻量且广泛预装的HTTP客户端,通过向提供IP回显的公开服务发起GET请求,可直接输出无格式的IPv4地址,适用于脚本集成与快速验证。
1、执行命令:curl ifconfig.me
2、执行命令:curl icanhazip.com
3、执行命令:curl checkip.amazonaws.com
4、执行命令:curl whatismyip.akamai.com
5、执行命令:curl ipecho.net/plain
二、使用wget命令替代curl获取IP
wget同样具备发起HTTP请求并输出响应体的能力,其-qO-参数组合可静默下载并直接打印到终端,不保存文件,行为与curl等效。
1、执行命令:wget -qO- ifconfig.me
2、执行命令:wget -qO- icanhazip.com
3、执行命令:wget -qO- ipinfo.io/ip
4、执行命令:wget -qO- ipecho.net/plain
三、利用dig命令查询OpenDNS提供的TXT记录
该方法不依赖HTTP协议,而是通过DNS查询机制向OpenDNS服务器请求myip.opendns.com的TXT记录,由DNS基础设施直接返回出口IP,规避HTTP代理或防火墙拦截风险。
1、执行命令:dig +short myip.opendns.com @resolver1.opendns.com
2、若返回为空,请确认系统DNS配置可用且能访问resolver1.opendns.com
3、如需强制使用TCP查询以绕过UDP限制,可添加+tcp参数
四、调用支持JSON响应的API并提取IP字段
部分服务返回结构化JSON数据,包含IP、地理位置、运营商等扩展信息;配合jq工具可精准提取所需字段,适合需要元数据的运维场景。
1、执行命令:curl -s ipinfo.io/json | jq -r '.ip'
2、执行命令:curl -s ipapi.com/ip
3、执行命令:curl -s httpbin.org/ip | jq -r '.origin'
4、若未安装jq,可先运行:sudo apt install jq(Debian/Ubuntu)或sudo yum install jq(CentOS/RHEL)
五、使用多服务轮询脚本增强可靠性
当单一服务不可达时,可通过shell脚本按顺序尝试多个高可用IP接口,首个成功响应即终止并输出结果,提升查询鲁棒性。
1、创建脚本文件:echo '#!/bin/bash\nfor url in ifconfig.me icanhazip.com checkip.amazonaws.com; do ip=\$(curl -s --max-time 3 \$url 2>/dev/null); [ -n "\$ip" ] && echo \$ip && exit 0; done' > get_public_ip.sh
2、赋予执行权限:chmod +x get_public_ip.sh
3、运行脚本:./get_public_ip.sh










