我有一些远程开发人员,他们经常出差,并且 IP 地址不断变化。我希望他们能够连接到 EC2 实例上运行的 VPN。一旦他们使用密钥连接到 VPN,他们就可以使用 VPN 将流量中继到 RDS 服务器。每天不断更改每个开发人员的安全组设置不是一个选择。
我研究了 OpenVPN,可以直接与托管 VPN 的实例创建 VPN 连接。我认为我的路由不起作用,因为 RDS 不知道如何将回复路由回 RDS 实例。
- 是否可以设置 OpenVPN 来按我希望的方式路由?
- 如果 1 不可能,那么我有哪些选项可以从未知远程源创建到 RDS 的安全已知连接。
答案1
一个非常简单的解决方案是仅使用 SSH 隧道来承载 SQL 流量。您没有提到您在 EC2 实例上运行的是什么操作系统,所以我假设您正在运行 Linux(如果您没有运行 Linux,只需为此t1.micro
目的启动一个实例。这将为这种类型的流量提供足够的马力)。所以 - 有了 Linux 服务器,设置起来会很容易。每个开发人员都需要在该服务器上有一个帐户,他们需要为自己生成一个密钥对,并向您提供公钥以部署到他们的服务器帐户上。
如果他们使用的是 Unix 操作系统,他们会运行类似这样的命令:
$ ssh user@ec2-host -L3306:a.b.c.d:3306
...其中“abcd”是 RDS 实例的 IP 地址。您只需确保每个用户在 RDS 数据库上都具有适当的授权,以便从他们通过 ssh 连接的 ec2 主机进行连接。
完成此操作后,开发人员将连接到他们的本地主机,端口 3306,该流量将通过隧道传输到 RDS 实例。
(我从未真正使用过 RDS,但考虑到它是作为 MySQL 的替代品构建的,我认为我的假设是正确的,它使用端口 3306。如果它使用不同的端口,则更改上述命令末尾的端口号)
答案2
是的,如果不费点力气,你是无法做到这一点的。最简单的解决方案是在网关将 VPN 流量发送到 RDS 时对其进行 NAT,这样 RDS 就知道在将流量从 NAT 中归档并发送回 VPN 之前将其发送回网关。另一种方法是可能工作是使用 VPC;我从未将它与 RDS 一起使用过(或者,老实说,根本没用过),但据我了解 VPC 网络的工作方式,RDS 可能会挂接到你的 VPC 中,因此可能能够使用网关。但我认为 NAT 最终会成为最简单的选择。