如何用C编程创建IPSEC关联和策略



我正在用c建立一个客户端-服务器编程,然后通过ESP/IPSEC进行通信。

服务器在每个新的客户端连接上,生成一个随机/唯一的CK/IK,并通过某种安全机制传输给客户端。我使用PF_KEY套接字编程在内核的SPD和SAD中为不同的客户端创建了关联和策略。但是这个机制有一些问题,一旦创建了80,000关联,它就开始变慢,我的要求是1000,000关联用于负载测试。

我已经知道PF_KEY套接字机制是旧的,过时的和不安全的。这个机制就是KLIPS。有两种机制,KLIPSNETKEY

如何在用户空间的c编程中通过NETKEY机制创建IPSEC的关联?

我强烈建议您使用Wireguard over Ipsec,它要好得多,由Linus Torvald批准,由非常有才华的安全研究人员开发。

对不起,如果它有点离题,但你看起来像你还在探索。Ipsec诞生于20世纪90年代,多年来它确实带来了很多东西,但Wireguard是在几年前从零开始的,其优点是代码非常短(并且易于审计),并且通过最新的技术突破进行了优化。

你可以在Github上找到这个美丽的项目,它的镜像,它主要是用C编写的(和原始项目一样)。

注意:Wireguard通过https(端口443)加密流量,因此它也允许用户通过世界各地独裁政权2.0建立的各种伟大的防火墙,因为每个人都需要访问https。

您可以使用StrongSwan的DaVICI插件。https://github.com/strongswan/davici

最新更新