创build一个基于UNIX的VPN:指针,指导方针和陷阱?

  • 有人有创build一个基于UNIX的虚拟专用networking的第一手经验?
  • 什么是最好的VPN客户端/工具可用于完成此?
  • 有什么我应该避免的常见陷阱?

在我的具体情况下,我的主要兴趣是与Debian兼容的解决scheme。 我的主要目标是让它工作,因为我以前没有做过,但是在我不想使用SSH连接的情况下,我可以看到一些可能的好处。

在Linux中你有两个主要的select:

  • ipsec兼容vpn – 使用freeswan / openswan / strongswan 。 我记得当时设置起来相当具有挑战性
  • 没有标准化[但真的很好] sslvpn – openvpn 。 非常容易设置。

第二个非常棒,我已经在生产中使用了几年了。 它在Debian中是可用的标准包。 它的性能performance相当不错,几十兆(数以百计,但我没有办公室之间的快速互联网连接)

openvpn的一些提示:

  • 为了更安全,不要使用“共享密钥”types的密钥,创build证书颁发机构并使用由其签名的密钥 。
  • 如果可能,使用tun模式而不是tap [通过vpn路由stream量,而不是通过桥接两个以太网段]
  • 如果您使用证书颁发机构解决scheme – 请记住密钥过期。 设置几个提醒自己重新生成密钥。
  • 在安全方面使用内置到opensvn的软件看门狗[ping-restart option] +把additoinal简单的bash脚本循环检查openvpn进程是否正在运行。 openpn在过去的3年里为我牺牲了2次。
  • 只要你可以[而不是TCP]使用udp隧道。 我有办公室背后的VPN VPN问题[其中Linux的盒子后面便宜的DLINK路由器我无法控制]在一些时间后封装的UDP数据包 – 在这种情况下,我被迫使用TCP。
  • 享受openvpn从防火墙/ NAT后面..只要一方有公共IP,并可以通过TCP或UDP到达一个端口上 – 你可以build立VPN,它的另一个节点不需要公有IP!

真正的IPsec不过是一个头痛的问题。 该协议在不同的networking拓扑结构中蹒跚而行。 无论操作系统如何,客户都普遍缺乏。 除非您需要仅使用IPsec的硬件端点,否则不惜一切代价避免使用。

OpenVPN的设置非常简单,使用方便,Linux,Windows和Mac平台的客户端非常直观。

考虑你将如何pipe理新用户并撤销旧用户。 这将取决于您期望支持的用户数量。 就个人而言,我们使用放置在双因素令牌上的x509证书,这个证书可以很好地扩展,但是如果您成长的话,确实需要一些方法来pipe理PKI。

在这里的另一个投票的OpenVPN。 我们之前的工作中使用了它,并且它坚如磐石,与我们在当前工作中使用的PPTP和IPSEC VPN隧道相比,我们遇到的问题更less。 OpenVPN提供的灵活性也很难胜任。 但是OpenVPN在我看来确实有一个弱点。 它目前不被许多智能手机支持。 其实我不知道有没有这样做。 我知道有人试图将其移植到iPhone,但我不知道该项目在哪里。

您没有提到您的vpn解决scheme需要支持哪种types的客户端。 所以考虑到这一点,如果您需要避开第三方客户端或需要智能手机支持,那么PPTP可能更适合。 Windows,OSX和许多智能手机都有原生的PPTP客户端。 Poptop是实现PPTP的Linux项目。

我可以推荐的两个工具是OpenVPN(前面提到过)和Adito(最近更名为OpenVPN ALS)。 http://sourceforge.net/projects/adito/ http://adito.wiki.sourceforge.net/

一个非常灵活和有据可查的解决scheme是OpenVPN( http://openvpn.net/ )这是一个从Ubuntu的标准存储库中提供的软件包,也应该在Debian中。

我已经在我的公司使用了OpenVPN大约2年了。 有很less的问题。

我们正在使用客户端特定的configuration来分配不同子网中的用户IP。 从那时起,我们可以通过防火墙来限制对内部资源的访问。

PKIpipe理(我们使用证书来validation客户)是不太舒服的。 但是用2或3个脚本,这变得可以忍受。