如何在 AWS 中通过允许的 IP 连接其他帐户的 RDS?

如何在 AWS 中通过允许的 IP 连接其他帐户的 RDS?

我在 AWS 账户 A 中有一个 EC2 实例。其私有 IPv4 地址是 10.111.12.23。

我在帐户 B 中的 RDS 安全组规则中允许它,以制定 TypeCIDR/IP - Inbound的规则10.111.12.23/32。还在这两个帐户的 vpc 网络之间使用传输网关,路由它们以让帐户 A 中的 ec2 访问帐户 B。

当我在账户 A 中登录 ec2 时,无法 ping 通 RDS 集群的端点。检查 ec2 主机上的 IP,得到

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 00:01:b2:31:d0:d2 brd ff:ff:ff:ff:ff:ff
    inet 10.111.12.23/27 brd 10.111.12.43 scope global dynamic eth0
       valid_lft 2390sec preferred_lft 2390sec
    inet6 ze20::202:b3fa:fe31:a0c2/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:ed:6d:80:1a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 ze20::20:b1fa:fl39:712x/64 scope link
       valid_lft forever preferred_lft forever
...

IP10.111.12.23/27的子网是 27,而不是 32。那么这就是无法访问 RDS 的原因吗,即使它允许 /32 的 IP,但却不起作用。

而且,稍微复杂一点的是,我还想从账户 A 上的带有 docker 的 ec2 实例访问账户 B 中的 RDS。登录 docker 容器,检查其 IP:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
117: eth0@if118: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 01:12:lc:22:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.18.0.5/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever

它使用不同的网络 IP。那么即使可以从 ec2 主机连接 RDS,它也可以访问其上的 docker 内的 RDS 吗?

答案1

无法 ping 通 RDS 集群的终端节点

RDS 通常不响应. 尝试立即使用你的 mysql 或 postgresql 或任何客户端连接它,无需 ping。

还要确保所有路由都井然有序 - 两个 VPC 都有通过 TGW 到达其他 VPC 的路由。数据包必须找到从 EC2->TGW->RDS 以及从 RDS->TGW->EC2 返回的路径。

除非你对 TGW 有其他用途,否则你最好使用简单的VPC 对等连接适合您的用例。

那个/27vs/32无关紧要。一个是子网范围,一个是主机 IP。在 RDS SG 中,允许主机 IP 就足够了。

希望有帮助:)

相关内容