如何编写VPN服务器

Dav*_*ave 26 java vpn ipsec

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

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

我想象的我需要的部分是:

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

我计划使用通用模块(并创建适配器)的部分是Cryptographic Algorythms(尽管AES看起来像DES/3DES - Noobs这样的窗口,但最好是AES)

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

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

And*_*ykh 1

我首先查看OpenVPN源代码。虽然不是java,但是应该足以理解原理了。

  • 你有没有想过如何做到这一点@Dave? (6认同)