有多个页面建议在 Amazon EC2 上设置 Open VPN 服务器,但我需要做的就是设置一个客户端(这样任何互联网访问都会通过 VPN 路由,而不是直接从 AWS IP 访问)。我可以将 .ovpn 文件传输到它并使用以下命令启动它
openvpn --config client.ovpn
但是,一旦我这样做,我就会失去 ssh 连接,因此无法用它做任何事情。在 Google 上搜索了很久,找到了各种建议,声称可以绕过某些端口或某些 IP 地址。两者都可以,也就是说,当 ssh 运行时,我很乐意被限制到某些 IP 上以通过 ssh 进行连接。
然而,这些似乎都无法在亚马逊的环境中发挥作用,例如参见Amazon EC2 上的 OpenVPN 客户端。它是一个新实例,因此如果有帮助的话,它位于 VPC 中。
答案1
就我而言,执行以下操作可成功启动 openvpn 连接,且不会丢失 ssh 功能:
例子
sudo route add -host 96.113.49.112 gw 10.0.0.1
openvpn --config newvpnconfigfile1.ovpn
其中后面的 iphost
是我们办公网络的公共 IP(您只需在自己的电脑上在 Google 中输入“我的 ip 是什么”即可获得)并且后面的 ip是 ec2 实例的网关 IP(在您的 AWS 服务器上执行它时,可以gw
在输出的第一行、第二列中看到)。netstat -anr
执行上述操作前后检查报告的公网 IP,发现它已经从报告为我们的正常 IP 地址变为报告为 VPN 服务器的 IP 地址。
您可以在这里找到更多背景信息: 防止在服务器机器上登录 VPN 后丢失 SSH 连接
答案2
就我而言,我只需要通过 VPN 连接路由某个 IP,因此我将以下几行添加到 OpenVPN 的配置文件中:
route-nopull
route The.IP.To.Go 255.255.255.255
进而:
sudo openvpn --config vpnconfigfile.ovpn
取自https://serverfault.com/a/747828和https://superuser.com/a/628488