Amazon-Web-Services

如何使用 AWS 中允許的 IP 連接來自不同賬戶的 RDS?

  • April 20, 2021

我在 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呢?

無法 ping RDS 集群的端點

RDS 通常不響應ping。嘗試使用您的 mysql 或 postgresql 或任何客戶端立即連接到它,而無需 ping。

還要確保您的所有路由都是有序的 - 兩個 VPC 都有通過 TGW 到其他 VPC 的路由。數據包必須找到從 EC2->TGW->RDS 和 RDS->TGW->EC2 返回的方法。

除非您對 TGW 有其他用途,否則您最好為您的案例使用簡單的VPC 對等互連。

/27vs/32沒關係。一個是子網範圍,一個是主機 IP。在 RDS SG 中,允許主機 IP 就足夠了。

希望有幫助:)

引用自:https://serverfault.com/questions/1060889