我在 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 对等连接适合您的用例。
那个/27
vs/32
无关紧要。一个是子网范围,一个是主机 IP。在 RDS SG 中,允许主机 IP 就足够了。
希望有帮助:)