如何编写 VPN 服务器 [已关闭]

2022-09-01 09:06:43

我决定用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的类型如此之多,我非常确定不需要为我的需求制作一个。


答案 1

我会从查看OpenVPN源代码开始。它不是java,但应该足以理解这些原则。


答案 2

推荐