Linux 中能否直接修改 VLAN 子接口的 VLAN ID?
问答百晓生
结论
对于 Linux 标准 802.1Q VLAN 子接口,通常无法用 ip link set 直接修改现有接口的 VLAN ID。VLAN ID 是虚拟接口的关键属性。要更换 ID,通常需要创建一个使用新 ID 的 VLAN 接口,再迁移地址、路由和相关服务配置。Linux 内核的 VLAN 实现会根据 VLAN 协议和 ID 管理 VLAN 设备。内核 VLAN 实现
例如,要把父接口 eth0 上 VLAN ID 为 100 的接口切换到 ID 200,可以先创建一个临时接口:
sudo ip link add link eth0 name vlan-new type vlan id 200
sudo ip link set dev vlan-new up
接着为 vlan-new 配置所需的 IP 地址、路由和服务,并确认新 VLAN 的网络连通性。准备切换时,删除旧接口;如需保留原接口名,再将临时接口改名:
sudo ip link delete dev eth0.100
sudo ip link set dev vlan-new name eth0.100
请将示例中的接口名、VLAN ID 和配置替换为实际值。删除旧接口会中断其上的连接,因此切换前应安排维护窗口,并确认管理连接不依赖该接口。若使用 NetworkManager、systemd-networkd 或其他网络管理工具,也要更新其持久化配置,否则重启或重新加载网络配置后,设置可能恢复为旧值。
备注:内容仅供参考。
