ifconfig 命令详解

ifconfig 命令详解

ifconfig(interface configuration)是 Linux/Unix 系统中用于配置、查询网络接口状态 的传统核心命令,支持网卡启用/禁用、IP 地址设置、子网掩码配置、MAC 地址修改等功能。虽然现代 Linux 推荐使用 ip 命令(如 ip addrip 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 示例):

    bash 复制代码
    TYPE=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 示例):

    yaml 复制代码
    network:
      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 地址 ifconfigifconfig [网卡名] ip addrip 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 routeip 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 等)。

相关推荐
摸鱼仙人~1 小时前
VMware虚拟机(以Ubuntu为例)的共享文件夹挂载操作
linux·chrome·ubuntu
ZhongruiRao1 小时前
vscode windows免密登录Linux服务器教程 解决设置后仍需要输入密码的问题
linux·服务器·vscode
XH-hui1 小时前
【打靶日记】VulNyx 之 Responder
linux·网络安全·vulnyx
云边云科技5341 小时前
企业SD-WAN选型指南:打造安全、体验至上的云网智联架构
网络·安全·架构·it·量子计算
njxiejing1 小时前
TCP连接详解:三次握手与实战分析(SYN,ACK,seq)
服务器·网络·tcp/ip
赖small强1 小时前
【Linux驱动开发】 Linux `/proc` 虚拟文件系统深度解析与实战指南
linux·驱动开发·/proc·/proc/sys`·/proc/net
milanyangbo1 小时前
从硬盘I/O到网络传输:Kafka与RocketMQ读写模型及零拷贝技术深度对比
java·网络·分布式·架构·kafka·rocketmq
HalvmånEver1 小时前
Linux:进程创建(进程控制一)
linux·运维·服务器·学习·进程·fork
陈聪.1 小时前
MySQL全平台安装指南:Windows与Linux详细教程
linux·windows·mysql