随笔分类 - strongswan
strongswan使用和分析,代码基于strongswan-5.6.3。
摘要:拓扑如下: 其中NAT设备将来自DUTA的报文源IP 101.0.0.2转换为102.0.0.2。DUTA发起IPSec连接。 1. DUTA计算natd_chunk和natd_hash DUTA先用自己的SPI,对等体的SPI(为0),IP和端口号做SHA1处理。如下图: 代码位于ike_natd
阅读全文
摘要:配置文件strongswan.conf是通过STRONGSWAN_CONF读取并加载的。 通过source insight加载了strongswan整个工程文件(只包括.c和.h文件),发现没有地方给STRONGSWAN_CONF赋值。 而在charon进程加载时,STRONGSWAN_CONF是有
阅读全文
摘要:strongswan.conf为strongswan的所有组件提供配置,灵活且扩展性好。 下面简要分析下strongswan.conf的读取和处理在代码中的实现。 以charon进程的启动为例,整个library初始化的时候,会将strongswan.conf的名字存起来。见library.c之函数
阅读全文
摘要:1. 将函数压入当前线程的清理处理程序栈中。 每当线程被取消、退出或使用TRUE作为执行参数调用thread_cleanup_pop函数时都会调用回调函数cleanup。 void thread_cleanup_push(thread_cleanup_t cleanup, void *arg); 其
阅读全文
摘要:ipsec的封装模式有两种:transport模式和tunnel模式。当对等体的封装模式不一致(即一方为transport模式,另一方为tunnel模式)时,双方协商的结果是建立tunnel模式的ipsec会话。 DUTA(transport) DUTB(tunnel) 以IKEv2为例分析。在上图
阅读全文
摘要:strongswan有许多插件,这些插件可以在配置阶段(执行./configure)使能或禁止,编译后,插件动态加载。 以stroke插件为例,stroke插件通过函数plugin_t *stroke_plugin_create()函数创建,然而,搜索整个工程代码,却找不到调用的地方。那么,stro
阅读全文
摘要:strongswan中函数的定义使用了一个叫METHOD的宏,此宏的定义在object.h头文件中给出。 此宏包括3部分。 第一部分是对名为name的函数进行声明。即: static ret name(union {iface *_public; this;} \ __attribute__((tr
阅读全文
摘要:高可用性 从4.4.0版本开始,IKEv2守护程序使用[最初]两个节点的集群实验性地支持伪主动/主动高可用性和负载共享功能。 问题陈述 IKEv2 / IPsec协议不适合在主动/主动群集中运行。虽然可以通过群集中的高速链路共享IKE_SAs的状态,但共享内核维护的IPsec ESP SA非常困难。
阅读全文
摘要:strongswan IKEv2后台进程的软件架构图 processor是任务管理器,负责对线程(threads)和作业(jobs)进行管理,其结构为private_processor_t。 worker_thread_t为工作线程的结构,包括实际的线程(thread)、当前正在执行的作业(job)
阅读全文
摘要:ipsec.conf是stroke插件使用的配置文件,可以配置ike proposal、ike peer、ipsec proposal等属性。现对其中部分属性进行翻译/分析。 对conn的分析,来源:https://wiki.strongswan.org/projects/strongswan/wi
阅读全文
摘要:Linux内核中ipsec policy有两种类型:XFRM_POLICY_TYPE_MAIN 和XFRM_POLICY_TYPE_SUB。 两类策略可以同时用于同一个报文。XFRM_POLICY_TYPE_SUB一般用于开发者、调试或移动IPv6。MAIN类型策略的存活时间比SUB类型策略存活时间
阅读全文
摘要:今天尝试使用swanctl和systemd配置strongswan。配置方法见网址: https://wiki.strongswan.org/projects/strongswan/wiki/Charon-systemd ./configure --enable-systemd --enable-s
阅读全文
摘要:strongswan的主进程为charon进程,负责IKE SA、IPSec SA建立、拆除、更新及其他相关的操作。 charon进程默认通过socket-default插件与内核交互,用于IKE协议报文的收发。socket-default插件被编译为动态库,charon进程启动的时候,在初始化阶段
阅读全文
浙公网安备 33010602011771号