最可靠方式是用 ip addr 命令——它完整显示各接口ipv4/ipv6地址、子网掩码、作用域及生命周期状态,且主流发行版默认自带;ip a 等价于 ip addr show,重点关注含 inet 的行,如 inet 192.168.1.100/24 表示 eth0 通过 dhcp 获取动态 ipv4 地址;hostname -i 可快速列出所有启用接口的 ipv4 地址;验证接口“在线并有ip”需同时满足 state up 和存在 inet ... scope global;ifconfig 已非默认安装,需手动安装 net-tools 包。

直接查看当前网络接口的IP分配情况,最可靠的方式是用 ip addr 命令——它能完整显示每个接口的IPv4、IPv6地址、子网掩码、作用域及生命周期状态,且所有主流发行版默认自带。
用 ip addr 查看全部接口IP分配
在终端执行:
-
ip a(简写,等价于
ip addr show)
输出中每块以数字编号开头(如 2: eth0:),重点关注含 inet 的行:inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
这表示 eth0 接口已通过 DHCP 获取 IPv4 地址 192.168.1.100,子网前缀为 /24(即 255.255.255.0),且为动态分配。
快速提取主IPv4地址(适合脚本或简洁查看)
若只关心本机对外通信常用的IPv4地址(排除回环、链路本地等),推荐:
- hostname -I:一行空格分隔列出所有启用接口的IPv4地址(不含端口和掩码)
- ip -4 addr show scope global | grep -oP 'inet \K[\d.]+':精准提取带 global scope 的IPv4地址,不包含 localhost 或 fe80:: 等
验证接口是否真正“在线并有IP”
仅看 state UP 不代表有IP;需同时满足两个条件:
- 接口状态为
state UP(物理/链路层就绪) - 存在
inet ... scope global行(网络层已配置有效IP)
例如:2: ens33: <broadcast></broadcast> + inet 10.0.2.15/24 → 正常可用;
而只有 state DOWN 或仅有 inet6 fe80::...(无 global IPv4)则说明尚未获得有效IP。
补充:ifconfig 仍可用但需注意兼容性
部分旧系统或容器环境可能预装 ifconfig,但新发行版(如 Ubuntu 22.04+、Fedora 38+、AlmaLinux 9)默认不带 net-tools:
- 若提示
command not found,先安装:
Debian/Ubuntu:sudo apt install net-tools
RHEL/CentOS/AlmaLinux:sudo dnf install net-tools - 执行
ifconfig后,找inet字段(IPv4)或inet6(IPv6),注意其后跟的是netmask而非 CIDR 表示法











