![具有两个上行链路的 Netplan 路由](https://linux22.com/image/785575/%E5%85%B7%E6%9C%89%E4%B8%A4%E4%B8%AA%E4%B8%8A%E8%A1%8C%E9%93%BE%E8%B7%AF%E7%9A%84%20Netplan%20%E8%B7%AF%E7%94%B1.png)
我们的服务器位于托管数据中心,并且有两条上行链路:一条快速计量连接(用于实时流量)和一条慢速固定费率连接(用于备份等)。我们希望使用 Linux 机器进行路由,并根据本地源子网使用特定的上行链路,这实际上意味着两条不同的默认路由。这应该可以通过单独的路由表来实现,但我还不太能理解它们。
以下是错误的示例 netplan 配置,省略了 VLAN、名称服务器等内容:
network:
version: 2
ethernets:
eth0:
addresses: [ 5.5.5.2/27 ]
routes:
- to: default
via: 5.5.5.1 # provider edge fast uplink
eth1:
addresses: [ 6.6.6.2/27 ]
routes:
- to: default
via: 6.6.6.1 # provider edge cheap uplink
eth2:
addresses: [ 10.20.30.1/24 ]
eth3:
addresses: [ 10.20.40.1/24 ]
来自子网 10.20.30.0/24 的出站流量应使用快速上行链路,来自 10.20.40.0/24 的流量应使用廉价上行链路。此外,本地子网必须能够相互访问。配置应如何实现这一点?出站流量的 NAT 将通过 iptables 完成。
答案1
回答我自己的问题。解决需求的配置如下所示:
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [ 5.5.5.2/27 ]
routes:
- to: default
via: 5.5.5.1 # provider edge fast uplink
eth1:
addresses: [ 6.6.6.2/27 ]
routes:
- to: default
via: 6.6.6.1 # provider edge cheap uplink
metric: 102
table: 200
eth2:
addresses: [ 10.20.30.1/24 ]
routes:
- to: 10.20.30.0/24
table: 200
eth3:
addresses: [ 10.20.40.1/24 ]
routes:
- to: 10.20.40.0/24
routing-policy:
- from: 10.20.40.0/24
table: 200
笔记:
- 该解决方案使用两个路由表,默认表(简化路由器本身的网络连接)和表 200。
- 由于两个私有子网需要能够相互访问,尽管使用不同的路由表,因此每个私有接口/子网都需要将自身添加到其他路由表。
答案2
多个上行链路/提供商的路由: https://lartc.org/howto/lartc.rpdb.multiple-links.html