Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

1. ifconfig 命令简介

ifconfig(interface configurator)是一个用于配置和显示Linux系统内核中网络接口参数的工具。它通常在系统启动时被用来设置网络接口,之后也可用于调试或系统调优。

注意:在现代Linux发行版中,ifconfig 命令正逐渐被功能更强大的 ip 命令所取代,但因其语法简单直观,目前仍被广泛使用。

2. ifconfig 的安装

在大多数现代 Linux 发行版中,ifconfig 命令已经不再默认安装,因为它属于传统的 net-tools 软件包,正逐渐被功能更强大的 ip 命令套件所取代。

2.1. 检查ifconfig是否安装

1
2
ifconfig
zsh: command not found: ifconfig

出现上面的错误提示则说明未安装,如果已安装能显示相应的网卡信息。

2.2. 安装ifconfig

Debian/Ubuntu系统:

1
2
3
4
5
# 首先更新软件包列表
sudo apt update

# 安装 net-tools 包
sudo apt install net-tools

CentOS7/RHEL7系统:

1
2
sudo yum update
sudo yum install net-tools

CentOS8/RHEL8/Fedora系统:

1
2
sudo dnf update
sudo dnf install net-tools

3. ifconfig 常用命令语法

3.1. 3.1 基本语法

1
ifconfig [interface] [options] [address]

3.2. 3.2 常用操作示例

1. 显示所有接口信息

1
2
ifconfig
ifconfig -a # 显示所有接口,包括禁用的

2. 显示指定接口信息

1
ifconfig eth0

3. 启用/禁用网络接口

1
2
ifconfig eth0 up        # 启用接口
ifconfig eth0 down # 禁用接口

4. 配置IP地址和子网掩码

1
2
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
ifconfig eth0 192.168.1.100/24 # CIDR表示法

5. 配置广播地址

1
ifconfig eth0 broadcast 192.168.1.255

6. 设置MAC地址

1
ifconfig eth0 hw ether 00:11:22:33:44:55

7. 设置MTU值

1
ifconfig eth0 mtu 9000

8. 添加别名接口(一个接口多个IP)

1
2
ifconfig eth0:0 192.168.1.200
ifconfig eth0:1 192.168.1.201

9. 开启/关闭混杂模式

1
2
ifconfig eth0 promisc    # 开启
ifconfig eth0 -promisc # 关闭

4. ifconfig 输出结果详细解析

4.1. 网络接口基本信息

1
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  • 接口名称:如 eth0ens33wlan0 等。
  • flags:接口状态标志
    • UP:接口已启用。
    • BROADCAST:支持广播通信。
    • RUNNING:接口正在运行。
    • MULTICAST:支持多播。
    • LOOPBACK:回环接口。
    • PROMISC:混杂模式(监听所有流量)。
  • mtu:最大传输单元(1500是标准以太网值)。

4.2. IPv4 配置信息

1
inet 172.31.169.244  netmask 255.255.240.0  broadcast 172.31.175.255
  • inet:IPv4地址。
  • netmask:子网掩码。
  • broadcast:广播地址。
  • destination:目标地址(在点对点连接中显示)。

4.3. IPv6 配置信息

1
inet6 fe80::215:5dff:fe76:6afc  prefixlen 64  scopeid 0x20<link>
  • inet6:IPv6地址。
  • prefixlen:前缀长度(类似IPv4的子网掩码)。
  • scopeid:地址作用域
    • link:链路本地。
    • site:站点本地。
    • host:仅本机。

4.4. 物理层信息

1
ether 00:15:5d:76:6a:fc  txqueuelen 1000  (Ethernet)
  • ether:MAC地址/硬件地址。
  • txqueuelen:传输队列长度。

4.5. 统计信息

接收统计

