OpenVPN在同一子网上的多个服务器,高可用性

嘿大家。 首先让我说,我的Linux经验不是超棒的,但我通常可以轻松find解决问题的方法。

在工作中,我们有一个OpenVPN的设置,一段时间以来有所改进。 主服务器(分stream模式)在我们的办公室运行,在相当慢的DSL连接之后。 主要的问题是,因为我通常不在办公室,所以每次我想访问虚拟networking上的东西时,都必须通过该服务器才能到达其他任何地方。

我们有两台服务器用于100 Mbit连接,我们用于开发和生产目的,另外约三台服务器(其中一台服务器位于不同的T1线路上,用于VOIP)和大约二十个客户每天使用networking来自不同的地点。

我们有一些情况,networking路由(我们的控制之外)不允许用户访问我们的主要OpenVPN服务器,而其他地点是可以连接的。 同样,任何时候,办公室外的人都想从任何一台服务器(比如说一个500MB的代码仓库)中获取某些东西,那么现在下载速度高达20KB / s是不可接受的(我提到了慢DSL是好的)。 我们不得不在这个服务器上实现stream量整形,因为最大化这个连接是相当简单的。

我曾想过在networking中运行两个(或更多)OpenVPN服务器。 这些必须具有相同的子网,因为我们的应用程序依靠虚拟networking的IP地址来实现其某些核心function。 客户最好还是保留相同的IP地址,但这并不重要。

为了简单起见,让我们打电话给当前的服务器办公室和我设置的第二台服务器, 。 拨打T1 电话上的服务器。

事实certificate,这是相当复杂的,因为只要我连接到 ,我不能看到办公室 。 任何通过办公室的服务器的路由也不会工作,而我连接到 (不ping,没有),反之亦然。 对于阻止stream量的iptables没有规定。

最近我遇到了这篇关于linuxjournal的文章,但是他们提供的解决scheme似乎只涵盖了两台服务器的使用,而且有点过时(甚至找不到太多的文档,他们的wiki是离线的)。 他们还表示,增加更多的服务器将是一项复杂的任务。

理想情况下,我想让现有的服务器办公室运行虚拟networking,并在服务器和电话服务器上运行OpenVPN守护进程(分别为100 Mbit和非常可靠的连接),以便在出现硬件故障时保证安全,DSL故障等

因此,本质上,我正在寻找一个高可用性的OpenVPN解决scheme(修复,修补,破解,调整,无论你想调用它),将接受多个主机(2或更多)的连接,同时保持相同的IP地址子网无论您连接到哪个服务器。

感谢您的阅读和对长文章的抱歉,我希望得到的重点:P

编辑:

我忘记提到的另一个重要的部分是3台服务器需要在虚拟networking上拥有一致的IP地址,因为我们的应用逻辑直接依赖于这些。 客户端是不相关的,他们可以有任何地址,但服务器之间需要进行通信。 如果你知道一个不同的解决scheme(可能是10.8.0。*中的条目的某种types的dns),请将其包含在内。 再次感谢。

编辑2:

添加了一个networking地图,这不是很好,但应该得到的重点。 请注意,对于任何服务器与任何其他服务器进行通信,它必须始终通过Office服务器。 这是意图,虽然我想将这个function改为Cloud

networking地图

我玩了networking和openvpn相当多(在ISP 10多年的系统pipe理员),那么这个简单的解决scheme如何。

在dns中创build一个主机有n个ip地址的条目(循环方式)

在Openvpn客户端放置主机的远程名称,以实现循环

在vpn服务器上有两块网卡,一块连接公网ip(循环地址1),另外一块连接私有网卡。 第二个服务器,不同的公共地址(循环地址2),相同的私有类。

创buildtap0接口,将地址连接到专用接口,有单个DHCP将pipe理寻址到您的客户端。

这样我认为你可以达到你想要的尽可能多的冗余。

如果客户根据所连接的服务器获取不同的地址是可以接受的,那么设置起来非常简单。 你没有直接解决你连接的客户端的数量,也没有你的地址空间的大小(不pipe你的VPN是在一个专用的networking上,还是和你的办公室有相同的地址空间),所以我做了一堆可能不正确的假设。 随时回复更正。

我将假设:

  • 你想build立三个OpenVPN服务器,全部在192.168.1.0/24networking上。
  • OpenVPN服务器是唯一使用这个地址空间的服务器。
  • 你的“内部”networking是10.10.10.0/24。
  • 您希望至less有20个客户端能够同时连接到任何一台服务器。

您将VPNnetworking分成多个/ 27个networking,每个networking与一台服务器相关联。 这给你:

  • 服务器1
    • networking:192.168.1.0/27
    • 服务器IP:192.168.1.1
  • 服务器2
    • networking:192.168.1.32/27
    • 服务器IP:192.168.1.33
  • 服务器3
    • networking:192.168.1.64/27
    • 服务器IP:192.168.1.65

第一台服务器的OpenVPNconfiguration包括:

server 192.168.1.0 255.255.255.224 push "route 192.168.1.0 255.255.255.0" push "route 10.10.10.0 255.255.255.0" 

第二,它将包括:

 server 192.168.1.32 255.255.255.224 

等等。

您的networking基础架构将需要有到所有三台服务器的路由。 这将是以下几点:

 route add 192.168.1.0/27 gw 192.168.1.1 route add 192.168.1.32/27 gw 192.168.1.33 route add 192.168.1.64/27 gw 192.168.1.65 

从您的应用程序的angular度来看,任何连接的客户端都在同一个/24networking上。 你得到了三个OpenVPN服务器(有了增加更多的空间,因为你只使用地址高达192.168.1.95这个安排),或有空间为每个服务器更多的客户端。

这是您如何设置的简要概述。 如果这里的东西没有意义,或者如果你想让我在一个特定的领域更详细的让我知道。

注意:写太多的glögg后 ,可能需要一些语法和/或事实检查。


你可能想看看n2n

http://www.ntop.org/products/n2n/

您可以让每个客户端在同一个子网上。 你应该能够保持相同的地址空间,只需通过新的vpn路由查找一些路由,以使其工作。