我们在 AWS 上使用付费版 OpenVPN。现在我们想设置 HA,但我们找不到任何适合 AWS 上 OpenVPN HA 的解决方案。试过了OpenVPN 文档但它不符合 AWS 上的 HA 要求。有人可以分享/建议最佳解决方案吗?AWS 上的 OpenVPN 高可用性
答案1
启动两个 OpenVPN Access Server 实例,为每个实例分配一个弹性 IP。配置它们进行 LDAP 身份验证,这样您就不需要两次创建所有帐户,并保持它们在两个实例之间同步。
打开管理界面ip:443/admin
并点击 LDAP -> 设置 LDAP:
您可以部署自己的 LDAP 服务,也可以使用:
https://aws.amazon.com/directoryservice
现在您必须决定希望客户端如何连接到这些实例。
最简单的方法是将两个 OpenVPN 访问服务器添加到客户端配置中:
remote-random
remote hostname-of-instance1
remote hostname-of-instance2
或者,您可以在 AWS Route53 中使用两个 IP 地址创建循环记录,并让 Route53 监视节点的可达性并在需要时删除无法访问的实例:
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html
在这种情况下你只需要:
remote round-robin-record
在您的 OpenVPN 客户端配置文件中。
或者,您可以部署 AWS ELB,随时选择想要执行的实例数量,并让 ELB 根据需要生成和退出实例(当实例死亡或无法访问时)。
在这种情况下,您的 OpenVPN 客户端将连接到 ELB 本身的 IP 地址/主机名。
编辑:当其中一个 OpenVPN 服务器发生故障时,您的客户端将断开连接,并且您很可能希望它们自动重新连接到正在运行的 OpenVPN 服务器。您可以通过添加以下内容来实现此目的:
keepalive 10 120
到 OpenVPN 配置文件。更多信息:https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html
使用此设置,客户端和服务器将每 10 秒互相 ping 一次。如果一方超过 120 秒未看到任何流量,则隧道将关闭并重新启动。
编辑2:
如果您不希望 OpenVPN 在用户每次重新连接时提示用户重新输入登录名/密码,请让他将其添加到他的 OpenVPN 客户端配置文件中:
auth-user-pass auth.txt
然后在配置文件的同一目录中创建一个名为 auth.txt 的文件,其中只有两行:
mylogin
mypassword
确保文件受到充分保护。