最可靠方式是ip addr show,可显示所有接口的IPv4/IPv6地址、子网掩码及状态;查公网IP需用curl ifconfig.me;hostname -I适合快速获取非环回IPv4列表。

ip addr show 是最可靠、最通用的查看本机 IP 地址的方式,现代发行版默认自带,无需额外安装,能同时显示 IPv4/IPv6、子网掩码、接口状态,且结果稳定不依赖外部服务或 DNS 解析。
用 ip addr show 查所有接口的 IPv4 地址
这是当前 Linux 系统的事实标准命令,输出结构清晰、语义明确,适合人工查看和脚本解析。
- 直接运行
ip addr show,在输出中找以inet开头的行(如inet 192.168.1.100/24),斜杠前就是 IPv4 地址 - 若只关心主网卡(比如
ens33或eth0),可加接口名过滤:ip addr show ens33 - 只要 IPv4 地址、不要其他信息?用
ip -4 addr show | grep -oP 'inet \K[\d.]+'提取纯地址列表 - 注意:
lo(回环接口)的127.0.0.1不是真实网卡地址,别误当成本机对外 IP
用 hostname -I 快速获取所有活动 IPv4 地址
这个命令专为“快速列出所有非环回 IPv4 地址”设计,输出干净、无格式、空格分隔,特别适合写进脚本或 CI/CD 流程中。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 执行
hostname -I,直接返回类似192.168.1.100 10.0.2.15的字符串 - 它不显示接口名、子网掩码或 IPv6,也不报错——如果没分配 IPv4,就真的输出为空
- 常见陷阱:某些容器环境或 minimal 镜像里,
hostname命令可能未正确配置主机名映射,导致-I返回空;此时应优先 fallback 到ip命令
查公网 IP 必须调用外部服务,curl ifconfig.me 最简
内网 IP 是本地接口配置的,而公网 IP 是你所在网络出口(路由器/NAT 设备)对外暴露的地址,Linux 内核根本不存这个值,必须发 HTTP 请求让外部服务告诉你。
- 最轻量方案:
curl -s ifconfig.me(返回纯 IPv4 字符串) - 备用服务还有
curl -s icanhazip.com或curl -s api.ipify.org,但ifconfig.me响应快、无广告、无重定向 - 注意:如果系统没装
curl,可用wget -qO- ifconfig.me替代;但别用ping或nslookup,它们查的是域名解析结果,不是你的真实出口 IP - 防火墙或代理环境下,这些请求可能被拦截,此时需确认出站 HTTP 是否放行
别再依赖 ifconfig,除非你明确需要它的历史行为
ifconfig 已被标记为废弃多年,不是“不能用”,而是它在多方面不可靠:不显示新接口类型(如 veth、macvlan)、IPv6 支持弱、输出格式难解析、部分新发行版默认不带。
- 如果提示
command not found,说明系统没装net-tools包,Debian/Ubuntu 下装:sudo apt install net-tools;RHEL/CentOS 下:sudo dnf install net-tools - 它的
inet addr:字段在某些老版本输出中位置不固定,正则提取容易漏或错(比如匹配到广播地址) - 唯一还值得用它的场景:排查老旧嵌入式设备或定制内核系统,且已知其网络栈不支持
iproute2
真正容易被忽略的是:没有一个命令能同时准确回答“我的内网 IP 是多少”和“我的公网 IP 是多少”。前者查本地接口,后者必须走外网;混淆这两者是绝大多数网络连通性误判的源头。

















