Amazon-Web-Services
如何使用 AWS 中的 vpc 流日誌診斷跨賬戶 EC2/RDS 連接?
在 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)
- 使用 AWS RDS 控制台獲取實例的終端節點(格式為$$ xxx $$.$$ region $$.rds.amazonaws.com).
- 使用 dig 或類似的東西來查找端點的 IP 地址。CNAME 是不夠的,您需要實際的 IP。
- 使用 AWS 網路介面控制台搜尋您獲得的 IP 地址,並從結果記錄中獲取網路介面 ID(這將是 eni-XXXXXXXX)。
查詢您的流日誌
- 使用 VPC 控制台找到您的 VPC。轉到 Flow Log 選項卡,然後點擊進入 CloudWatch Logs 組。
- 在 CloudWatch Logs 組中,使用搜尋框查找您的網路介面 ID。
- 點擊您找到的記錄,您將看到您的實例的所有流量!
如何正確確認彼此的網路流量?
我在流日誌中發現了一個未知埠。
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
沒有打開。為什麼它會連接這個埠?
- 您真的需要中轉網關嗎?正如您的其他問題的答案中所建議的那樣, VPC 對等互連可能就足夠了。如果不告訴我們為什麼。
- 在另一個問題中,您確認您的設置最終有效,您可以從 EC2 連接到 RDS。如果你現在不能改變什麼?
- 正如其他答案以及@Tim在評論中所建議的那樣:
- 在與您的 RDS相同的子網和安全組中啟動 EC2 實例。
- 用於
netcat
監聽 DB 埠(例如 mysql 的 3306)並tcpdump
觀察來自“其他”EC2 的流量。使用該數字確定您的連接是否有效 - 您是否看到傳入的數據包tcpdump
?你看到回復了嗎?