我决定用 Java 编写自己的轻量级 VPN 服务器。从编程的角度来看,在我看来,VPN 服务器只是一个传递代理,它对来自客户端的流量进行加密,并在服务器上对其进行解密。有人可以指出我编写这种服务器的框架吗?
我知道有很多开箱即用的,甚至是开源的,但不幸的是,即使我知道几种 Web 编程语言,我看到的 C 代码示例也没有以我可以理解的方式记录/结构化。
我想我需要的部分是:
- 客户端对象的线程工厂
- 客户端的插座连接器
- 创建 IPSec Authentication Header (AH) 的方法
- 用于创建 IPSec 封装安全负载 (ESP) 的方法
- 互联网安全协会和密钥管理协议 (ISAKMP)
- 互联网密钥交换 (IKE)
- PKI 证书认证模块
- 证书存储库 (SQLLite)
- Oakley 密钥生成(用于 IKE 和 ISAKMP)
- 数据包的一些反重放预防
我计划使用通用模块(并为其创建适配器)的部分是密码算法(最好是 AES,尽管看起来像 DES / 3DES 之类的窗口 - Noobs)
如果有人可以为 IPSec vpn 服务器所需的部分添加更多细节,请随时贡献。据我所知,由于有必要在较旧的 linux 硬件上运行它,因此服务器应该是 IPSec 而不是 SSLVPN 热点。目标平台是一个旧的 1.5 Ghz 英特尔盒子,我用 2 GB 的 DDR2 内存、镜像的 100 GB 硬盘驱动器和 2 个千兆网卡进行了抽水。
从好的方面来说,由于客户端 VPN 的类型如此之多,我很确定不需要为我的需要制作一个。