AWS 上的 OpenVPN HA 设置

san*_*mar 6 openvpn high-availability amazon-web-services

我们在 AWS 上使用付费版本的 OpenVPN。现在我们想设置 HA,但我们在 AWS 上找不到任何适用于 OpenVPN HA 的解决方案。尝试过OpenVPN 文档,但它不符合 AWS 上的 HA 要求。任何人都可以分享/建议OpenVPN HA ON AWS 的最佳解决方案

Luc*_*lli 5

启动两个 OpenVPN 访问服务器实例,为每个实例分配一个弹性 IP。将它们配置为 LDAP 身份验证,这样您就不需要两次创建所有帐户并使它们在两个实例之间保持同步。

打开管理界面ip:443/admin并单击 LDAP -> 设置 LDAP:

https://openvpn.net/index.php/access-server/docs/admin-guides/190-how-to-authenticate-users-with-active-directory.html

您可以部署自己的 LDAP 服务,也可以使用:

https://aws.amazon.com/directoryservice

现在您必须决定您希望客户端如何连接到这些实例。

最简单的方法是将两个 OpenVPN 访问服务器添加到客户端配置中:

remote-random
remote hostname-of-instance1
remote hostname-of-instance2
Run Code Online (Sandbox Code Playgroud)

或者,您可以在 AWS Route53 中使用两个 IP 地址创建循环记录,并让 Route53 监控节点的可达性并在需要时删除无法访问的实例:

https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html

在这种情况下,您只需要:

remote round-robin-record
Run Code Online (Sandbox Code Playgroud)

在您的 OpenVPN 客户端配置文件中。

或者,您可以部署 AWS ELB,随时选择您想要执行的实例数量,并让 ELB 根据需要产生和停用实例,无论何时它们死亡或变得无法访问。

在这种情况下,您的 OpenVPN 客户端将连接到 ELB 本身的 IP 地址/主机名。

编辑:当其中一台 OpenVPN 服务器出现故障时,您的客户端将断开连接,并且您很可能希望它们自动重新连接到尚存的 OpenVPN 服务器。您可以通过添加以下内容来实现此目的:

keepalive 10 120
Run Code Online (Sandbox Code Playgroud)

到 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
Run Code Online (Sandbox Code Playgroud)

然后在配置文件的同一个目录中创建一个名为 auth.txt 的文件,只有两行:

mylogin
mypassword
Run Code Online (Sandbox Code Playgroud)

确保文件受到充分保护。