【问题标题】:Unable to connect to MSSQL server on Amazon RDS using NAT instance无法使用 NAT 实例连接到 Amazon RDS 上的 MSSQL 服务器
【发布时间】:2013-08-06 02:55:39
【问题描述】:

我对 Amazon Web Services 完全陌生,我正在尝试使用公共子网和私有子网实现虚拟私有云。私有子网将托管我的数据库服务器,公共子网将包含我的应用程序的 Web 服务器。我按照亚马逊自己的分步教程来实现这一点:

Scenario 2: VPC with Public and Private Subnets

我已按照教程中的说明配置了所有 VPC 安全组,并且成功地让我的 Web 服务器与我的数据库服务器通信。我还想从本地计算机上的 MSSQL Management Studio 远程连接到数据库,这样我就可以创建/删除模式并通常查看数据库中的内容。但是,我根本无法连接到数据库服务器。

部分问题是我不确定我要连接到什么。在做本教程之前,我创建了一个简单的数据库并将其端点用作 URL,我可以从本地计算机远程连接到它。现在,由于数据库服务器位于私有子网上,并且只能通过 NAT 实例与外界通信,这是否意味着我应该使用 NAT 的弹性 IP 作为数据库 URL 并在 NAT 的安全组中添加额外的规则?我的网络知识有些欠缺,所以我不太确定,教程在这里也没有帮助。

我的安全组包含以下条目:

NAT 实例安全组入站:

Port   |   Source
22     |   my external ip
80     |   10.0.1.0/24 (private subnet)
443    |   10.0.1.0/24 (private subnet)
1433   |   my external ip

NAT 实例安全组出站:

Port   |   Destination
80     |   0.0.0.0/0
443    |   0.0.0.0/0
1433   |   0.0.0.0/0

数据库安全组入站:

Port   |   Source
1433   |   sg-d6ec33b9 (web servers security group)

数据库安全组出站:

Port   |   Destination
80     |   0.0.0.0/0
443    |   0.0.0.0/0

Webservers 安全组入站:

Port   |   Source
22     |   0.0.0.0/0
80     |   0.0.0.0/0
443    |   0.0.0.0/0
8080   |   0.0.0.0/0

Webservers 安全组出站:

Port   |   Destination
80     |   0.0.0.0/0
443    |   0.0.0.0/0
1433   |   sg-b5ec33da (database security group id)

主路由表与私有子网 (10.0.1.0/24) 相关联,并具有以下路由:

Destination | Target
10.0.0.0/16 | local
0.0.0.0/0   | i-cf8605ad (NAT instance id)

自定义路由表与公共子网 (10.0.0.0/24) 相关联,并具有以下路由:

Destination | Target
10.0.0.0/16 | local
0.0.0.0/0   | igw-a4ed3aca (internet gateway id)

因此,鉴于此设置,我需要做些什么才能获得对私有子网上受 NAT 实例保护的数据库服务器的外部访问权限?我需要添加/更改安全组中的规则吗?

提前致谢。

【问题讨论】:

    标签: database networking amazon-web-services amazon-ec2 amazon-rds


    【解决方案1】:

    您的问题比安全组更改要大一些。主要问题是您的 private vpc 是私有的,就像“无法访问互联网”一样。

    您有多种从外部连接的选项:

    1. 使用堡垒机作为中间跃点(在公共网络上)并添加相关的 SG 规则以从该机器跃入您宝贵的数据库。您的用户将需要连接到该机器,然后在该机器上运行客户端工具以连接到数据库或设置到您的数据库的 SSH 隧道(以便您的办公室机器可以连接)。就用户体验和安全性(堡垒成为一个非常大的安全风险)而言,这不是一个很好的解决方案,但设置起来很简单。 (注意:既然你是 MS 伙计,那么请为 RDP 切换 SSH [并取消隧道的事情])

    2. 设置 VPN - 带大枪射击苍蝇。设置 VPN(使用 AWS VPN 终止,或设置 OpenVPN 或类似的东西)。定义路由、SG 规则、Keys 客户端并在此处更新(如果您设法在合理的努力范围内进行配置)。我不会使用完整的站点到站点 VPN(到您的办公室网络),因为您不希望办公室中运行的所有恶意软件都到达您的“私人”数据中心。

    3. 从您的办公室创建一个到您的数据库实例的小通道。原料: 从您的办公室 IP 到专用网络的自定义路由,允许办公室 IP 到 DB SG 的适当 SG 规则,使实例 Internet 可访问的弹性 IP。

    您可以利用 Dome9 的访问租约来提高解决方案 1,3 的安全性。这将允许您限制对堡垒/直通的访问,并根据授权用户的需求启用它们(免责声明 - 我是一个自豪的 Dome9'er)

    享受

    【讨论】:

    • 感谢您批准我的回答。你选择了哪个选项?
    • 如果数据库在 RDS 上,并且也在私有子网内,由于您无法为 RDS 实例分配弹性 IP,您能否将方法 #3 与 RDS 端点一起使用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 2021-10-06
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多