1
2
RX packets 244805  bytes 420876152 (420.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
  • packets/bytes:成功接收的数据包和字节总数。
  • errors:接收错误的数据包数。
  • dropped:因资源不足等原因丢弃的数据包。
  • overruns:接收队列溢出次数。
  • frame:帧错误(CRC校验失败等)。

发送统计

1
2
TX packets 124485  bytes 9061530 (9.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • carrier:载波错误(物理连接问题)。
  • collisions:数据包冲突次数。

4.6. 举例说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
ifconfig
# eth0: 网络接口名;
# UP: 接口已启用,BROADCAST: 接口支持广播,RUNNING: 接口正在运行,MULTICAST: 接口支持多播
# mtu 1500: 最大传输单元。表示该接口一次可以发送的最大数据包大小为 1500 字节
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
# IPv4地址:172.31.169.244,子网掩码:255.255.240.0,广播地址:172.31.175.255
inet 172.31.169.244 netmask 255.255.240.0 broadcast 172.31.175.255
# IPv6地址:fe80::215:5dff:fe76:6afc,IPv6地址的前缀长度(类似于IPv4的子网掩码):64。
# 地址的作用域:0x20<link>;link 表示这是一个链路本地地址,仅在当前物理网络链路(如局域网)内有效,用于邻居发现等。
inet6 fe80::215:5dff:fe76:6afc prefixlen 64 scopeid 0x20<link>
# MAC地址(全球唯一硬件地址):00:15:5d:76:6a:fc;传输队列长度:1000
ether 00:15:5d:76:6a:fc txqueuelen 1000 (Ethernet)
# 接收的数据统计: 成功接收的数据包是244805,成功接收的总数据量是420.8MB
RX packets 244805 bytes 420876152 (420.8 MB)
# 表示接收的数据统计: 发生错误的数据包数是0,被丢弃的数据包数是0,溢出次数是0,接收到的帧错误数是0
RX errors 0 dropped 0 overruns 0 frame 0
# 发送的数据统计: 成功发送的数据包总数是124485,成功发送的总数据量是9.0 MB
TX packets 124485 bytes 9061530 (9.0 MB)
# 发送的数据统计: 发送时被丢弃的数据包数是0,发送队列溢出次数是0,载波错误的数量是0,冲突次数是0。
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 73782 bytes 60481665 (60.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 73782 bytes 60481665 (60.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

5. 实际应用场景

5.1. 临时修改IP地址

1
2
# 临时配置IP,重启后失效
ifconfig eth0 192.168.1.150 netmask 255.255.255.0 up

5.2. 网络故障排查

1
2
3
# 检查接口状态和统计信息
ifconfig eth0
# 查看是否有错误、丢包等

5.3. 重置网络接口

1
2
ifconfig eth0 down
ifconfig eth0 up

5.4. 配置多个IP地址

1
2
3
4
5
# 主IP
ifconfig eth0 192.168.1.100/24
# 别名IP
ifconfig eth0:0 192.168.1.200/24
ifconfig eth0:1 192.168.1.201/24

6. ifconfigip 命令对比

功能 ifconfig 命令 ip 命令
显示接口信息 ifconfig ip addr show
启用接口 ifconfig eth0 up ip link set eth0 up
禁用接口 ifconfig eth0 down ip link set eth0 down
配置IP ifconfig eth0 192.168.1.100/24 ip addr add 192.168.1.100/24 dev eth0
删除IP ifconfig eth0 0 ip addr del 192.168.1.100/24 dev eth0
显示路由 route -n ip route show

7. 注意事项

  1. 临时性配置:使用ifconfig进行的配置在重启后失效,永久配置需修改网络配置文件。
  2. 逐渐被淘汰:许多新Linux发行版默认不安装ifconfig,推荐学习使用 ip 命令。
  3. 权限要求:大多数ifconfig操作需要root权限。
  4. 诊断价值:统计信息(errors, dropped, overruns)对网络故障诊断很有帮助。
  5. 接口命名:现代系统可能使用不同的接口命名规则,如:
    • ens33:以太网接口。
    • wlp2s0:无线接口。
    • enp0s3:PCI以太网接口。

评论