Ubuntu 22.04下使用Netplan配置单网卡多VLAN与网桥用于KVM/QEMU的配置问题
Ubuntu 22.04下使用Netplan配置单网卡多VLAN与网桥用于KVM/QEMU的配置问题
老哥我太懂这种Netplan看起来简单但突然卡壳的感觉了!结合你的环境(Ubuntu 22.04、TP-Link TL-SG108E交换机),我帮你捋清楚单网卡+多VLAN+网桥的配置步骤,顺便揪出可能踩坑的地方:
第一步:先确认你的物理网卡名称
先跑个命令看清楚你的物理网卡叫啥(比如enp0s3、eth0之类的):
ip link show
记下来,后面配置要用到。
第二步:编写Netplan配置文件
Ubuntu 22.04的Netplan配置文件在/etc/netplan/目录下,一般是00-installer-config.yaml(如果没有就新建一个)。注意YAML对缩进要求极严,必须用2个空格,不能用Tab!
下面是适配你需求的配置示例,记得替换成你的实际网卡名称和网关:
network: version: 2 ethernets: enp0s3: # 这里替换成你的物理网卡名称 dhcp4: no dhcp6: no vlans: vlan11: # 对应你交换机上的VLAN ID 11,绑定192.168.3.x子网 id: 11 link: enp0s3 dhcp4: no dhcp6: no vlan12: # 对应你交换机上的VLAN ID 12,绑定192.168.4.x子网 id: 12 link: enp0s3 dhcp4: no dhcp6: no bridges: br0: # 无VLAN的默认网桥,对应192.168.1.x网段 interfaces: [enp0s3] addresses: [192.168.1.22/24] gateway4: 192.168.1.1 # 替换成你的实际网关IP nameservers: addresses: [8.8.8.8, 1.1.1.1] dhcp4: no dhcp6: no stp: yes # 开启生成树,防止网络环路 forward-delay: 4 br3: # VLAN11对应的网桥,给192.168.3.x的VM用 interfaces: [vlan11] addresses: [192.168.3.2/24] dhcp4: no dhcp6: no stp: yes forward-delay: 4 br4: # VLAN12对应的网桥,给192.168.4.x的VM用 interfaces: [vlan12] addresses: [192.168.4.2/24] dhcp4: no dhcp6: no stp: yes forward-delay: 4
配置说明:
- 物理网卡:关闭DHCP,因为它只是作为VLAN和网桥的底层承载接口,不需要自己占IP
- VLAN接口:分别绑定物理网卡,指定对应交换机的VLAN ID,同样关闭DHCP
- 网桥:
br0直接绑定物理网卡,对应无VLAN的默认网段,配置网关和DNS(服务器的管理IP就在这里)br3/br4分别绑定对应的VLAN接口,配置各自子网的静态IP,给VM提供虚拟网络出入口
第三步:检查并修正你的交换机配置
看你给出的交换机VLAN配置,这里有个明显的坑:
ID NAME Mem Tag UnTag
11 vm1 1,3 1 3
12 vm2 1,3 1 3
端口3同时在VLAN11和12里设为Untagged,这会导致网络冲突!因为一个物理端口不能同时属于两个VLAN的Untag组。
正确的交换机配置应该是:
- 连接Ubuntu服务器的那个端口(比如端口1),在VLAN1、11、12里都设为Tagged模式(这样服务器才能接收带VLAN标签的流量)
- 如果你的VM是通过KVM虚拟网桥连接,不需要给VM单独分配物理交换机端口,所以VLAN11和12不需要设置Untag端口(除非你有物理设备要接入这些VLAN)
- 保留VLAN1的默认配置即可(如果需要其他物理设备访问默认网段)
第四步:应用Netplan配置
先测试配置(避免直接应用导致断网):
sudo netplan try
这个命令会应用配置,15秒内如果网络出问题会自动回滚,没问题的话按回车确认永久生效。
确认没问题后,永久应用:
sudo netplan apply
可以用下面的命令检查网桥和VLAN状态:
ip link show # 查看所有接口状态 sudo apt install bridge-utils && brctl show # 查看网桥详情
第五步:配置KVM虚拟机
给VM添加网卡时,选择对应的网桥即可:
- 192.168.1.x的VM选
br0 - 192.168.3.x的VM选
br3 - 192.168.4.x的VM选
br4
然后在VM系统里配置静态IP:
- 192.168.3.3/24,网关设为192.168.3.2
- 192.168.4.3/24,网关设为192.168.4.2
如果需要DHCP,可以在Ubuntu服务器上安装dnsmasq之类的DHCP服务,给不同网桥分配网段。
可能踩的其他坑
- YAML缩进错误:这是Netplan配置最常见的问题,一定要用2个空格缩进,不要用Tab
- VLAN ID不匹配:Netplan里的
vlan.id必须和交换机上的VLAN ID完全对应 - 物理网卡配置了IP:物理网卡不能有IP,所有IP都要配置在网桥上
- STP未开启:网桥开启STP可以防止虚拟网络和物理网络之间的环路
备注:内容来源于stack exchange,提问作者I Own I Owe Oh My




