我正在用c建立一个客户端-服务器编程,然后通过ESP/IPSEC
进行通信。
服务器在每个新的客户端连接上,生成一个随机/唯一的CK/IK,并通过某种安全机制传输给客户端。我使用PF_KEY
套接字编程在内核的SPD和SAD中为不同的客户端创建了关联和策略。但是这个机制有一些问题,一旦创建了80,000
关联,它就开始变慢,我的要求是1000,000
关联用于负载测试。
我已经知道PF_KEY
套接字机制是旧的,过时的和不安全的。这个机制就是KLIPS
。有两种机制,KLIPS
和NETKEY
。
如何在用户空间的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