我刚刚尝试在 AWS ec2 上设置 OpenVPN。但是,每次启动 ec2 时,公共 IP 地址都会发生变化,并且我无法使用 Windows PC 上的连接客户端软件连接到 OpenVPN。关于如何更新“OpenVPN Connect”有什么想法吗?
由于每次重新启动都会为您提供一个“新”IP 地址,因此您可以在 @reboot 上有一个 cron 脚本来重新配置 openvpn 服务器
@reboot at now + 1 min -f /path/to/script.sh
/path/to/script.sh
# gets the current public ip assigned to your instance
INSTANCE_PUBLIC_IP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)
cd /usr/local/openvpn_as/scripts
# updates the server hostname with your public IP
./sacli --key "host.name" --value $INSTANCE_PUBLIC_IP ConfigPut
# restart the server
./sacli start
当 Amazon EC2 实例启动时,可以为其分配一个公共 IP 地址。这将是一个随机地址。因此,每当实例停止和启动时,它都会更改其公共 IP 地址。
如果您想保持公共IP地址相同,那么您应该:
EC2 实例将保留相同的公共 IP 地址,即使在停止和启动时也是如此。
我无法让上面的@reboot解决方案工作,但发现了另一个解决方案。
基本上,我认为当您重新启动实例时,OpenVPN 服务器实际上正在处理 IPv4 的更改。
但主机名设置为实例在部署时拥有的 IPv4 地址。
OpenVPN Connect 上有参数可以帮助处理此问题(服务器覆盖)。
当您想要连接 VPN 时,请在 OpenVPN Connect 中编辑相关配置文件,以便:
用户:[用户名]
密码:[密码]
服务器主机名: [部署时的公共 ipv4](仍然是服务器上的主机名。您可以通过登录 VPN 管理面板并转到网络设置来找到它)
服务器覆盖: [当前 public-ipv4](实例启动时的实际 IP 地址)
端口:(大概)943
您必须在每个实例启动时将新的 IPv4 放入服务器覆盖,但这肯定是最简单的方法。