Routing

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

  • June 12, 2018

我有一個站點到站點 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)。

我嘗試設置leftsourceip10.10.0.1,但這似乎沒有效果。我可以使用另一個配置項來告訴 strongSwan 哪個本地 IP 用作其路由表的源 IP?

除非您通過禁用路由安裝charon.install_routes並手動安裝路由(在建立連接之前或之後),否則目前沒有直接的方法來控制它。首先是否需要特定路由(由 strongSwan 安裝)取決於現有路由和協商的流量選擇器。

strongSwan 為每個本地和遠端子網安裝一個路由(在各自的本地子網中選擇一個源地址),因此如果您有多個本地子網,這些路由將發生衝突(都具有相同的目的地),並且根據 strongSwan 版本,要麼安裝的第一個或最後一個路由將保留在核心中。因此,您可以嘗試嘗試本地子網的順序,但如果它們在某處重新排序,則可能無法正常工作。

要在安裝 CHILD_SA 時手動安裝路由,可以使用updown腳本,或者可以使用通過VICI提供的child-updown事件。

最後,leftsourceip用於虛擬 IP功能(即它觸發響應者對虛擬 IP 的請求)。

引用自:https://serverfault.com/questions/916068