我有两个 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 addr
和ip 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,以便内部机器不必关心活动上行链路网络的变化。