无法 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 终端节点的主要内容,如果未能解决你的问题,请参考以下文章