【问题标题】:AWS OpenVPN instance can't ssh to other ec2 instances of connect to webAWS OpenVPN 实例无法通过 ssh 连接到其他连接到 Web 的 ec2 实例
【发布时间】:2021-03-10 08:32:44
【问题描述】:

我在 AWS 上设置了一个 OpenVPN EC2 实例,它具有类似的安全组

我下载了client.ovpn 文件,并且可以像在Ubuntu 中的sudo openvpn --config client.ovpn 一样成功连接到它(导入配置后也可以通过网络管理器)。都很好。

现在我想这样做,以便我的其他 EC2 实例(托管实际应用程序)只能通过 VPN 访问,并且不能直接通过 SSH 连接。这些 EC2 实例之一的安全组看起来像

我在这里允许来自 OVPN 服务器的私有 IPv4 地址的端口 22 上的入站流量。

但是,如果我连接到 VPN 并尝试通过 SSH 连接到应用程序 EC2 实例,它只会超时,并且在连接到 VPN 时我也无法访问网络。 如果我允许来自 0.0.0.0 的端口 22 上的 SSH,那么我可以 SSH 进入,没有问题。

谁能指出我的问题可能是什么?

可能是因为它们位于不同的子网上吗?

【问题讨论】:

  • 你想要达到的结果是什么?如果您想让当前的 OpenVPN 实例成为“堡垒主机”,它将是唯一允许访问所有其他实例的点,那么 OpenVPN 不是必需的
  • 嗯,我想实现我只能通过 OpenVPN 实例 ssh 进入 ec2 实例,而且我有一个 jupyter 笔记本托管实例,我希望只能在打开VPN。
  • 那么 1/ 您正在尝试使用其公共 IP 访问 EC2 实例? 2/ 这些 EC2 实例没有加入 VPN 3/ 您只使用当前工作站加入 VPN 4/ 您为来自“OpenVPN 实例的私有 IP 地址?”的流量启用了 SSH 访问?
  • 1/ 如果 VPN 关闭并且如果我打开安全组以允许世界 (0.0.0.0) 2/ 如果我锁定,我可以通过 SSH 使用他们的公共 IPv4 DNS 访问应用程序 EC2端口 22 允许来自 VPN 实例的私有 IP 地址,然后连接到我的 linux 台式机上的 VPN,尝试通过 SSH 连接到应用程序 EC2s 时超时 3/我从桌面加入 VPN,但此时 VPN 连接是只要他们有信誉,就可以从任何 IP 获得。稍后可能会收紧 4/ 是的,事实上,在调试期间,我启用了来自 openv VPN 实例的私有 IP 的所有流量,只是为了排除问题

标签: amazon-web-services amazon-ec2 openvpn


【解决方案1】:

简单的解决方案:Forward all traffic through OpenVPN。使用 OpenVPN 的公共 IP 限制并连接到您的实例,通过其公共 IP

连接到您的 EC2

据我了解,您的解决方案不起作用的原因

  • AWS VPC 已经有点像 VPN
  • 您正试图通过他们的 公共 IP 连接到您的 EC2,该 IP 通过 Internet 路由,因此允许 OpenVPN 的 私有 IP 与 EC2 的公共 IP 通信是很有意义的您正在安装 OpenVPN 的服务器应使用其公共 IP
  • 如果您必须使用 OpenVPN 并且不希望内部(OpenVPN 到 EC2)连接暴露在 Internet 上,则 EC2 实例必须加入 OpenVPN 的专用网络,在那里,每个人都可以使用 OpenVPN 范围内的专用 IP 进行通话
  • extend AWS VPC with OpenVPN
  • 或查看split-tunnel 是否适用于“May allow users to access their LAN devices while connected to VPN

【讨论】: