在 Linux 系统管理中,了解和配置网络接口是一项基础且至关重要的技能,对于许多长期使用 Linux 的管理员而言,ifconfig 是一个耳熟能详的经典命令,在 CentOS 系统中,ifconfig 主要用于配置和显示网络接口的参数信息,尽管在现代 CentOS 版本中,它已逐渐被更强大的 ip 命令所取代,但凭借其简洁的输出和广泛的使用历史,ifconfig 仍然是许多用户排查网络问题的首选工具之一,本文将深入探讨如何在 CentOS 中使用 ifconfig 查看所有网络接口信息,并涵盖其相关用法与现代替代方案。

ifconfig 命令基础与输出解析
直接在终端中输入 ifconfig 命令,系统会列出当前所有处于“活动”状态的网络接口,一个典型的输出会包含一个或多个网络块,eth0(以太网卡)和 lo(回环接口)。
ifconfig
输出示例如下:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe2b:c1d1 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:2b:c1:d1 txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 1234567 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 54321 bytes 9876543 (9.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 10 bytes 800 (800.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10 bytes 800 (800.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
为了更好地理解这些信息,下表对关键字段进行了解析:
| 字段 | 含义 | 示例 |
|---|---|---|
eth0 / lo |
网络接口的名称 | eth0 (第一块以太网卡), lo (回环接口) |
flags |
接口状态标志,如 UP (已启用), RUNNING (已连接), BROADCAST (支持广播) |
UP,BROADCAST,RUNNING,MULTICAST |
mtu |
最大传输单元,即网络接口能传输的最大数据包大小 | 1500 |
inet |
接口的 IPv4 地址 | 168.1.101 |
netmask |
子网掩码,用于定义网络地址范围 | 255.255.0 |
broadcast |
广播地址,用于向网络中的所有设备发送数据 | 168.1.255 |
ether |
接口的 MAC 地址(硬件地址) | 08:00:27:2b:c1:d1 |
RX packets / TX packets |
接收和发送的数据包数量 | RX packets 12345 |
RX bytes / TX bytes |
接收和发送的数据总量 | TX bytes 9876543 |
如何真正地“查看所有”网络接口
需要注意的是,默认的 ifconfig 命令只会显示那些已经被激活(UP 状态)的接口,如果系统中存在一个网络卡但尚未被启用,或者被手动禁用了,那么它不会出现在默认输出中。
要查看系统中所有的网络接口,包括那些被禁用的,需要使用 -a 参数:
ifconfig -a
这个命令会列出所有检测到的网络设备,无论其当前状态是 UP 还是 DOWN,这对于排查物理网卡存在但系统未能正确启动它的问题非常有帮助,输出中可能会看到一个状态为 DOWN 的接口,eth1,这提示你需要手动启用它。
ifconfig 的实用技巧与临时配置
除了查看信息,ifconfig 还可以用于一些临时的网络配置操作。

-
查看特定接口:如果你只关心某一个接口,可以在命令后加上接口名。
ifconfig eth0
-
启用/禁用接口:可以使用
up和down参数来临时控制接口状态。sudo ifconfig eth0 down # 禁用 eth0 sudo ifconfig eth0 up # 启用 eth0
-
临时配置 IP 地址:可以为接口临时分配一个 IPv4 地址和子网掩码。
sudo ifconfig eth0 192.168.1.200 netmask 255.255.255.0
这种配置方式是临时的,系统重启或网络服务重启后,配置就会丢失,永久性的配置需要修改网络配置文件。
现代替代方案:ip 命令
从 CentOS 7 开始,ifconfig 所属的 net-tools 包不再默认安装,官方推荐使用 iproute2 软件包中的 ip 命令。ip 命令功能更强大,能更好地支持现代网络特性(如策略路由、网络命名空间等)。
以下是 ifconfig 和 ip 命令在常见操作上的对比:
| 功能描述 | ifconfig 命令 |
ip 命令等效操作 |
|---|---|---|
| 查看所有活动接口 | ifconfig |
ip addr show 或 ip a |
| 查看所有接口(包括禁用的) | ifconfig -a |
ip addr show (默认显示所有) |
| 查看特定接口 | ifconfig eth0 |
ip addr show eth0 |
| 启用接口 | sudo ifconfig eth0 up |
sudo ip link set eth0 up |
| 禁用接口 | sudo ifconfig eth0 down |
sudo ip link set eth0 down |
| 为接口添加 IP 地址 | sudo ifconfig eth0 192.168.1.1/24 |
sudo ip addr add 192.168.1.1/24 dev eth0 |
常见问题:ifconfig 命令未找到
在较新的 CentOS(如 7、8、9)系统中,当你尝试使用 ifconfig 时,可能会遇到 -bash: ifconfig: command not found 的错误,这正是因为系统没有预装 net-tools 包。

解决方法非常简单,使用 yum 或 dnf(取决于 CentOS 版本)进行安装即可:
sudo yum install net-tools
或
sudo dnf install net-tools
安装完成后,ifconfig 命令就可以正常使用了。
相关问答 (FAQs)
问题1:ifconfig 和 ip addr 显示的输出有何主要区别?
答: 主要区别在于设计理念和输出格式。ifconfig 的输出更直观、简洁,每个接口占据一个独立的区块,适合快速查看基本 IP 和 MAC 地址,而 ip addr 的输出更结构化、信息更丰富,它将接口状态(link layer)和地址信息(address layer)分开显示,并明确区分了 IPv4 和 IPv6 地址。ip 命令是现代 Linux 网络管理的标准,支持更多高级功能,而 ifconfig 已被标记为过时。
问题2:ifconfig 设置的 IP 地址在重启后会丢失,我该如何使其永久生效?
答: ifconfig 用于运行时临时配置,要永久生效需要修改系统的网络配置文件,在 CentOS 7/8 中,网络配置文件通常位于 /etc/sysconfig/network-scripts/ 目录下,文件名格式为 ifcfg-<接口名>(ifcfg-ens33),你需要使用文本编辑器(如 vi)打开对应的文件,修改或添加 BOOTPROTO=static、IPADDR=192.168.1.100、NETMASK=255.255.255.0、GATEWAY=192.168.1.1 等参数,然后保存文件并重启网络服务(sudo systemctl restart network 或 sudo nmcli connection reload),更现代的方法是使用 nmcli(NetworkManager 命令行工具)来进行图形化的、持久的配置。