如何使用 systemd 进行策略路由?

如何使用 systemd 进行策略路由?

我需要在使用 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

相关内容