无法 ping AWS RDS 终端节点

Posted

技术标签:

【中文标题】无法 ping AWS RDS 终端节点【英文标题】:Can't ping AWS RDS endpoint 【发布时间】:2014-05-01 04:56:25 【问题描述】:

我想将我的本地 mysql 数据库迁移到 Amazon RDS。但首先我想测试它是否正在接收通信。所以我尝试ping它。但是尝试超时。

ping -c 5 myfishdb.blackOut.us-west-2.rds.amazonaws.com
PING ec2-54-xxx-xxx-118.us-west-2.compute.amazonaws.com (54.xxx.xxx.118): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

我怀疑我需要打开入站设置,所以我打开设置来

SSH TCP 22 72.xxx.xxx.xxx/32

它仍然不起作用。你认为我做错了什么?我还有什么遗漏吗?

【问题讨论】:

为什么需要 SSH 访问? RDS 的整体理念是为您管理底层架构。 您将只能在 RDS 安全组上打开端口 3306。 【参考方案1】:

默认情况下,AWS 安全组会阻止 ICMP(包括 ping)。您必须打开 ICMP - 盲目地尝试打开 TCP/22 将无济于事。

【讨论】:

文档暗示 RDS 服务器不会响应 ping,即使您配置了安全组。【参考方案2】:

所以我尝试 ping 它。但是尝试超时。

Ping 不起作用,因为默认情况下安全组会阻止所有通信。您必须在安全组防火墙中“戳洞”才能获取到您的实例的流量。

SSH TCP 22 72.xxx.xxx.xxx/32 还是不行。

是的。 RDS 不允许您通过 SSH 登录到盒子。只有 MySQL 端口 (3306) 是开放的。

我想将我的本地 mysql 数据库迁移到 Amazon RDS。

好的,但要小心。不要向整个互联网(即 0.0.0.0)开放 3306。 MySQL 不是为此而设计的,并且经常存在任何人都可以侵入您的数据库的缺陷。

您可以只打开 3306 到您的(家庭)IP 地址(或您将使用它的服务器)。它应该看起来像“5.5.5.5/32 TCP 端口 3306”。但请注意,这不是很好的安全措施,因为其他人可以看到您的数据包。 (MySQL 支持加密连接,但您必须明确设置它们。)

测试端口是否开放的最佳方法是远程登录到端口。您可以使用telnet my.mysql.ip.address 3306 测试您的设置。如果您没有收到任何消息,则端口未打开。如果你得到“连接到..”,那么你的 MySQL 端口正在工作。

使用 RDS 的最安全方式是通过 EC2 实例。您可以在 EC2 实例和 RDS 安全组之间建立信任。您的数据包不会通过 Internet 传输,而只会在 AWS 网络上传输。其他人将无法看到您的数据包,因为 EC2 中不允许这样做。

【讨论】:

文档暗示无论您的安全组规则如何,您都无法 ping RDS 实例。 在某些情况下,将 ICMP 添加到安全组将不允许您 ping。我有一个在 RDS 中运行的 SQL Server 实例;添加 0.0.0.0/0 以允许 ICMP IPv4 后,我没有收到 ping 响应。这是一个令人困惑的问题,可能是浪费时间。 telnet 方法对我有用。【参考方案3】:

Amazon RDS 是一种用于关系数据库的托管服务。它不提供访问底层基础设施的权限。

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html

RDS 实例没有 SSH、Telnet 或 Ping 访问权限

赛博

【讨论】:

telnet 是一个通用工具,可以打开任何端口的连接。 “带端口的 telnet”表示您正在连接到数据库端口。在 Amazon RDS 实例上未启用 Telnet 端口 (TCP 23) 和 SSH 端口 (TCP 22)。【参考方案4】:

“RDS 实例未配置为接受和响应 ping 的 ICMP 数据包。建立与 RDS 实例的连接的唯一方法是通过标准 SQL 客户端应用程序。”

这意味着,将 ICMP 规则添加到特定的 RDS 安全组中,不会使您的 RDS 实例可通过 ICMP 访问。

【讨论】:

【参考方案5】:

对我有用的解决方案是在安全组部分打开 IP:PORT

【讨论】:

【参考方案6】:

正如其他人所说,Ping 被阻止。允许 Amazon RDS 从您的 EC2 实例进行连接。转到您的 RDS 实例的安全组。编辑“入站”设置。并将“自定义”更改为“任何地方”。之后,您将能够连接到 db。

【讨论】:

【参考方案7】:

您可以在 Linux 中使用 host,这也是 AWS says。

host <db_instance_endpoint>

即使 ping 超时,这对我也有用。

【讨论】:

不是 AWS 所说的。 AWS 说:“要查找 Amazon RDS 数据库实例的 IP 地址,请使用 host 命令”。查找 RDS 数据库实例的 IP 地址与连接到它不同(就像 telnet 到端口一样)

以上是关于无法 ping AWS RDS 终端节点的主要内容,如果未能解决你的问题,请参考以下文章

Amazon RDS 终端节点内部

AWS Glue 开发终端节点无法正常工作

连接节点 v5.10.1 时握手不活动超时错误。到 aws mysql RDS

AWS ECS:VPC 终端节点和 NAT 网关

Amazon RDS 和 VPC 终端节点连接

nat转换之后终端PC无法ping通外部网关?