ipsec,如何使strongswan支持net namespace

在多用户的Linux系统中,为了实现网络隔离,通常使用namespace。然而,StrongSwan默认仅在单个namespace中运行,导致IPsec SA限制。通过修改源码或利用Linux的VTI虚拟接口,可以解决StrongSwan在namespace中的支持问题。VTI接口提供了一种配置简单且更稳定的方法,使得用户侧的IPsec协商基于策略触发,而网关侧使用VTI进行用户隔离。经过验证,数据报文在namespace中正确传输,仅暴露ESP包给原始namespace。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

strongswan进程启动后只运行在一个net namespace中,后面ike协商出来的所有sa都只存在于一个namespace,对于一个多用户的系统,不同用户的网络可能有重叠,使用namespace做用户隔离是常用手段,对于ipsec,如果使用strongswan做ike协商就有如果使其支持namespace的问题。
开始通过修改strongswan的源码使其支持namespace,原理也比较简单,主要使strongswan于内核通讯(下policy,state表项)的netlink支持namespace即可,根据不同的conn名称,netlink在不同的namespace中创建,修改量不是很大,也运行过一段时间,但是可能是对源码的理解深度不够,除了几个bug,有些bug很难定位。
最近突发发现,使用linux的vti虚拟接口可以使ipsec支持namespace,配置简单,不需要修改源码,当然linux自己的东西肯定比改吧改吧源码稳定。
这里记录一下使用方法,ipsec的一侧(用户侧)基于policy触发协商,另一侧(网关侧)使用vti做用户隔离。

网关侧:

#创建vti接口

ip tunnel add vti-to111 mode vti local 172.16.0.196 remote 172.16.1.111 key 12

#创建namespace

ip netns add test

#设置vti接口的namespace

ip link set netns test dev vti-to111

#配置vti接口的ip地址,和相关路由

ip netns exec test bash

ip addr add 111.1.1.2/24 de
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值