能够通过 *** 从本地 ping EC2。但是,无法 ping DMS 复制实例

Posted

技术标签:

【中文标题】能够通过 *** 从本地 ping EC2。但是,无法 ping DMS 复制实例【英文标题】:Able to ping EC2 from on-premises through ***. But, unable to ping DMS replication instance 【发布时间】:2019-11-11 17:47:35 【问题描述】:

我已经设置了一个 ***,并且能够从本地 ping EC2 实例的私有 IP,反之亦然。但是,我无法 ping DMS 复制实例的私有 IP。

我在 EC2 中创建了一个端点指向数据库。端点测试连接成功。但是,本地数据库的端点测试连接失败。

EC2 和 DMS 复制实例使用相同的子网、安全组等,详细信息如下图所示。

我想知道

1) 为什么 DMS 实例不与本地通信(反之亦然)

2) 为什么 EC2 在 *** 中运行良好但在 DMS 实例中运行良好?

编辑:

与 DMS 实例关联的安全组的详细信息:

vpc - EC2 使用的相同默认 vpc 入站规则 - 所有流量、所有协议、所有端口范围、源 = 192.168.0.0/24 出站规则 - 所有流量、所有协议、所有端口范围、源 = 0.0.0.0/0

路由表:

目的地 - 10.0.0.0/16,目标 = 本地 目标 - 0.0.0.0/0,目标 = 互联网网关 目标 - 192.168.0.0/24,目标 = *** 中使用的虚拟专用网关

这是我在尝试测试 DMS DB 端点连接时收到的错误消息:

测试端点失败:应用程序状态:1020912,应用程序消息:连接失败发生网络错误,应用程序详细消息:RetCode:SQL_ERROR SqlState:HYT00 NativeError:0 消息:[unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired ODBC 一般错误。

【问题讨论】:

您想要达到的实际目标是什么? Ping 可以被安全组阻止。而不是使用ping 来测试连接性,您应该测试您希望实现的实际连接性。大概您希望允许 DMS 实例与您的本地数据库连接,这是正确的吗?如果是这样,请编辑您的问题以显示与 DMS 实例关联的安全组。 我已按照您的建议编辑了问题 当您从本地连接到 DMS 实例时,您用于连接的计算机的 IP 地址是什么?我怀疑它 not192.168.0.0/24 范围内,因此不允许通过安全组。 IP 实际上在那个范围内。 192.168.0.104。我可以从 EC2 ping 这个 IP,反之亦然。 VPC 的 CIDR 是多少?如果 EC2 实例可以访问它,那么 EC2 实例也必须在 192.168.0.0/24 CIDR 范围内。因此,如果您说 192.168.0.104 在本地,这可能与本地范围重叠。 【参考方案1】:

您可能需要描述/提供您的完整网络拓扑以获得更准确的答案,但根据 AWS 关于“Network Security for AWS Database Migration Service”的文档,我的最佳猜测是您缺少源和目标数据库配置:

数据库端点必须包含允许来自复制实例的传入访问的网络 ACL 和安全组规则。您可以使用复制实例的安全组、私有 IP 地址、公共 IP 地址或 NAT 网关的公共地址来实现此目的,具体取决于您的配置。

另外,您提到的这个 EC2 是 NAT 实例吗?以防万一:

如果您的网络使用 *** 隧道,则充当 NAT 网关的 Amazon EC2 实例必须使用具有允许复制实例通过它发送流量的规则的安全组。

【讨论】:

以上是关于能够通过 *** 从本地 ping EC2。但是,无法 ping DMS 复制实例的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 Windows实例无法通过公共IP访问

通过 EC2 连接到 AWS MySQL?

无法在端口80/443设置后ping AWS ec2服务器或启动网页

为什么我的VPC中的实例仍然可以ping不同子网中的实例?

如何从 EC2 连接到本地 ***?

LINUX主机通过域名访问网络失败