postgresql vpc中的cidr不同于默认值www.example.com时,无法访问RDS postgres示例10.0.0.0

sg24os4d  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(2)|浏览(109)

在AWS帐户中,我使用选项“创建vpc和更多”创建了VPC1,因此它可以自动创建包含子网、路由表等的整个包。我使用默认的10.0.0.0/16 cidr块。我创建了简单的RDSPostgres示例和附加的安全组,允许所有双向通信。
我可以连接到数据库没有问题。
然后,我对VPC2做了同样的操作,但使用了10.1.0.0/16的非重叠cidr,并创建了带有安全组的postgres RDS,该安全组允许所有双向流量。但是,当我想访问它时,连接超时。
只是为了检查一下,这次我用cidr www.example.com再次创建了另一个VPC310.0.0.0/16,而VPC1仍然在运行RDS postgres。在VPC3上,我创建了一个带有安全组的postgres RDS,允许双向传输。我可以连接到数据库。
我重复了很多次这个场景,来回删除和创建VPC和RDS数据库示例,所以我不认为有一个地方可以复制粘贴凭据错误等等。每次确保RDS示例的“公共可用”设置为“yes”时。
这怎么可能?我是否不允许使用10.1.0.0作为VPC2的cidr?我该怎么做?

xtfmy6hx

xtfmy6hx1#

感谢所有的贡献!经过调查,发现我是在使用默认设置创建vpc,这意味着我创建了2个公共子网和2个私有子网。当我创建RDS示例时,随后我离开了子网组的自动创建,导致它也包括私有子网。结果,RDS在私有子网中着陆,这就是为什么我无法访问它。对于任何有类似问题并在未来阅读这篇文章的人,我建议做以下:在创建RDS示例之前,请在RDS菜单中手动创建一个子网组(在左侧面板中有一个专门的位置可以执行此操作)。在那里创建一个子网,只包括公共子网。然后才继续创建RDS示例,不要离开自动创建子网组,而是选择您刚刚创建的现有子网组。
我知道这不符合最佳实践,因为我了解到通常数据库应该在私有子网中,但这是另一个主题。
我认为我的问题解决了。感谢所有帮助我解决这个问题的人,我希望这对将来的人有所帮助。

41zrol4v

41zrol4v2#

为了重现您的情况,我做了以下操作:

*创建了私有网络,在两个公网子网的AZ中,CIDR为10.1.0.0/16

子网包括:

*推出Amazon RDS PostgreSQL数据库(免费层、t3.micro、gp2、新子网组、新安全组、公共访问=是)
*修改安全组允许从0.0.0.0/0访问(而不是默认的“我的IP”)
*等待数据库可用

  • 使用DBeaver连接数据库
    *连接成功

因此,问题似乎出在您对Amazon RDS数据库的特定配置上。

相关问题