ifconfig命令

ifconfig 命令 #

ifconfig命令(interface configuration)用于配置、管理和查询网络接口。它可以显示网络接口的状态、配置 IP 地址、子网掩码、MAC 地址等。在现代 Linux 系统中,ifconfig命令已经被ip命令所取代,但由于其简单性和历史原因,仍然被广泛使用。

语法 #

ifconfig [接口] [参数]

常用选项和参数 #

选项/参数 描述
无参数 显示所有活动接口的信息
接口 指定要操作的网络接口(如 eth0, wlan0)
up 激活指定的网络接口
down 停用指定的网络接口
address/netmask 设置 IP 地址和子网掩码
broadcast 设置广播地址
[-]promisc 启用或禁用混杂模式
[-]allmulti 启用或禁用所有多播模式
mtu N 设置最大传输单元(MTU)
netmask 掩码 设置子网掩码
add 地址/前缀长度 添加 IPv6 地址
del 地址/前缀长度 删除 IPv6 地址
-a 显示所有接口的信息,包括非活动接口
-s 显示简短信息
-v 显示详细信息

安装 #

在某些现代 Linux 发行版中,ifconfig命令可能不是默认安装的。可以使用以下命令安装:

# Debian/Ubuntu
sudo apt install net-tools

# CentOS/RHEL
sudo yum install net-tools

# Fedora
sudo dnf install net-tools

# Arch Linux
sudo pacman -S net-tools

常见用法 #

1. 显示所有活动网络接口的信息 #

ifconfig

输出示例:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::215:5dff:fe01:7c0d  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:01:7c:0d  txqueuelen 1000  (Ethernet)
        RX packets 8859  bytes 1508527 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4523  bytes 4116345 (4.1 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 1234  bytes 123456 (123.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1234  bytes 123456 (123.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2. 显示特定网络接口的信息 #

ifconfig eth0

3. 显示所有网络接口的信息(包括非活动接口) #

ifconfig -a

4. 激活网络接口 #

sudo ifconfig eth0 up

5. 停用网络接口 #

sudo ifconfig eth0 down

6. 设置 IP 地址 #

sudo ifconfig eth0 192.168.1.100

7. 设置 IP 地址和子网掩码 #

sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

8. 设置 IP 地址、子网掩码和广播地址 #

sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255

9. 更改 MAC 地址 #

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

10. 启用混杂模式 #

sudo ifconfig eth0 promisc

11. 禁用混杂模式 #

sudo ifconfig eth0 -promisc

12. 设置 MTU 值 #

sudo ifconfig eth0 mtu 9000

13. 添加 IPv6 地址 #

sudo ifconfig eth0 add 2001:db8::1/64

14. 删除 IPv6 地址 #

sudo ifconfig eth0 del 2001:db8::1/64

输出解释 #

ifconfig命令的输出包含以下主要信息:

  • 接口名称:如 eth0, wlan0, lo 等
  • flags:接口的状态标志
    • UP:接口已激活
    • BROADCAST:接口支持广播
    • RUNNING:接口已就绪
    • MULTICAST:接口支持多播
    • LOOPBACK:环回接口
  • mtu:最大传输单元,以字节为单位
  • inet:IPv4 地址
  • netmask:子网掩码
  • broadcast:广播地址
  • inet6:IPv6 地址
  • prefixlen:IPv6 前缀长度
  • scopeid:IPv6 作用域 ID
  • ether:MAC 地址
  • txqueuelen:传输队列长度
  • RX packets/bytes:接收的数据包数量和字节数
  • TX packets/bytes:发送的数据包数量和字节数
  • errors/dropped/overruns/frame:各种错误统计

与 ip 命令的对比 #

ifconfig命令已经被ip命令所取代。以下是一些常见操作的对比:

操作 ifconfig 命令 ip 命令
显示所有接口 ifconfig ip addr show
显示特定接口 ifconfig eth0 ip addr show dev eth0
激活接口 ifconfig eth0 up ip link set eth0 up
停用接口 ifconfig eth0 down ip link set eth0 down
设置 IP 地址 ifconfig eth0 192.168.1.100 ip addr add 192.168.1.100/24 dev eth0
删除 IP 地址 不直接支持 ip addr del 192.168.1.100/24 dev eth0
设置 MTU ifconfig eth0 mtu 9000 ip link set eth0 mtu 9000

实用示例 #

1. 检查网络接口状态 #

ifconfig | grep -A 1 "eth"

2. 临时更改 IP 地址 #

sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

3. 检查网络接口的 MAC 地址 #

ifconfig eth0 | grep ether

4. 检查网络接口的数据传输统计 #

ifconfig eth0 | grep "RX\|TX"

5. 重启网络接口 #

sudo ifconfig eth0 down && sudo ifconfig eth0 up

6. 检查是否有接口处于混杂模式 #

ifconfig | grep PROMISC

7. 设置临时的别名接口(虚拟接口) #

sudo ifconfig eth0:0 192.168.2.100 netmask 255.255.255.0

注意事项 #

  1. 使用ifconfig命令进行的配置在系统重启后不会保留。要永久更改网络配置,应该修改网络配置文件。

  2. 在现代 Linux 发行版中,推荐使用ip命令代替ifconfig命令,因为ip命令提供了更多功能和更一致的语法。

  3. 在某些系统上,ifconfig命令可能需要 root 权限才能执行,特别是进行配置更改时。

  4. 不同的 Linux 发行版可能有不同的网络配置文件和工具,如:

    • Debian/Ubuntu: /etc/network/interfaces
    • CentOS/RHEL: /etc/sysconfig/network-scripts/ifcfg-*
    • 使用 NetworkManager 的系统: nmclinmtui工具

提示 #

  • 使用ifconfig命令可以快速查看网络接口的状态和配置
  • 对于临时网络配置更改,ifconfig命令很方便
  • 在脚本中,可以使用ifconfig命令提取网络信息
  • 使用ifconfig -a可以查看所有网络接口,包括未激活的接口
  • 在现代系统中,建议学习和使用ip命令,因为它是ifconfig的替代品
  • 使用ifconfig命令更改网络配置通常需要 root 权限
  • 在容器或虚拟环境中,可能需要特殊权限才能使用ifconfig命令