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