在许多系统管理员的记忆中,ifconfig 是查看和配置网络接口的代名词,它几乎是 Unix/Linux 系统的标配,当您在一台全新的 CentOS 7 最小化安装系统上满怀信心地输入这个命令时,系统却会无情地提示:bash: ifconfig: command not found,这并非系统的错误,而是 CentOS 7 乃至整个现代 Linux 发行版生态发展的一个必然趋势。

核心原因:net-tools 与 iproute2 的更迭
ifconfig 命令隶属于 net-tools 软件包,这个软件包历史悠久,但其设计已经逐渐跟不上现代网络功能的复杂需求,它对一些新的网络概念(如网络命名空间、策略路由等)支持不佳,并且其输出格式对于脚本化处理来说也相对不够友好。
从 CentOS 7 开始,系统默认使用 iproute2 软件包来替代 net-tools。iproute2 提供了一套更强大、更灵活且功能更丰富的网络管理工具,其核心命令就是 ip,这个工具不仅能完全覆盖 ifconfig 的所有功能,还提供了对现代网络特性的全面支持。
拥抱现代:ip 命令的使用
既然 ifconfig 已成往事,学习并掌握 ip 命令就成为了每一位 CentOS 7 用户的必修课,下面我们来看看如何用 ip 命令完成 ifconfig 的常见任务。
查看网络接口信息
过去我们使用 ifconfig,现在等效的命令是 ip addr 或其简写 ip a。
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:5a:7e:b9 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe5a:7eb9/64 scope link
valid_lft forever preferred_lft forever
这段输出信息比 ifconfig 更为结构化和详细,它清晰地展示了每个接口(如 lo 和 eth0)的编号、状态(UP)、MAC 地址(link/ether)以及 IPv4/IPv6 地址信息。168.1.100/24 这种 CIDR 表示法也比传统的 IP 加子网掩码更加简洁。

查看接口的链路层状态
如果你只关心接口是否启动(UP)以及其 MAC 地址,可以使用 ip link 或 ip l。
$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:5a:7e:b9 brd ff:ff:ff:ff:ff:ff
命令对比:快速上手指南
为了帮助您快速从 ifconfig 过渡到 ip 命令,下面是一个常用功能的对比表格:
| 功能描述 | 旧命令 (net-tools) |
新命令 (iproute2) |
|---|---|---|
| 查看所有接口信息 | ifconfig -a |
ip addr show 或 ip a |
| 查看指定接口信息 | ifconfig eth0 |
ip addr show eth0 或 ip a show eth0 |
| 启用/禁用接口 | ifconfig eth0 up / ifconfig eth0 down |
ip link set eth0 up / ip link set eth0 down |
| 为接口添加IP地址 | ifconfig eth0 192.168.1.10 |
ip addr add 192.168.1.10/24 dev eth0 |
| 从接口删除IP地址 | ifconfig eth0 192.168.1.10 (需特殊工具) |
ip addr del 192.168.1.10/24 dev eth0 |
| 查看路由表 | route -n |
ip route show 或 ip r |
| 添加默认网关 | route add default gw 192.168.1.1 |
ip route add default via 192.168.1.1 |
怀旧选择:重新安装 ifconfig
尽管强烈推荐使用 ip 命令,但如果某些旧脚本或个人习惯让您无法割舍 ifconfig,您仍然可以轻松地将其安装回系统。ifconfig 包含在 net-tools 软件包中,只需通过 yum 命令安装即可。
sudo yum install net-tools
安装完成后,ifconfig 命令便可立即使用,但请记住,这仅仅是为了兼容性的临时方案,长远来看,迁移到 iproute2 才是顺应技术发展的正确选择。
相关问答 FAQs
Q1: 为什么我更推荐使用 ip 命令而不是 ifconfig?

A: 主要原因有三点。ip 命令功能更强大,它原生支持现代网络特性如网络命名空间、策略路由和隧道技术,而 ifconfig 对这些新特性的支持非常有限或根本没有。ip 命令的输出格式统一且结构化,非常利于编写脚本进行自动化解析和处理。iproute2 是所有主流现代 Linux 发行版(如 CentOS 7+, RHEL 7+, Ubuntu 18.04+)的默认网络工具,掌握它意味着您具备了跨发行版的管理能力,具有更好的未来兼容性。
Q2: 除了 ip addr,还有哪些常用的 ip 子命令?
A: ip 命令是一个功能集,除了 ip addr(地址管理),还有几个非常实用的子命令:
ip link:用于管理和查看网络设备的链路层信息,比如启用/禁用接口、查看 MAC 地址、修改 MTU 值等。ip route:用于查看和操作系统的路由表,ip route show查看路由,ip route add添加静态路由。ip neigh:用于查看和管理邻居表(ARP 表),显示 IP 地址与 MAC 地址的对应关系,功能等同于旧的arp -n命令。