我在私有子网中拥有 EC2 实例,其在 NAT 网关下,并且 AWS RDS MySQL 可以公开访问。 EC2 和 RDS 位于同一 VPC,同一区域。
我需要避免在公共可访问的 AWS RDS 上使用私有子网创建 RDS。如果我创建了,我必须能够在必要的时间连接到 RDS。
因此,我尝试为此使用站点到站点 VPN,但我的隧道始终无法连接。
请提供适合我的场景的解决方案,除了该站点到站点 VPN 之外,如果我们有适合我们场景的最佳解决方案,您可以建议我们。
尝试过站点到站点 VPN,但隧道状态始终为“关闭”。 尝试为私有子网上的 RDS 添加安全组,无法将该数据库与本地计算机上的 MySQL 工作台连接
期待针对我的场景有更好的解决方案。如果站点到站点 VPN 是更好的解决方案,则需要了解如何将隧道状态解析为“关闭”。
使用 VPN,您需要设置客户端 VPN 端点,请参阅此处如何设置客户端 VPN 端点。请记住将 VPN 连接分配到私有子网之一,并允许流量流向其安全组中的 AWS RDS 数据库。 不要忘记检查客户端 VPN 的费用。
作为替代方案,您可以使用 SSM 在专用网络中设置堡垒主机来连接到您的数据库。了解如何使用 Session Manager 和 Amazon EC2 Instance Connect 访问堡垒主机。
在本地,您可以使用端口转发到 RDS 数据库:
aws ssm start-session --target <EC2-instance-ID> --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["3306"], "localPortNumber":["3306"]}' --profile <your-profile>
请相应地替换
旁注:您可以在需要时启动和停止堡垒主机以节省成本。
检查安全组:确保与您的 EC2 实例和 RDS 实例关联的安全组允许必要端口上的入站和出站流量。对于 MySQL,默认端口通常为 3306。请确保您的 EC2 实例可以通过该端口与 RDS 实例通信。 检查路由表:确认与私有子网关联的路由表已正确配置,以将发往 RDS 实例 IP 地址范围的流量路由到 NAT 网关。 检查 NACL:网络访问控制列表 (NACL) 在子网级别提供额外的安全层。确保与您的私有子网关联的 NACL 允许端口 3306(或您的 RDS 实例用于 MySQL 的端口)上的入站和出站流量。 检查 VPC 对等互连:如果您有多个 VPC 并使用 VPC 对等互连来连接它们,请确保对等连接配置正确并允许 VPC 之间的流量。 VPN 连接:如果您仍在考虑使用 VPN 连接,请仔细检查配置以确保其符合您的 VPC 和 RDS 实例的要求。确保 VPN 隧道已正确建立,并且路由已配置为在 VPC 和本地网络之间路由流量。 VPC 终端节点:如果您的 EC2 实例需要访问其他 AWS 服务,请考虑将 VPC 终端节点用于 S3 或 DynamoDB 等服务。这可以通过将流量保留在 AWS 网络内来帮助提高安全性和性能。 AWS Direct Connect:如果您的组织需要在本地环境和 AWS 之间建立专用网络连接,请考虑使用 AWS Direct Connect。这提供了从您的数据中心到 AWS 的私有、专用连接,绕过公共互联网。