我有一台 Ubuntu 18.04 主机,该主机在两个子网上有两个网络接口。我想设置对称路由,以便从一个接口接收的流量对称地从同一接口发送出去。
我知道如何使用 Netplan 进行简单的网络配置,但对于更高级的配置我却束手无策。具体来说:
- 像我一样添加默认路由的 Netplan 语法是什么
ip route add default via 192.168.0.1 dev ens192 tab 1
? - 如何
priority
为路线添加标签?
我的服务器有两个IP:
$ ip a|grep "inet "
inet 127.0.0.1/8 scope host lo
inet 192.168.0.10/22 brd 192.168.0.255 scope global ens192
inet 192.168.1.10/24 brd 192.168.1.255 scope global ens224
$
我可以使用以下ip
规则来获取我想要的表:
首先,我为每个网络创建一条路由,然后添加一个默认网关。
$ ip route add 192.168.0.0/24 dev ens192 tab 1
$ ip route add 192.168.1.0/24 dev ens224 tab 2
$ ip route add default via 192.168.0.1 dev ens192 tab 1
$ ip route add default via 192.168.1.1 dev ens224 tab 2
然后,我可以创建相应的规则:
$ ip rule add from 192.168.0.10/32 tab 1 priority 100
$ ip rule add from 192.168.1.10/32 tab 2 priority 200
$ ip route flush cache
这将获得我想要的路线:
$ ip route show tab 1
default via 192.168.0.1 dev ens192
$ ip route show tab 2
default via 192.168.1.1 dev ens224
$ ip route
default via 192.168.0.10 dev ens192
以及我想要的规则:
$ ip rule show
0: from all lookup local
100: from 192.168.0.10 lookup 1
200: from 192.168.1.10 lookup 2
32766: from all lookup main
32767: from all lookup default
答案1
ens2f1:
addresses:
- x.x.x.x/x
routes:
- to: 0.0.0.0/0
via: y.y.y.y/y
table: 200
routing-policy:
- from: z.z.z.z/z
table: 200
priority:
希望这能回答你的两个问题
答案2
当您指定routes:
并指定table:
这些路由时,您实际上已经创建了一个可以在配置中的其他地方引用的路由表。您可以通过添加该接口的 IP 来为给定接口创建基于源的路由,使用routing-policy
您之前在路由中定义的表。在我刚刚弄清楚之前,这些配置对我来说都没有任何意义。from:
table:
ip route add default via 192.168.0.1 dev ens192 tab 1
对应于
ens192:
addresses: [foo.bar]
routes:
- to: default
via: 192.168.0.1
table: 1
routing-policy:
- from: foo.bar
table: 1
答案3
提供的两个答案都有问题。第一个答案与提出的问题不完全对应,可能会让其他人感到困惑。第二个答案没有指出,与提供的 netplan 配置相匹配的完整对应 shell 命令包括:
ip rule add from foo.bar table 1
因此,为了完整性,这里有一个 netplan 配置,它根据 OP 提供的数据实现 OP 所需的目标,并省略任何不必要的内容:
ens192:
addresses:
- 192.168.0.10/22
routes:
- to: default
via: 192.168.0.1
ens224:
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
table: 2
routing-policy:
- from: 192.168.1.10
table: 2