在一台物理计算机上创建两个网桥

在一台物理计算机上创建两个网桥

我的电脑上有两张网卡。我想用 netplan 创建两个网桥,以便将这些桥接网络添加到基于内核的虚拟机 (KVM)。两张网卡都连接到可以访问互联网的同一路由器。

我使用以下网络配置netplan

network:
    version: 2
    renderer: networkd
    ethernets:
        eth-host0:
          match:
            macaddress: xxx:97:02
          dhcp4: false
          dhcp6: false
        eth-host1:
          match:
            macaddress: xxx:08:61
          dhcp4: false
          dhcp6: false
    bridges:
        br0:
          interfaces: [eth-host0]
          addresses: [192.168.0.9/24]
          gateway4: 192.168.0.1
          mtu: 1500
          nameservers:
            addresses: [8.8.8.8]
          parameters:
            stp: true
            forward-delay: 4
          dhcp4: true
          dhcp6: false
        br1:
          interfaces: [eth-host1]
          addresses: [192.168.1.9/24]
          gateway4: 192.168.0.1
          mtu: 1500
          nameservers:
            addresses: [8.8.8.8]
          parameters:
            stp: true
            forward-delay: 4
          dhcp4: true
          dhcp6: false 

当我发出命令时

sudo netplan apply

我收到以下错误“验证默认路由一致性时遇到问题。请设置多个路由表并改用routing-policy。错误:IPv4 的默认路由声明冲突(表:main,度量:default),首先在 br0 中声明,但也在 br1 中声明”

如果我删除默认网关,则应用通过,但我的虚拟机上没有任何网络。

如何在同一台计算机上正确配置两座网桥?

答案1

我不是 Netplan 专家,但您可以尝试gateway4: 192.168.0.1从 br1 中删除它(但将其保留在 br0 上)。

如果这不起作用,请尝试将其添加到br1

routes:
  - to: 0.0.0.0/0
    via: 192.168.0.1
    table: 101
routing-policy:
  - from: 192.168.1.9/24
    table: 101

netplan apply顺便说一句,在运行run之前netplan generate。然后您将在应用之前看到错误。我曾几次因为简单的错误而失去与服务器的连接 :-)

通常我还必须重新启动才能完全应用更改。

答案2

我设法在一台机器上配置了两个网桥,该机器是多个 KVM VM 的主机,我将桥接(虚拟)网络设备传递给这些虚拟机。

我在连接到互联网的路由器上运行 DHCP 服务器。路由器的 LAN 地址为 192.168.0.1,因此相同的地址将是默认网关。我在路由器上运行的 DHCP 服务器端根据每个虚拟机的 MAC 为其分配永久地址。

network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
          match:
            macaddress: private:01
          set-name: tplink-usb3.0
          dhcp4: true
          dhcp6: false
          optional: true
          mtu: 1500
          nameservers:
            addresses: [8.8.8.8]
        eth-host0:
          match:
            macaddress: private:02
          dhcp4: false
          dhcp6: false
        eth-host1:
          match:
            macaddress: private:03
          dhcp4: true
          dhcp6: false
    bridges:
        br0:
          interfaces: [eth-host0]
          mtu: 1500
          nameservers:
            addresses: [8.8.8.8]
          parameters:
            stp: true
            forward-delay: 4
          dhcp4: true
          dhcp6: false
        br1:
          interfaces: [eth-host1]
          mtu: 1500
          nameservers:
            addresses: [8.8.8.8]
          parameters:
            stp: true
            forward-delay: 4
          dhcp4: true
          dhcp6: false 

在此配置中,两个网桥的 IP 地址无关紧要。我所做的唯一一件事是在两个网桥上启用了 dhcp4。结果,KVM(我使用 libvirt 设置 VM 的配置)为每个 VM 分配新的 MAC 地址,路由器端的 DHCP 服务器为每个 VM 分配新的 IP 地址和网关。然后在路由器端我可以将动态 IP 地址设置为永久 IP 地址。

上述配置有效。

相关内容