我有一个站点到站点 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 选择10.11.0.0/16
子网的本地 IP 作为 IPsec 隧道的源 IP(即10.11.0.1
),但我想使用第二个(10.10.0.1
)。
我尝试设置leftsourceip
为10.10.0.1
,但这似乎没有效果。我可以使用另一个配置项来告诉 strongSwan 哪个本地 IP 用作其路由表的源 IP?
除非您通过禁用路由安装
charon.install_routes
并手动安装路由(在建立连接之前或之后),否则目前没有直接的方法来控制它。首先是否需要特定路由(由 strongSwan 安装)取决于现有路由和协商的流量选择器。strongSwan 为每个本地子网和远程子网安装一个路由(在各自的本地子网中选择一个源地址),因此如果您有多个本地子网,这些路由将发生冲突(都具有相同的目的地),并且根据 strongSwan 版本,要么安装的第一个或最后一个路由将保留在内核中。因此,您可以尝试尝试本地子网的顺序,但如果它们在某处重新排序,则可能无法正常工作。
要在安装 CHILD_SA 时手动安装路由,可以使用updown脚本,或者可以使用通过VICI提供的child-updown事件。
最后,
leftsourceip
用于虚拟 IP功能(即它触发响应者对虚拟 IP 的请求)。