c - 如何在 C 编程中创建 IPSEC 关联和策略
问题描述
我正在用 c 语言构建一个客户端-服务器编程,然后在ESP/IPSEC
.
服务器在每个新的客户端连接上,生成一个随机/唯一的 CK/IK,通过某种安全机制传输给客户端。我已经使用PF_KEY
套接字编程为内核的 SPD 和 SAD 中的不同客户端创建关联和策略。但是这种机制有一些问题,一旦80,000
创建关联就开始变慢,我的要求是1000,000
关联进行负载测试。
我开始知道PF_KEY
套接字机制是旧的、过时的和不安全的。这种机制是KLIPS
。有两种机制,KLIPS
和NETKEY
。
如何在用户空间的c编程中创建IPSEC
通过机制的关联?NETKEY
解决方案
我强烈建议您使用Wireguard 而不是 Ipsec,它更好,由 Linus Torvald 批准并由非常有才华的安全研究员开发。
抱歉,如果它有点偏离主题,但您看起来仍在探索。Ipsec来自 1990 年代,这些年来确实带来了很多,但 Wireguard 是在几年前从头开始的,其优点是拥有非常短(且易于审计)的代码,并且还通过最新的技术突破进行了优化.
你可以在Github上找到这个漂亮的项目,它的镜像,它主要是用 C 编码的(与原始项目一样)。
注意:Wireguard 通过 https(443 端口)加密流量,因此它还允许用户通过世界各地独裁 2.0 构建的所有类型的防火墙,因为每个人都需要访问 https。
推荐阅读
- r - lapply 用于回归模型的多个列表和函数
- php - PhpStorm:一堆黄色名称中的一个灰色函数名称,全是空的,未使用的存根
- php - 数据显然没有通过 AJAX POST 发送 - 我做错了什么?
- javascript - 我想做模态组件以与类组件做出反应,但似乎状态没有更新。需要帮助指导我)
- java - 如何使用 WinAppDriver 和 Selenium 处理可能随时随地出现在 Windows 应用程序中的随机弹出/警报/错误?
- excel - VBA:将数据传输到多个电子表格时如何包含超链接?
- php - 应该如何正确传递 DomCrawler 对象作为输入参数?“未定义的属性:Crawler::$extract”
- python - 在应用程序表单中出现用户输入错误
- pandas - 如何使用矢量化迭代行
- c++ - Chrome V8 示例编译错误,我该如何解决“remove_cv_t”不是“std”的成员?