我在 AWS 账户 A 中有一个 EC2 实例。它的私有 IPv4 地址是 10.111.12.23。
我在账户 B 的 RDS 安全组规则中允许它,以制作 TypeCIDR/IP - Inbound
的 Rule 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 的 ec2 实例访问账户 B 中的 RDS,上面有 docker。登录 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呢?
RDS 通常不响应ping。尝试使用您的 mysql 或 postgresql 或任何客户端立即连接到它,而无需 ping。
还要确保您的所有路由都是有序的 - 两个 VPC 都有通过 TGW 到其他 VPC 的路由。数据包必须找到从 EC2->TGW->RDS 和 RDS->TGW->EC2 返回的方法。
除非您对 TGW 有其他用途,否则您最好为您的用例使用简单的VPC 对等互连。
那
/27
vs/32
没关系。一个是子网范围,一个是主机 IP。在 RDS SG 中,允许主机 IP 就足够了。希望有帮助:)