[ipsec][strongswan] 使用VTI配置基於路由的ipsec


之前寫的一個:[dev][ipsec] 基於路由的VPrivateN

 

我們默認用strongswan的時候基於策略的. 也就是policy. 基於策略的ipsec中, policy承擔了兩部分功能

一是訪問權限的控制功能, 另一個是路由的功能. linux kernel做完路由之后會在查詢policy,從而確定要將包轉發給哪一個SA.

 

基於一中的描述, 我們現在要做基於路由的ipsec, 也就是說將路由功能從policy中去除出來, 在路由表中使用路由條目來做.

於是在這里需要解決的就是路由指向下一條的問題, 而這個下一條就是Ipsec SA.

 

現在引入一個概念叫做VTI(Vitual Tunnel Interface), VTI是內核中的一種設備. 使用如下命令添加:

ip link add name vti1 type vti key VTI_KEY local LOCAL_IPv4_ADDR remote REMOTE_IPv4_ADDR

我們看見, 創建vti時指定了一個key, 這個key便是與SA之間的關聯. 見下面的例子如何完成這樣一個關聯:

# ip link add name vti1 type vti key VTI_KEY local LOCAL_IPv4_ADDR remote REMOTE_IPv4_ADDR
# ip link set vti1 up
# ip addr add LOCAL_VIRTUAL_ADDR/24 dev vti1

# ip xfrm state add src LOCAL_IPv4_ADDR dst REMOTE_IPv4_ADDR spi SPI PROTO ALGR mode tunnel
# ip xfrm state add src REMOTE_IPv4_ADDR dst LOCAL_IPv4_ADDR spi SPI PROTO ALGR mode tunnel
# ip xfrm policy add dir in tmpl src REMOTE_IPv4_ADDR dst LOCAL_IPv4_ADDR PROTO mode tunnel mark VTI_KEY
# ip xfrm policy add dir out tmpl src LOCAL_IPv4_ADDR dst REMOTE_IPv4_ADDR PROTO mode tunnel mark VTI_KEY

 

這樣呢. 這個新增的VTI就等價於SA, 我們只有正常的配置路由, 將流量路由到這個VTI上, 便等於完成了基於路由的IPsec.

參考:https://developers.redhat.com/blog/2019/05/17/an-introduction-to-linux-virtual-interfaces-tunnels/#vti

 

三里邊我們使用iproute工具做的配置, strongsan里同樣如此. 在配置的時候, 比如有一個mark的配置項,用來關聯SA

 mark_in = mark_out = 42 

 

基於一中的分析. 我們在基於路由的場景下將police的功能進行了分離. 所以policy的原有的策略控制功能和定義並沒有發生變化.

雙端還是可以自由的協商出需要的安全策略.

 

VTI是有很多局限性的, 最新的kernel里新增了類型名叫做xfrm的interface, 作為VTI的下一代. 見:

https://lwn.net/Articles/757391/

 

基於二, 我們解決這個問題的方法有很多, 只要能達成路由到SA的包轉發. 

處理VTI, XFRM, 還可以用GRE.

見:https://wiki.strongswan.org/projects/strongswan/wiki/RouteBasedVPN

 

所有問題的關鍵,都在於將作為工具的interface將SA進行關聯.

VTI用了 key/mark (mark_in = mark_out = 42)

XFRM用了 interface Id  (if_id_in|out in swanctl.conf)

GRE在strongswan中使用這樣一個配置:  (local|remote_ts=dynamic[gre] in swanctl.conf)

另外, 如果你使用strongswan的話, 需要改一下這個, 因為基於策略時他會在路由表里加東西: charon.install_routes=0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM