大家好。首先我要说的是,我的 Linux 体验并不是特别棒,但我通常可以轻松找到解决方法。
在工作中,我们有一个 OpenVPN 设置,现在需要进行一些改进。主服务器(tap 模式)在我们的办公室运行,位于一个相当慢的 DSL 连接后面。主要问题是,由于我通常不在办公室,每次我想访问虚拟网络上的某些东西时,我都必须通过该服务器才能到达其他地方。
我们有两台运行在 100 Mbit 连接上的服务器,用于开发和生产目的,办公室中还有大约 3 台服务器(其中一台位于用于 VOIP 的不同 T1 线路后面)以及大约二十几台每天从不同位置使用网络的客户端。
我们曾遇到过这样的情况:网络路由(不受我们控制)不允许人们访问我们的主要 OpenVPN 服务器,而其他位置可以连接。此外,任何时候办公室外的某人想从任何服务器获取某些内容(例如,500 MB 的代码存储库),如今高达 20 KB/s 的下载速度是无法接受的(我是否提到过 DSL 速度很慢?好吧)。我们必须在这台服务器上实施流量整形,因为最大化此连接相当简单。
我曾考虑在网络中运行两个(或更多)OpenVPN 服务器。不过,这些服务器必须具有相同的子网,因为我们的应用程序依赖虚拟网络的 IP 地址来实现其部分核心功能。客户端也最好保留相同的 IP 地址,但这并不是必需的。
为了简单起见,我们称当前服务器为办公室我正在设置的第二台服务器,云. 呼叫 T1 上的服务器电话。
事实证明这是相当复杂的,因为一旦我连接到云, 我看不见办公室. 任何到服务器的路由都会经过办公室当我连接到云(没有 ping,什么都没有)反之亦然。iptables 也没有规则可以阻止流量。
最近我遇到了这linuxjournal 上的文章,但他们提供的解决方案似乎只涵盖了两台服务器的使用,而且有些过时(甚至找不到太多文档,他们的 wiki 处于离线状态)。他们还表示,添加更多服务器将是一项复杂的任务。
理想情况下,我希望保留现有的服务器办公室运行虚拟网络,并在云和电话服务器(分别为 100 Mbit 和非常可靠的连接),以便在出现硬件故障、DSL 故障等时我们能够保证安全。
因此,从本质上讲,我正在寻找一个高度可用的 OpenVPN 解决方案(修复、补丁、破解、调整,无论您想怎么称呼它),它将接受多个主机(2 个或更多)上的连接,同时保持相同的 IP 地址子网,而不管您连接到哪个服务器。
感谢阅读,抱歉文章太长,希望你理解我的观点 :P
编辑:
我忘记提到的另一个重要部分是,这 3 台服务器需要在虚拟网络上具有一致的 IP 地址,因为我们的应用程序逻辑直接依赖于这些地址。客户端无关紧要,它们可以拥有任何地址,但服务器之间需要进行通信。如果您知道其他解决方案(可能是 10.8.0.* 内条目的某种 DNS),请将其包括在内。再次感谢。
编辑2:
添加了网络图,虽然不是很好,但应该能说明要点。请注意,任何服务器要与任何其他服务器通信,都必须始终通过办公室服务器。这是有意为之,但我想将该功能更改为云。
答案1
我经常使用网络和 openvpn(在 ISP 担任 10 多年的系统管理员),那么这个简单的解决方案怎么样。
在 DNS 中创建条目,该条目将为一个主机提供 n 个 IP 地址(循环方式)
在 Openvpn 客户端中输入远程主机名,这样就可以实现循环
在 vpn 服务器上有两张网卡,一张连接到公共 ip(循环地址 1),另一张连接到私有类。第二台服务器,不同的公共地址(循环地址 2),相同的私有类。
创建 tap0 接口,将地址桥接到私有接口,并拥有单个 dhcp 来管理客户端的寻址。
这样,我认为你就可以实现你想要的冗余度。
答案2
如果客户端可以根据所连接的服务器获取不同的地址,那么设置起来就相当容易。您没有直接说明您连接的客户端数量,也没有说明您的地址空间大小(也没有说明您的 VPN 是在专用网络上还是与您办公室的其他部分共享相同的地址空间),因此我做出了许多可能不正确的假设。欢迎随时回复并进行更正。
我假设:
- 您想要设置三个 OpenVPN 服务器,全部位于 192.168.1.0/24 网络上。
- OpenVPN 服务器是唯一使用此地址空间的服务器。
- 您的“内部”网络是 10.10.10.0/24。
- 您希望至少 20 个客户端能够同时连接到任何单个服务器。
您可以将 VPN 网络拆分为多个 /27 网络,每个网络与单个服务器关联。这样可以实现以下功能:
- 服务器 1
- 网络:192.168.1.0/27
- 服务器 IP:192.168.1.1
- 服务器 2
- 网络:192.168.1.32/27
- 服务器 IP:192.168.1.33
- 服务器 3
- 网络:192.168.1.64/27
- 服务器 IP:192.168.1.65
第一个服务器的 OpenVPN 配置包括以下内容:
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
..等等。
您的网络基础设施需要有通向所有三台服务器的路由。具体如下:
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
从应用程序的角度来看,任何连接的客户端都在同一/24
网络上。您将获得三台 OpenVPN 服务器(由于在这种安排下您只使用最高 192.168.1.95 的地址,因此可以添加更多服务器),或者每台服务器可以容纳更多客户端。
这是关于如何设置的简要概述。如果这里有些内容不合理,或者您希望我更详细地介绍某个特定区域,请告诉我。
注意:写得太多了格洛格,因此可能需要一些语法和/或事实检查。
答案3
你可能想看看 n2n
http://www.ntop.org/products/n2n/
您可以让每个客户端都位于同一子网中。您应该能够保留相同的地址空间,只需通过新的 VPN 路由添加一些路由即可让一切正常运行。