无法ping通AWS RDS终端节点

27

我想将本地的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

但它仍然不起作用。你认为我做错了什么吗?我有漏掉任何其他东西吗?


1
为什么需要SSH访问?RDS的整个理念是底层架构由系统管理。 - Ja͢ck
2
您只能在RDS安全组中打开3306端口。 - datasage
8个回答

36
所以我尝试对其进行ping操作,但是请求超时。
因为安全组默认阻止所有通信,所以ping操作无法使用。您需要在安全组防火墙中“打洞”以使流量传输到您的实例。
尝试使用SSH TCP 22 72.xxx.xxx.xxx/32仍然无法正常工作。
没错。 RDS不允许您通过SSH登录到服务器。只有MySQL端口(3306)开放。
我想将本地mysql数据库迁移到Amazon RDS。
好的,但要小心。不要向整个Internet(即0.0.0.0)开放3306端口。 MySQL没有设计用于这一目的,并且经常存在漏洞,任何人都可以进入您的数据库。
您可以仅将3306端口开放到您的(家庭)IP地址(或您将从中使用它的服务器)。它应该看起来像“5.5.5.5/32 TCP端口3306”。但要注意,这并不是很安全,因为其他人可能会看到您的数据包。(MySQL支持加密连接,但必须显式设置。)
测试端口是否打开的最佳方法是使用telnet测试端口。您可以使用“telnet my.mysql.ip.address 3306”测试设置。如果没有消息,则端口未打开。如果收到“connected to..”,则MySQL端口正在工作。
使用RDS的最安全方法是从EC2实例使用它。您可以在EC2实例和RDS安全组之间创建信任。您的数据包将不会通过Internet传输,而仅在AWS网络上传输。其他人将无法看到您的数据包,因为EC2中没有允许这样做的内容。

7
文件表明,无论您的安全组规则如何,都无法对RDS实例进行Ping测试。 - Geoffrey Wiseman
2
将ICMP添加到安全组中并不能在某些情况下允许您进行ping操作。我有一个运行在RDS上的SQL Server实例,在添加0.0.0.0/0以允许ICMP IPv4之后,我没有得到ping响应。这是一个令人困惑的问题,可能会浪费时间。使用 telnet 方法对我很有效。 - Danny Bullis
您可以使用ping命令测试RDS,但需要允许ICMP协议通过防火墙。如果使用Windows Powershell,可以使用Test-NetConnection [IP] -Port [Port#]命令进行测试。同时,还需检查发出ping命令的计算机的防火墙规则。 - iliketolearn

13

1
Telnet是一种通用工具,可打开到任何端口的连接。 "带端口的telnet"表示您正在连接到数据库端口。 Amazon RDS实例上未启用Telnet端口(TCP 23)和SSH端口(TCP 22)。 - Sébastien Stormacq

13

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

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


2

正如其他人所说,Ping被阻止了。为了允许Amazon RDS从您的EC2实例连接,请前往RDS实例的安全组。编辑"Inbound"设置。并将"Custom"更改为"Anywhere"。之后,您将能够连接到数据库。


谢谢,将其更改为默认安全组对我有用。 - ugola

1
我遇到的解决方案是在安全组部分打开IP:PORT。

enter image description here



-1
你可以使用Linux中的host,这也是AWS所说的
host <db_instance_endpoint>

即使ping超时,这对我仍然有效。


2
这不是AWS说的。AWS说:“要找到Amazon RDS数据库实例的IP地址,请使用主机命令。”找到RDS数据库实例的IP地址并不等同于连接它(如telnet到端口)。 - mikemaccana

-3
AWS安全组默认阻止ICMP(包括ping)。您需要打开ICMP,盲目尝试打开TCP/22是无效的。

1
文档表明,即使您配置了安全组,RDS服务器也不会响应ping。 - Geoffrey Wiseman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接