【问题标题】:How to write a VPN server [closed]如何编写 VPN 服务器 [关闭]
【发布时间】:2011-09-11 09:14:23
【问题描述】:

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

我知道有很多开箱即用的,甚至是开源的,但不幸的是,尽管我知道几种 Web 编程语言,但我看到的 C 代码示例并没有以我可以理解的方式记录/结构化。

我想我需要的部分是:

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

我计划使用通用模块(并为其创建适配器)的部分是密码算法(最好是 AES,尽管看起来像 DES / 3DES 之类的窗口 -- 新手)

如果有人可以为 IPSec vpn 服务器所需的部分添加更多详细信息,请随时贡献。据我所知,由于有必要在较旧的 linux 硬件上运行它,因此服务器应该是 IPSec,而不是 SSLVPN 热点。目标平台是一个旧的 1.5 Ghz 英特尔机器,我用 2 GB DDR2 内存、镜像 100 GB 硬盘驱动器和 2 个千兆网卡进行了抽水。

从好的方面来说,由于客户端 VPN 的类型如此之多,我很确定不需要为我的需要制作一个。

【问题讨论】:

  • 这是一项比您想象的要大得多的任务。为什么你不能使用 OpenVPN?
  • 其实不是。实际上,我已经编写了几个企业应用程序(例如工作流模块、自制代理、SHA1 密码摘要认证模块等)。我编写的最后一个应用程序在测试版时大约有 28k 行代码。因此,与其攻击我,不如回答问题或将我指向有用的资源,而不是燃烧和关闭有效的帖子。
  • 好问题,可惜关门了。我也需要答案。
  • 也许是一种学习练习?这就是为什么我想这样做。加上它的乐趣。使用这种逻辑,为什么有人会构建任何东西?因为大多数原创应用创意已经被采纳
  • 示例 vpn 服务器(300 行)和 android 客户端 android.googlesource.com/platform/development/+/master/samples/…

标签: java vpn ipsec


【解决方案1】:

我会先查看OpenVPN 源代码。不是java,但是原理应该够懂了。

【讨论】:

  • 是的,正如我所提到的,我已经这样做了,虽然我理解了大部分代码,但我一直在寻找某种大纲(书籍资源、文章等)或其他一些通用指南,因为那里有些部分太晦涩/没有记录,无法真正理解。
  • 你有没有想过如何做到这一点@Dave?
猜你喜欢
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多