You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 22.04下使用Netplan配置单网卡多VLAN与网桥用于KVM/QEMU的配置问题

Ubuntu 22.04下使用Netplan配置单网卡多VLAN与网桥用于KVM/QEMU的配置问题

老哥我太懂这种Netplan看起来简单但突然卡壳的感觉了!结合你的环境(Ubuntu 22.04、TP-Link TL-SG108E交换机),我帮你捋清楚单网卡+多VLAN+网桥的配置步骤,顺便揪出可能踩坑的地方:

第一步:先确认你的物理网卡名称

先跑个命令看清楚你的物理网卡叫啥(比如enp0s3eth0之类的):

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服务,给不同网桥分配网段。

可能踩的其他坑

  1. YAML缩进错误:这是Netplan配置最常见的问题,一定要用2个空格缩进,不要用Tab
  2. VLAN ID不匹配:Netplan里的vlan.id必须和交换机上的VLAN ID完全对应
  3. 物理网卡配置了IP:物理网卡不能有IP,所有IP都要配置在网桥上
  4. STP未开启:网桥开启STP可以防止虚拟网络和物理网络之间的环路

备注:内容来源于stack exchange,提问作者I Own I Owe Oh My

火山引擎 最新活动