我需要在使用 systemd 的 CoreOS 实例上执行策略路由。但我没有找到有关如何使用 systemd-network 执行此操作的任何文档或示例。
我怎么做?
到目前为止,我只是通过向新文件添加条目来创建另一个路由表/etc/iproute2/rt_tables
,并且它被命令行工具识别。
最终,我在同一个子网上有两个独立的路由器。我想确保从一个路由器发往我的主机的流量由同一个路由器返回。
答案1
systemd
在版本中添加策略路由支持235。如果您的版本是 235 或更高版本,您可以使用[RoutingPolicyRule]
部分来设置策略路由。systemd
支持的选项是:
TypeOfService=
指定服务类型以匹配 0 至 255 之间的数字。From=
指定要匹配的源地址前缀。后面可能跟有斜杠和前缀长度。To=
指定要匹配的目标地址前缀。后面可能跟有斜杠和前缀长度。FirewallMark=
指定要匹配的 iptables 防火墙标记值(1 至 4294967295 之间的数字)。Table=
如果规则选择器匹配,则指定要查找的路由表标识符。路由的表标识符(介于 1 和 4294967295 之间的数字)。Priority=
指定此规则的优先级。Priority= 是一个无符号整数。数字越大,优先级越低,规则按数字递增的顺序进行处理。
答案2
目前 networkd 不支持多路由表。不过肯定可以添加;也许你可以分享你的 rt_tables 设置,并在systemd-devel?