如何在 strongswan 的路由表中设置源 IP

如何在 strongswan 的路由表中设置源 IP

我有一个站点到站点的 VPN,其中远程端有一个子网,本地端有两个子网:

conn site-to-site
  leftsubnet = 10.10.0.0/16,10.11.0.0/16
  rightsubnet = 10.50.0.0/16

一切正常,但我遇到一个问题,即“错误的”本地 IP 插入到了 strongSwan 的路由表中:

$ ip route show table 220
    10.50.0.0/16 via <REDACTED> dev eth-ext src 10.11.0.1 

strongSwan 选择子网的本地 IP10.11.0.0/16作为 IPsec 隧道的源 IP(即10.11.0.1),但我想使用第二个(10.10.0.1)。

我尝试过设置leftsourceip10.10.0.1,但似乎没有效果。是否有其他配置项可用于告诉 strongSwan 使用哪个本地 IP 作为其路由表的源 IP?

答案1

除非您禁用路由安装charon.install_routes并手动安装路由(在建立连接之前或之后),否则目前没有直接的方法来控制这一点。是否首先需要特定路由(由 strongSwan 安装)取决于现有路由和协商的流量选择器。

strongSwan 为每个本地和远程子网安装路由(在相应的本地子网中选择源地址),因此如果您有多个本地子网,这些路由将发生冲突(所有路由都具有相同的目的地),并且根据 strongSwan 版本,安装的第一个或最后一个路由将保留在内核中。因此,您可以尝试试验本地子网的顺序,但如果在某处重新排序,则可能行不通。

要在安装 CHILD_SA 时手动安装路由,上行下行脚本,或者子代上下活动提供方维西可能用过了。

最后,leftsourceip用于虚拟 IP功能(即它触发来自响应者的虚拟 IP 请求)。

相关内容