Amazon-Web-Services

如何使用 AWS 中的 vpc 流日誌診斷跨賬戶 EC2/RDS 連接?

  • April 28, 2021

在 AWS 中,創建了 2 個帳戶。

  • 帳戶 1:A | 部署的 EC2
  • 帳戶 2:B | 已部署的 RDS

想從賬戶 1 的 EC2 連接到賬戶 2 的 RDS,但不起作用。因此啟用了 VPC 流日誌來診斷問題出在哪裡。這 2 個賬戶之間的連接正在使用中轉網關。雙方都通過路由表連接到自己的 VPC。

通過 db connect 客戶端從 A 到 B 進行連接測試後,試圖從 A 中查找網路介面 ID,例如eni-XXXXXXXX屬於 EC2 實例,在 B 的 CloudWatch Logs 組中,找不到它的名稱。

我按照本指南操作,使用 AWS VPC 流日誌診斷間歇性 RDS 連接。但是這些步驟不能解決我的問題,我無法用它來診斷:

確定您的 RDS 實例的彈性網路 ID (ENI)

  1. 使用 AWS RDS 控制台獲取實例的終端節點(格式為$$ xxx $$.$$ region $$.rds.amazonaws.com).
  2. 使用 dig 或類似的東西來查找端點的 IP 地址。CNAME 是不夠的,您需要實際的 IP。
  3. 使用 AWS 網路介面控制台搜尋您獲得的 IP 地址,並從結果記錄中獲取網路介面 ID(這將是 eni-XXXXXXXX)。

查詢您的流日誌

  1. 使用 VPC 控制台找到您的 VPC。轉到 Flow Log 選項卡,然後點擊進入 CloudWatch Logs 組。
  2. 在 CloudWatch Logs 組中,使用搜尋框查找您的網路介面 ID。
  3. 點擊您找到的記錄,您將看到您的實例的所有流量!

如何正確確認彼此的網路流量?

我在流日誌中發現了一個未知埠。

2 023910321035 eni-12309fdsaj0jf012 ACCOUNT_1_EC2_IP ACCOUNT_2_RDS_IP 45052 31337 6 3 180 1619490209 1619490213 REJECT OK
2 023910321035 eni-12309fdsaj0jf012 ACCOUNT_1_EC2_IP ACCOUNT_2_RDS_IP 45052 31337 6 3 180 1619490209 1619490213 REJECT OK

31337沒有打開。為什麼它會連接這個埠?

  1. 您真的需要中轉網關嗎?正如您的其他問題的答案中所建議的那樣, VPC 對等互連可能就足夠了。如果不告訴我們為什麼。
  2. 另一個問題中,您確認您的設置最終有效,您可以從 EC2 連接到 RDS。如果你現在不能改變什麼?
  3. 正如其他答案以及@Tim在評論中所建議的那樣:
  • 在與您的 RDS相同的子網安全組中啟動 EC2 實例。
  • 用於netcat監聽 DB 埠(例如 mysql 的 3306)並tcpdump觀察來自“其他”EC2 的流量。使用該數字確定您的連接是否有效 - 您是否看到傳入的數據包tcpdump?你看到回復了嗎?

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