具有 2 个或更多输入 ISP 的路由器的 Netplan 配置,以及单输出接口的故障转移功能?

具有 2 个或更多输入 ISP 的路由器的 Netplan 配置,以及单输出接口的故障转移功能?

我有两个 ISP 选项,它们都提供 DHCP 租约。如果第一个(或第二个)出现故障,我希望第二个(如果允许且需要,可能还有第三个)作为故障转移,例如:

图表

在查看 Netplan 示例后,看到如何桥接这些(或者甚至是否需要桥接)有点令人困惑,同时让主接口通过 DHCP 从 ISP 接收 IP 配置值,然后将其交给 LAN 的静态输出,例如 192.168.10.1。看起来您可能会做这样的事情:

network:
  version: 2
  renderer: networkd
  ethernets:
    # LAN interface
    eth0:
      optional: true
      dhcp4: no
      addresses:
        - 192.168.10.1/24
      # Is a gateway necessary since it provides a bridge?
      gateway4: 192.168.1.1
      nameservers:
          addresses: [1.1.1.1, 192.168.1.1]
    # ISP 1 interface
    eth1:
      optional: true
      dhcp4: true
    # ISP 2 interface
    eth2:
      optional: true
      dhcp4: true
    # ISP 3interface
    eth3:
      optional: true
      dhcp4: true
  bridges:
    br0:
      addresses: [ 192.168.10.1/24 ]
      interfaces: [ eth0 eth1 eth2 eth3 ]

似乎还需要将度量值分配给 ISP 接口……但话又说回来,我明白了其他例子这让我认为我可能做错了。

就 Netplan conf 而言,在这种情况下应该使用什么?

更新:heynnema 的答案似乎很接近,并且 localhost(在 Ubuntu 服务器上)可以正常连接到互联网,但是虽然测试系统可以192.168.10.1正常 ping 到,但无法 ping 到1.1.1.1,因此似乎eth0和之间仍然存在路由问题eth(1|2|3)

根据请求ip addrip route输出: https://gist.github.com/ylluminate/6435840c37edc01e82c047c61f4c071b

答案1

也许从更接近这个的东西开始......

注意:这没有考虑到必须为 iptables 提供路由表。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      # local LAN
      optional: true
      addresses:
        - 192.168.10.1/24
    eth1:
      # ISP 1 is primary ISP
      optional: true
      dhcp4: true
      dhcp4-overrides:
        route-metric: 100
    eth2:
      # ISP 2 is incomplete (tether)
      optional: true
      dhcp4: true
      dhcp4-overrides:
        route-metric: 200
  wifis:
    wlan0:
      # ISP 3 is incomplete (wireless)
      dhcp4: true
      dhcp4-overrides:
        route-metric: 300
      access-points:
        "network_ssid_name":
          password: "**********"

sudo netplan --debug generate

sudo netplan apply

reboot

答案2

您不能使用网桥或绑定来同等对待来自多个 ISP 的上行链路,因为您的 ISP 都不会路由使用其他 ISP 的 IP 的流量。

既然您说您只关心使用额外的 ISP 作为故障转移,那么您可能应该简单地为每个上行链路设置路由指标,并使用 NAT,以便内部机器不必关心活动上行链路网络的变化。

相关内容