如何编写VPN服务器

时间:2011-06-09 03:40:19

标签: java vpn ipsec

我决定用Java编写自己的轻量级VPN服务器。从编程的角度来看,在我看来,VPN服务器只是一个传递代理,可以加密来自客户端的流量,并在服务器上对其进行解密。有人能指出我写这种服务器的骨架吗?

我知道有许多开箱即用甚至是开源的,但不幸的是,即使我知道几种Web编程语言,我看到的C代码示例也没有以我能理解的方式记录/构建。

我想象的部分是:

  • 客户端对象的线程工厂
  • 客户端的套接字连接器
  • 创建IPSec身份验证标头(AH)的方法
  • 创建IPSec封装安全负载(ESP)的方法
  • 用于Internet安全关联和密钥管理协议(ISAKMP)的东西
  • 互联网密钥交换(IKE)
  • PKI证书身份验证模块
  • 证书存储库(SQLLite)
  • Oakley密钥生成(适用于IKE和ISAKMP)
  • 一些防止重播的数据包

我打算使用通用模块(并为其创建适配器)的部分是加密算法(尽管看起来很像AES,但它似乎像DES / 3DES - Noobs这样的窗口)

如果有人可以为IPSec VPN服务器所需的部件添加更多细节,请随时提供。因为有必要从我可以告诉的旧Linux硬件上运行它,服务器应该是IPSec而不是SSLVPN热点。目标平台是一个旧的1.5 Ghz intel盒子,我用2 GB的DDR2 ram,镜像的100 GB硬盘和2个千兆位的Nic来运行。

从好的方面来看,因为有很多类型的客户端VPN,我很确定不需要为我的需求制作一个。

1 个答案:

答案 0 :(得分:1)

我首先看一下OpenVPN源代码。这不是java,但应该足以理解原则。