Linux中配置虚拟网卡子接口需区分VLAN子接口(如eth0.100,带802.1Q标签,需modprobe 8021q)和传统别名接口(如eth0:0,无标签,仅多IP绑定);推荐使用ip命令创建、配置并启用,且必须持久化至网络配置文件。

在Linux中配置虚拟网卡子接口(即VLAN子接口或别名接口),主要通过ifconfig(传统方式,已逐步弃用)和ip命令(现代推荐方式)实现。核心在于为同一物理网卡绑定多个IP地址或划分VLAN逻辑接口,适用于多网络隔离、测试环境或服务绑定特定IP等场景。
理解子接口命名规则
子接口通常以“主设备名:编号”(如eth0:0)或“主设备名. VLAN ID”(如eth0.100)形式存在。前者是传统别名接口(仅用于多IP绑定,无VLAN标签),后者是802.1Q VLAN子接口(带Tag,需内核支持8021q模块)。两者用途不同,不能混用。
-
eth0:0:仅逻辑区分,数据帧不带VLAN Tag,适合单网段多IP绑定 -
eth0.100:内核自动添加VLAN头,用于跨交换机的VLAN通信 - 使用前确认物理接口已启用:
ip link set eth0 up
用ip命令创建并配置VLAN子接口
ip命令是当前标准工具,功能完整且与systemd-networkd、NetworkManager兼容性好。VLAN子接口需先加载模块,再添加设备并配置地址。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 加载VLAN支持:
modprobe 8021q(永久启用可写入/etc/modules) - 创建VLAN子接口:
ip link add link eth0 name eth0.100 type vlan id 100 - 为子接口分配IP并启用:
ip addr add 192.168.100.10/24 dev eth0.100 && ip link set eth0.100 up - 验证:
ip -d link show eth0.100查看VLAN ID;ip addr show eth0.100查看地址
用ifconfig配置传统别名接口(兼容旧脚本)
ifconfig不支持VLAN子接口,但可快速配置同网卡多IP(别名模式),适用于简单多地址绑定,如Web服务器绑定多个站点IP。
- 为eth0添加第二个IP:
ifconfig eth0:0 192.168.1.100/24 up - 查看所有别名接口:
ifconfig | grep -A 1 "eth0:"或ip addr show eth0(会显示所有附属地址) - 删除别名:
ifconfig eth0:0 down(注意不是del,直接down即可清除) - ⚠️ 注意:别名接口不参与路由决策,仅作为地址附属存在;重启后失效,需写入网络配置文件(如
/etc/network/interfaces或nmcli)
持久化配置与常见问题
临时配置重启即丢,生产环境必须持久化。推荐使用ip + systemd network files 或发行版原生方式(如Debian的/etc/network/interfaces、RHEL的/etc/sysconfig/network-scripts/ifcfg-eth0.100)。
- Debian/Ubuntu示例(
/etc/network/interfaces):
auto eth0.100
iface eth0.100 inet static
address 192.168.100.10
netmask 255.255.255.0
vlan-raw-device eth0 - 排查连通性:确认交换机端口已设为Trunk并允许对应VLAN;用
tcpdump -i eth0 vlan 100抓包验证Tag是否正常 - 冲突提示“Device or resource busy”:通常是子接口已存在,先
ip link delete eth0.100再重建

















