ifconfig
(Interface Configuration)是一个用于查看和配置网络接口的命令。在 Linux 系统中,ifconfig
主要用于显示网络接口的状态信息(例如 IP 地址、子网掩码、广播地址等)以及配置网络接口。
尽管在较新的 Linux 发行版中,ifconfig
已逐渐被 ip
命令所取代,但它仍然是许多网络工程师和管理员熟悉和使用的命令。
基本语法
1 | ifconfig [网络接口] [选项] [参数] |
- 网络接口:网络设备的名称,例如
eth0
、wlan0
、lo
等。 - 选项和参数:用于配置或查看网络接口的功能。
查看网络接口信息
查看所有网络接口
1 | ifconfig |
-
输出示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::1e5a:3ff:fe42:8c25 prefixlen 64 scopeid 0x20<link>
ether 00:1e:5a:42:8c:25 txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 9876543 (9.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 54321 bytes 1234567 (1.2 MB)
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 100 bytes 2000 (2.0 KB)
TX packets 100 bytes 2000 (2.0 KB) -
字段说明:
- 网络接口名称(如
eth0
、lo
):表示网络设备名称。 - flags:接口的状态标志,如
UP
(接口激活)、RUNNING
(接口正在运行)。 - inet:IPv4 地址。
- inet6:IPv6 地址。
- netmask:子网掩码。
- broadcast:广播地址。
- ether:MAC 地址(物理地址)。
- RX/TX packets:接收(RX)和发送(TX)数据包的统计信息。
- errors/dropped:接收和发送过程中发生的错误统计。
- 网络接口名称(如
查看指定网络接口
1 | ifconfig eth0 |
-
输出示例:
1
2
3
4
5eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:1e:5a:42:8c:25 txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 9876543 (9.8 MB)
TX packets 54321 bytes 1234567 (1.2 MB) -
说明:只显示指定接口(如
eth0
)的信息。
配置网络接口
设置 IP 地址
1 | sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 |
- 说明:
- 将接口
eth0
的 IP 地址设置为192.168.1.100
,子网掩码为255.255.255.0
。
- 将接口
启用网络接口
1 | sudo ifconfig eth0 up |
- 说明:激活网络接口
eth0
。
禁用网络接口
1 | sudo ifconfig eth0 down |
- 说明:关闭网络接口
eth0
。
设置广播地址
1 | sudo ifconfig eth0 broadcast 192.168.1.255 |
- 说明:将
eth0
的广播地址设置为192.168.1.255
。
设置 MTU(最大传输单元)
1 | sudo ifconfig eth0 mtu 1400 |
- 说明:设置网络接口
eth0
的 MTU 值为1400
。
配置别名接口
通过别名创建虚拟接口(常用于多 IP 绑定)。
1 | sudo ifconfig eth0:1 192.168.2.1 netmask 255.255.255.0 |
- 说明:为
eth0
创建一个别名接口eth0:1
,并分配 IP 地址192.168.2.1
。
检测和诊断网络
查看接口流量统计
接口的接收(RX)和发送(TX)字节数、数据包数量:
1 | ifconfig eth0 |
- 字段说明:
- RX packets:接收的数据包数量。
- TX packets:发送的数据包数量。
- bytes:接收或发送的字节总量。
- errors:接收或发送过程中遇到的错误。
- dropped:丢弃的包。
- overruns:硬件缓存溢出统计。
清除网络接口的统计信息
1 | sudo ifconfig eth0 -statistics |
- 说明:清除接口的流量统计数据(部分系统可能不支持)。
替代命令
在较新的 Linux 系统中,ifconfig
已被 ip
命令所取代。以下是 ip
命令的等效操作:
操作 | ifconfig 命令 |
ip 命令 |
---|---|---|
查看所有接口信息 | ifconfig |
ip addr 或 ip a |
查看指定接口信息 | ifconfig eth0 |
ip addr show dev eth0 |
设置 IP 地址 | ifconfig eth0 192.168.1.100 |
sudo ip addr add 192.168.1.100/24 dev eth0 |
启用网络接口 | ifconfig eth0 up |
sudo ip link set eth0 up |
禁用网络接口 | ifconfig eth0 down |
sudo ip link set eth0 down |
设置 MTU | ifconfig eth0 mtu 1400 |
sudo ip link set dev eth0 mtu 1400 |
查看接口流量统计 | ifconfig eth0 |
ip -s link show dev eth0 |
注意事项
-
权限问题:
- 需要超级用户权限(
sudo
)才能配置网络接口。
- 需要超级用户权限(
-
替代工具:
ifconfig
已在较新的 Linux 发行版中被标记为过时,建议使用ip
命令。
-
安装
ifconfig
:- 如果系统中没有安装
ifconfig
,可以通过以下命令安装:1
2sudo apt install net-tools # 在基于 Debian 的系统中
sudo yum install net-tools # 在基于 RHEL 的系统中
- 如果系统中没有安装
总结
功能 | 命令 |
---|---|
查看所有接口信息 | ifconfig |
查看指定接口信息 | ifconfig eth0 |
启用接口 | sudo ifconfig eth0 up |
禁用接口 | sudo ifconfig eth0 down |
设置 IP 地址 | sudo ifconfig eth0 192.168.1.100 |
设置子网掩码 | sudo ifconfig eth0 netmask 255.255.255.0 |
设置广播地址 | sudo ifconfig eth0 broadcast 192.168.1.255 |
设置 MTU | sudo ifconfig eth0 mtu 1400 |
尽管 ifconfig
仍然有效,但建议在现代系统中逐渐过渡到 ip
命令,以便获得更多功能和更好的支持。