如何使用 NetPlan 完成 MASQUERADE?

如何使用 NetPlan 完成 MASQUERADE?

我是Ubuntu新手,准备用Ubuntu搭建一个KVM虚拟机,我只有一个公网IP,我知道在ifupdown中怎么配置,但是我想在NetPlan中配置。

我在 /etc/network/interface 中的配置如下所示。

auto vmbr0
 iface vmbr0 inet static
  address 107.175.49.24/32
  gateway 107.175.49.1
  dns-nameservers 8.8.8.8
  bridge-ports ens3
  bridge-stp off
  bridge-fd 0
  dns-nameservers 8.8.8.8

auto vmbr1
 iface vmbr1 inet static
  address 192.168.0.1
  netmask 255.255.255.0
  bridge_ports none
  bridge_stp off
  bridge_fd 0
  post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o br0 -j MASQUERADE
  post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
 iface vmbr1 inet6 static
  address 2001:470:89c7:0000:0000:0000:0000:0001
  netmask 48
  bridge_ports tun0
  bridge-stp off
  bridge-fd 0

IPv4绑定到ens3,IPv6绑定到tun0,并启用NAT转发。

我无法在 netplan 中指定参数,当运行 netplan 尝试时,它给出了br0:不支持恢复桥接和绑定的自定义参数错误,即使我强制应用 netplan,它也不会改变任何东西。

现在我的NetPlan配置如下:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: no
  bridges:
    br0:
      addresses:
          - "107.175.49.24/32"
      nameservers:
        addresses:
          - "8.8.8.8"
      interfaces:
        - ens3
      routes:
        - to: "0.0.0.0/0"
          via: "107.175.49.1"
          metric: 1
    br1:
      addresses:
        - "192.168.0.1/24"
        - "2001:470:89c7::1/64"

我现在需要解决两个问题,如何在NetPlan中声明bridge-stp,因为他不接受bridges下的参数包含的参数,以及如何使用NetPlan添加NAT转发

其他自动化方案也被接受,但是 iptables-persistent 有时会在 br1 启动之前执行,因此无法添加任何规则,并且在 br1 关闭时不会卸载规则。

相关内容