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 小时前
生成对抗样本在网络安全中的工程化解读——AI 误报、误判与对抗的真实边界
运维·网络·人工智能·python·安全·web安全
仙俊红1 小时前
计算机网络知识总结01
网络·计算机网络·智能路由器
zeijiershuai1 小时前
Linux、Linux常用命令、Linux软件安装、Linux项目部署
linux·运维·服务器
小宇的天下1 小时前
Calibre nmDRC 高级边缘处理与输出控制(17)
linux·运维·lvs
大聪明-PLUS2 小时前
工业控制器、Linux 和纯 C++。第一部分
linux·嵌入式·arm·smarc
碎碎思2 小时前
从 JTAG 启动 Zynq-7000 嵌入式 Linux:使用 XSCT 全流程教程
linux·运维·服务器·fpga开发
一颗青果2 小时前
单例模式 | 死锁
linux·服务器·单例模式·1024程序员节
Tandy12356_2 小时前
手写TCP/IP协议栈——实现ping响应不可达
c语言·网络·c++·网络协议·tcp/ip·计算机网络
路西法012 小时前
# CentOS系统yum方式安装MySQL
linux·mysql·centos
梁辰兴2 小时前
计算机网络基础:吉比特以太网
网络·计算机网络·计算机·以太网·计算机网络基础·梁辰兴·吉比特以太网