直接用curl ifconfig.me最稳,90%场景下能立刻拿到纯ip字符串;ifconfig和ip addr只能查内网地址(如192.168.x.x),因nat后公网ip由路由器或云平台snat决定,本机无感知。

直接用 curl ifconfig.me 最稳,90% 场景下能立刻拿到纯 IP 字符串,不带多余空格或换行,适合脚本调用。
为什么 ifconfig 和 ip addr 查不到外网IP
这两个命令只查本地网络接口配置,显示的是内网地址(比如 192.168.x.x、10.x.x.x 或 172.16–31.x.x),根本看不到经过 NAT 后的公网出口 IP。路由器或云厂商的 SNAT 规则已经把你的请求“伪装”出去了,本机操作系统压根不知道那个外网 IP 是多少。
常见错误现象:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 执行
ifconfig eth0或ip addr show eth0得到192.168.1.15,误以为这就是公网 IP - 在云服务器(如腾讯云、阿里云)上运行这些命令,看到的仍是内网地址,和控制台显示的“弹性公网 IP”对不上
curl 类服务怎么选:纯 IP 还是带地区信息
不同 HTTP 接口返回格式差异大,选错会导致解析失败或额外清洗成本:
- 只要干净 IP(如写监控脚本、自动注册服务):
curl ifconfig.me、curl icanhazip.com、curl v4.ident.me—— 响应体就是一行纯 IPv4 字符串 - 需要地区/运营商信息(如调试 CDN、判断访问来源):
curl cip.cc、curl myip.ipip.net、curl ip.cn—— 返回多行文本或 JSON,含空格、冒号、中文,需awk/grep提取 - 注意
curl ip.sb默认返回 JSON(含地区),加-s和jq -r .ip才能取纯 IP,不如直接用ifconfig.me
遇到超时或 DNS 失败怎么办
不是所有服务都永远可用,单点依赖容易翻车:
- 优先组合多个备用源,例如:
curl -s ifconfig.me || curl -s icanhazip.com || curl -s v4.ident.me
- 某些环境禁用 80/443 出站(如严格内网),
dig +short myip.opendns.com @resolver1.opendns.com走 DNS 协议,可绕过 HTTP 限制 - 如果
curl命令本身不存在(极简容器镜像),改用wget -qO - ifconfig.me,兼容性略高 - 避免用
curl ip.6655.com/ip.aspx—— 返回带 HTML 标签的 ASPX 页面,解析麻烦且不稳定
真正容易被忽略的是:没有做超时控制。默认 curl 可能卡住几十秒,建议统一加 --max-time 3,尤其在自动化任务里——慢比错更难排查。










