我正在运行我公司的主服务器,并希望设置一个 VPN,以便远程办公室(在不同国家)可以在同一个网络中。
我想实现以下网络结构:
-------------- --------------
| Remote Net 1 | ------------------------------ | Remote Net 2 |
| 192.168.2.X | | | 192.168.3.X |
-------------- | --------------
|
-----------------
| The Internet |
-----------------
|
|
-----------------
| Local Network |
| 192.168.1.X |
-----------------
我希望所有计算机都是可见的,并且可以通信并使用其他 LAN 中的网络服务(即,本地网络可以使用远程网络 1 中的文件服务器,而远程网络 1 上的计算机可以使用本地网络的文件服务器)
详细信息:所有客户端均使用 ubuntu 10.10,主服务器运行 Debian Lenny,VPN 服务器最好是 OpenVPN
有人能告诉我该如何实施这个系统吗?
非常感谢您的帮助,谢谢,RayQuang
答案1
如果您在每个远程网络上运行一个客户端,并在服务器配置中启用客户端到客户端,它们就可以相互通信。要让远程网络的每个网关后面的客户端也能通信,您需要通过 ccd 使用“iroute”。
如果您不打算通过“本地网络”路由所有流量,则可能需要每端的静态路由来了解其他 VPN 端后面的网络。您可以使用 openvpn 服务器配置中的“push”命令推送路由。
我的目标是首先创建一个基本的服务器配置并连接两个远程端。一旦它们可以与服务器通信,您就可以使用 iroute(通过 ccd)和推送路由让它们通过 vpn 服务器(当然还有 vpn 服务器后面的网络)找到彼此。
提示:使用 udp,使用 tun,启动时无需对 mtu/mssfix/fragment 进行任何额外设置(如果出现问题,请使用 --mtu-test 运行客户端)。使用非 192.-network 进行 vpn 通信。
显然,您需要 iptables FORWARD 链中的 ip_forwarding 和 ACCEPT 规则才能使其工作,但除此之外,我认为这是一个相当简单的设置。
有很好的例子http://openvpn.net/index.php/open-source/documentation/howto.html。
编辑 70:就像 Harv 所说的那样,将远程网络 1 和 2 直接连接在一起是有意义的。
答案2
我认为最简单的方法是使用真正的 VPN 路由器。每个办公室都配备一个,每个都有自己的静态 IP。两个分支机构将连接到总部。如果你想要更花哨(和复杂)一点,你可以让每个 VPN 路由器连接到其他 VPN 路由器。但我不确定这会如何工作。
答案3
我没有使用过 OpenVPN,但我曾使用 IPSec 网络到网络配置来实现类似的设置。在网络到网络设置中,您的客户端也不需要 VPN 客户端。对于他们来说,访问其他网络上的主机就像访问本地主机一样,只是延迟会减少。IPSec 端点将充当 IPSec 路由器,执行所有加密和解密。
我曾使用此设置在印度和美国之间创建 IPSec 隧道,效果非常好。
如果可以选择 RHEL/CentOS,那么设置起来就很简单了。只需按照指南操作即可。在 Debian/Ubuntu 中也绝对可以,但我没有使用过它们。
http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s1-ipsec-net2net.html