OpenVPN 故障转移

OpenVPN 故障转移

我公司有两个办公室,位于两个完全不同的位置。A 是主办公室,B 是辅助办公室。A 办公室有一个 VPN 服务器,每台计算机都通过这个 OpenVPN 服务器访问 A 网络。去年我们的 VPN 服务器出现了一些错误,因此人们无法在 B 办公室工作。我的问题是 OpenVPN 是否有故障转移方法?我们想设置另一个 VPN 服务器,但如果发生问题,我们如何解决故障转移部分。

答案1

我的一个客户在多站点设置中严重依赖 OpenVPN,我们采取了两种方法:

  1. 主要的 OpenVPN 服务由两台机器提供,它们使用 heartbeat/CRM 组成 HA 故障转移对。如果其中一台机器出现故障,另一台机器将接管共享 IP 地址,服务将继续。现有会话将被丢弃,但客户端通常会自动重新进行身份验证,我们发现这对用户来说在实践中相当轻松。

  2. 第二个站点也有一个可用的 OpenVPN 端点,所有用户都有第二个配置作为备份。如果与主站点的互联网连接中断,他们可以将 OpenVPN 客户端指向第二个配置,这样就可以继续正常生活。

如果您这样做,并且使用用户名/密码身份验证以及基于证书的端点身份验证,我们发现联合身份验证环境(例如,通过 LDAP 进行身份验证)非常重要。否则,用户会忘记不经常使用的端点上的访问令牌,或者无法在所有地方更新它们,并且任何故障转移都会引发大量“我的密码无效“呼叫。

联合服务应具有与 OpenVPN 服务器本身类似的弹性程度,否则您所做的只是上游的 SPOF。

答案2

我们想设置另一个 VPN 服务器,但如果发生某些事情,我们如何解决故障转移部分。

好的。如果你使用 Linux,那么

1)简单的方法是使用 monithttps://mmonit.com/monit/

2)cron 中的 Bash 脚本https://github.com/darkhex/bash_scripts/blob/master/work-scripts/check_vpn.sh

3)带有触发器的 Zabbix

答案3

我建议您设置一个高可用性(故障转移)集群。您需要一个虚拟 IP,该 IP 将成为您的 vpn 客户端用作网关的 IP。如果发生故障,集群会将此 IP 迁移到备用服务器上,并且集群将在备用服务器上启动 openvpn。我已经用 shell 脚本编写了一个故障转移集群管理器,请查看它,如果您需要支持,请直接联系我(查看我的电子邮件中的代码)。 https://github.com/nackstein/back-to-work/

我认为代码优雅且紧凑,即使是专家级系统管理员也能理解。这是一个比安排 crontab 脚本更好的解决方案,因为使用我的集群,您将完全避免脑裂情况。唯一的缺点是它需要 3 台电脑才能工作(其他集群软件使用共享存储进行仲裁或使用 STONITH 方法,如 RedHat 集群,但 IHMO 是一个丑陋的解决方案)。只有 2 个节点,如果服务器发生故障,您无法避免脑裂,这是数学问题 :)

相关内容