如何编写 VPN 服务器 [已关闭]
我决定用Java编写自己的轻量级VPN服务器。从编程的角度来看,在我看来,VPN服务器只是一个直通代理,它加密来自客户端的流量,并在服务器上解密它。有人能指给我一个编写这种服务器的骨架吗?
我知道有很多开箱即用的,甚至是开源的,但不幸的是,即使我知道几种Web编程语言,我看到的C代码示例也没有以我能理解的方式记录/结构化。
我想我需要的部分是:
- 客户端对象的线程工厂
- 客户端的套接字连接器
- 用于创建 IPSec 身份验证标头 (AH) 的方法
- 用于创建 IPSec 封装安全有效负载 (ESP) 的方法
- 适用于互联网安全协会和密钥管理协议 (ISAKMP) 的内容
- 互联网密钥交换 (IKE)
- PKI 证书身份验证模块
- 证书存储库 (SQLLite)
- Oakley key generation(用于 IKE 和 ISAKMP)
- 数据包的一些防重放预防
我计划使用通用模块(并为其创建适配器)的部分是加密算法(最好是AES,尽管看起来像DES / 3DES这样的窗口 - 新手)
如果有人可以为IPSec VPN服务器所需的部分添加更多细节,请随时做出贡献。由于有必要在较旧的Linux硬件上运行它,据我所知,服务器应该是IPSec而不是SSLVPN热点。目标平台是一个旧的1.5 Ghz英特尔盒,我用2 GB的DDR2 ram,镜像的100 GB硬盘驱动器和2 Gigabit Nic来抽取。
从好的方面来说,由于客户端VPN的类型如此之多,我非常确定不需要为我的需求制作一个。