在 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在评论中所建议的那样:
netcat
监听 DB 端口(例如 mysql 的 3306)并tcpdump
观察来自“其他”EC2 的流量。使用该数字确定您的连接是否有效 - 您是否看到传入的数据包
tcpdump
?你看到回复了吗?