ifconfig 命令详解
ifconfig(interface configuration)是 Linux/Unix 系统中用于配置、查询网络接口状态 的传统核心命令,支持网卡启用/禁用、IP 地址设置、子网掩码配置、MAC 地址修改等功能。虽然现代 Linux 推荐使用 ip 命令(如 ip addr、ip link),但 ifconfig 仍广泛用于日常运维,尤其兼容 Rocky Linux 9、Ubuntu 24、openEuler 等主流发行版。
一、基础前提:安装 ifconfig(部分系统默认未预装)
ifconfig 属于 net-tools 工具集,部分 Linux 发行版(如 Ubuntu 20+、Rocky Linux 9)默认未安装,需手动安装:
| 系统类型 | 安装命令 |
|---|---|
| Debian/Ubuntu 24 | sudo apt update && sudo apt install net-tools |
| Rocky Linux 9/CentOS 9 | sudo dnf install net-tools(或 yum,二者等价) |
| openEuler | sudo dnf install net-tools |
安装后,直接在终端输入 ifconfig 即可执行。
二、核心功能:ifconfig 命令的 3 大核心用途
1. 查询网络接口信息(最常用)
命令格式:
bash
ifconfig # 查看所有激活的网络接口信息
ifconfig [网卡名] # 查看指定网卡信息(如 ifconfig ens33)
ifconfig -a # 查看所有网卡(包括未激活的)
输出详解(以 Rocky Linux 9 为例):
执行 ifconfig ens33 后,输出如下(关键字段已标注):
bash
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 # 网卡状态标志
inet 192.168.1.108 netmask 255.255.255.0 broadcast 192.168.1.255 # IPv4 配置
inet6 fe80::20c:29ff:fe7b:8c8a prefixlen 64 scopeid 0x20<link> # IPv6 配置
ether 00:0c:29:7b:8c:8a txqueuelen 1000 (Ethernet) # MAC 地址
RX packets 1200 bytes 1500000 (1.4 MiB) # 接收数据统计
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 800 bytes 900000 (878.9 KiB) # 发送数据统计
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
关键字段解释(必懂):
| 字段 | 含义 |
|---|---|
ens33 |
网卡名称(Linux 常见命名:ensXX 虚拟网卡、eth0 物理有线网卡、wlan0 无线网卡) |
flags=4163<...> |
网卡状态标志: - UP:网卡已激活(启用); - RUNNING:网卡正在运行(已连接网络); - BROADCAST:支持广播; - MULTICAST:支持组播 |
mtu 1500 |
最大传输单元(默认 1500 字节,以太网标准,超过会分片) |
inet 192.168.1.108 |
IPv4 地址(核心字段,用于局域网/互联网通信) |
netmask 255.255.255.0 |
子网掩码(划分网络位和主机位,配合 IP 确定网段) |
broadcast 192.168.1.255 |
广播地址(网段内所有设备可接收的地址) |
inet6 fe80::... |
IPv6 地址(无需关注,除非专门使用 IPv6 网络) |
ether 00:0c:29:7b:8c:8a |
MAC 地址(物理地址,网卡唯一标识,用于局域网通信) |
RX/TX packets |
接收/发送的数据包数量;bytes 为数据总量(排查网络流量问题) |
errors/dropped |
接收/发送错误、丢弃的数据包数量(非 0 可能表示网卡故障或网络异常) |
2. 配置网络接口(临时生效,重启失效)
ifconfig 配置的 IP、子网掩码等参数仅在当前系统运行时有效 ,重启网卡(systemctl restart NetworkManager)或重启系统后会丢失。若需永久生效,需修改网卡配置文件(后续会讲)。
(1)设置网卡 IPv4 地址和子网掩码
格式:sudo ifconfig [网卡名] [IP地址] netmask [子网掩码]
示例(为 ens33 配置静态 IP):
bash
sudo ifconfig ens33 192.168.1.200 netmask 255.255.255.0
- 作用:将网卡
ens33的 IPv4 地址设为192.168.1.200,子网掩码255.255.255.0(对应 C 类网段)。 - 验证:执行
ifconfig ens33,查看inet字段是否更新。
(2)启用/禁用网络接口(激活/关闭网卡)
- 禁用网卡(断网):
sudo ifconfig [网卡名] down
示例:sudo ifconfig ens33 down(执行后网卡停止工作,ifconfig中无该网卡信息) - 启用网卡(联网):
sudo ifconfig [网卡名] up
示例:sudo ifconfig ens33 up(重新激活网卡,恢复网络连接)
(3)设置网卡广播地址
格式:sudo ifconfig [网卡名] broadcast [广播地址]
示例(配合 IP 和子网掩码设置):
bash
sudo ifconfig ens33 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255
- 说明:广播地址通常由 IP 和子网掩码自动计算(如 192.168.1.0/24 网段的广播地址默认是 192.168.1.255),无需手动设置。
(4)修改网卡 MAC 地址(伪装物理地址)
格式:sudo ifconfig [网卡名] hw ether [新MAC地址]
示例(修改 ens33 的 MAC 地址):
bash
sudo ifconfig ens33 down # 先禁用网卡(必须步骤)
sudo ifconfig ens33 hw ether 00:11:22:33:44:55 # 设置新 MAC 地址
sudo ifconfig ens33 up # 重新启用网卡
- 验证:
ifconfig ens33,查看ether字段是否变为新 MAC 地址。 - 用途:测试网络设备绑定、规避 MAC 地址限制等场景(临时生效)。
(5)配置网卡多IP地址(别名IP)
格式:sudo ifconfig [网卡名]:[别名] [IP地址] netmask [子网掩码]
示例(为 ens33 添加第二个 IP 192.168.1.201):
bash
sudo ifconfig ens33:0 192.168.1.201 netmask 255.255.255.0
- 验证:
ifconfig会显示ens33:0接口,对应新 IP。 - 用途:一台服务器需要多个 IP 提供服务(如多网站部署)。
3. 排查网络问题(实用场景)
(1)查看所有网卡的 IP 地址(过滤冗余信息)
bash
ifconfig | grep -E 'inet |ether ' # 只显示 IPv4 地址和 MAC 地址
输出示例:
inet 192.168.1.108 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0c:29:7b:8c:8a txqueuelen 1000 (Ethernet)
inet 127.0.0.1 netmask 255.0.0.0
- 说明:
127.0.0.1是本地回环地址(lo 接口),用于本机进程间通信,不是真实网卡 IP。
(2)检查网卡是否激活(判断是否断网)
bash
ifconfig [网卡名] | grep -i "UP,RUNNING"
- 若有输出:网卡已激活且正常连接(如
flags=4163<UP,BROADCAST,RUNNING,MULTICAST>)。 - 若无输出:网卡未激活(需执行
sudo ifconfig [网卡名] up)或未连接网线/Wi-Fi。
(3)查看网络流量(判断是否有异常传输)
通过 RX/TX bytes 字段观察数据量变化:
bash
watch -n 1 'ifconfig ens33 | grep -E "RX packets|TX packets"'
- 作用:每 1 秒刷新一次接收/发送数据包数量,若数据量突然暴涨,可能存在网络攻击或异常程序占用带宽。
三、ifconfig 常用参数汇总
| 参数 | 作用 |
|---|---|
| 无参数 | 查看所有激活的网卡信息 |
-a |
查看所有网卡(包括未激活的) |
[网卡名] |
查看指定网卡的详细信息(如 ifconfig ens33) |
up |
激活网卡(如 sudo ifconfig ens33 up) |
down |
禁用网卡(如 sudo ifconfig ens33 down) |
hw ether |
修改网卡 MAC 地址(如 sudo ifconfig ens33 hw ether 00:11:22:33:44:55) |
netmask |
设置子网掩码(如 sudo ifconfig ens33 192.168.1.200 netmask 255.255.255.0) |
broadcast |
设置广播地址(如 sudo ifconfig ens33 broadcast 192.168.1.255) |
四、临时配置 vs 永久配置
ifconfig 的所有配置均为临时生效,重启后丢失。若需永久设置 IP、子网掩码等,需修改对应发行版的网卡配置文件:
1. Rocky Linux 9 / openEuler(RHEL 系)
-
配置文件路径:
/etc/sysconfig/network-scripts/ifcfg-[网卡名](如ifcfg-ens33) -
编辑命令:
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 -
关键配置(静态 IP 示例):
bashTYPE=Ethernet BOOTPROTO=static # 静态 IP(dhcp 为自动获取) NAME=ens33 DEVICE=ens33 ONBOOT=yes # 开机自动激活网卡 IPADDR=192.168.1.200 # 静态 IP 地址 NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 网关(路由器 IP) DNS1=8.8.8.8 # DNS 服务器(谷歌 DNS) -
生效命令:
sudo systemctl restart NetworkManager
2. Ubuntu 24(Debian 系)
-
配置文件路径:
/etc/netplan/00-installer-config.yaml(文件名可能不同,以.yaml结尾) -
编辑命令:
sudo vim /etc/netplan/00-installer-config.yaml -
关键配置(静态 IP 示例):
yamlnetwork: ethernets: ens33: # 网卡名 addresses: [192.168.1.200/24] # IP 地址+子网掩码(/24 对应 255.255.255.0) gateway4: 192.168.1.1 # 网关 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS 服务器 version: 2 -
生效命令:
sudo netplan apply(无需重启,立即生效)
五、ifconfig 与 ip 命令对比
ifconfig 是传统工具,功能有限且不支持 IPv6 高级配置;ip 命令是 Linux 内核推荐的新一代网络管理工具,功能更强大、全面,二者对应关系如下:
| 功能需求 | ifconfig 命令 | ip 命令(推荐) |
|---|---|---|
| 查看 IP 地址 | ifconfig 或 ifconfig [网卡名] |
ip addr 或 ip addr show [网卡名] |
| 激活/禁用网卡 | sudo ifconfig [网卡名] up/down |
sudo ip link set [网卡名] up/down |
| 设置静态 IP | sudo ifconfig [网卡名] IP netmask 掩码 |
sudo ip addr add IP/掩码 dev [网卡名] |
| 查看路由表 | route -n(需安装 net-tools) |
ip route 或 ip route show |
| 查看网络连接(TCP/UDP) | netstat -tuln(需安装 net-tools) |
ss -tuln(默认预装,更快) |
- 建议:初学者先掌握
ifconfig建立基础认知,后续逐步过渡到ip命令(更适合生产环境)。
六、常见问题排查
1. 执行 ifconfig 提示"command not found"?
- 原因:未安装
net-tools工具集。 - 解决:按前文"基础前提"中的命令安装(如 Ubuntu 用
sudo apt install net-tools)。
2. 配置 IP 后无法上网?
- 检查网关是否正确(
GATEWAY需设为路由器的 IP,如 192.168.1.1)。 - 检查 DNS 是否配置(未配置 DNS 会导致无法解析域名,如打不开百度)。
- 验证:
ping 8.8.8.8(能通说明网络连通,不通则网关/路由有问题);ping www.baidu.com(能通说明 DNS 正常)。
3. 重启系统后 IP 配置丢失?
- 原因:用
ifconfig做的是临时配置,未修改永久配置文件。 - 解决:按前文"临时配置 vs 永久配置"修改对应发行版的网卡配置文件。
总结
ifconfig 是 Linux 网络管理的"入门级核心工具",核心用途是查询网卡信息 和临时配置网络参数 。掌握它能快速理解 IP、子网掩码、MAC 地址等核心网络概念,结合永久配置文件可实现服务器固定 IP 部署。建议初学者先通过 ifconfig 练习基础操作,再逐步学习 ip 命令和更复杂的网络配置(如桥接、VLAN 等)。