如何访问/ping 位于 AWS 上的服务器?

Posted

技术标签:

【中文标题】如何访问/ping 位于 AWS 上的服务器?【英文标题】:How to access/ping a server located on AWS? 【发布时间】:2010-11-30 16:58:15 【问题描述】:

应该使用什么地址访问位于 AWS 上的服务器?

我创建了一个 AWS 实例并在其上安装了一个 Web 服务器。但是无法通过以下任何方式访问服务器:

    ec2-174-129-24-92.compute-1.amazonaws.com 来自实例ifconfig的IP地址 我在 AWS 控制面板上创建并与实例关联的弹性 IP 地址

令人惊讶的是,带有root@ec2-174-129-24-92.compute-1.amazonaws.com 的 ssh 可以正常工作。

可能是什么问题以及如何将地址绑定到实例?

【问题讨论】:

【参考方案1】:

Ping 不适用于 EC2,因为 ping 通过 ICMP 协议运行,该协议在典型的 EC2 安全组配置中被阻止。

使用tcping(通过 TCP 端口工作的 ping 替代方案)有一​​个非常好的解决方法:

tcping ec2-174-129-24-92.compute-1.amazonaws.com

tcping ec2-174-129-24-92.compute-1.amazonaws.com 22

它在端口 80(第一个示例)上运行,但您也可以指定一个不同的端口(第二个示例)用于测试连接性。

【讨论】:

tcping 不提供主机将无法工作(在 mac 上使用自制版本的 tcping 测试)。它产生以下错误:error: Usage: tcping [-q] [-t timeout_sec] [-u timeout_usec] <host> <port>【参考方案2】:

在您的安全组中,在 ICMP 上打开 -1 到 -1 范围为 0.0.0.0/0,您将能够 ping。

查看我的截图以获得更好的视图:

@emostar 在下方发布的图片

【讨论】:

图像不再可用。 除此之外,如果您在公司网络后面,请与网络管理员部门核实他们是否没有阻止对除 80 (http) 和 22 (ssh) 以外的所有端口的访问。我们花了很多时间弄清楚为什么我们无法连接到在 2181 端口上运行的应用程序,后来发现我们的网络丢弃了不发往 80,22 端口的数据包。 注意:当我这样做时,传播需要一段时间(至少 20 分钟)。在打开 ICMP 访问之后,我重新启动了大约 3 次,中间等待。我出去购物,当我回来时 - 瞧!它正在工作。不知道这是正常现象还是我曾经遇到过的怪癖。【参考方案3】:

正如 nowthatsamat 所说,您希望允许来自所有地址的 ICMP。

要在命令行上执行此操作,您可以运行:

ec2-authorize <group> -P icmp -t -1:-1 -s 0.0.0.0/0

或者,如果您更喜欢 AWS 控制台,这就是它的样子(截至 2012 年 9 月 19 日):

AWS Console Image

【讨论】:

【参考方案4】:

如果您的实例使用 Windows AMI,您需要确保 AWS 控制台上的安全组和 Windows 防火墙都设置为接受所需端口上的连接。

在我将 Windows 防火墙配置为允许在我想要的端口上进行连接之前,我在启用 http 访问时遇到了同样的问题。这可以通过访问控制面板>系统和安全>Windows防火墙>高级设置在Windows中轻松完成。然后配置新的端口规则以允许传入 TCP 流量到您需要的端口或端口范围。

【讨论】:

【参考方案5】:

2014 年更新 - 当前的 Amazon UI 不再使用 ICMP 类型的数字,因此现有答案不再适用。

在您的安全组中:

点击入站标签 创建自定义 ICMP 规则 选择回显请求 为所有人使用 范围 0.0.0.0/0 或将其锁定到特定 IP 应用更改

你就可以ping通了。

【讨论】:

PSA 警告:选择 echo request 而不是 echo reply。否则你可能会因为疯狂而失去几个小时 Ack @BKSpureon 'ping' 是 'ICMP Echo Request'。 echo 回复是 ping 响应。您希望允许传入请求(和出站回复)。【参考方案6】:

2014 年 9 月更新: 在一段时间无法 apt-get 而不冻结之后,我尝试 ping www.google.com。令我惊讶的是,我也无法ping通。我按照上面的建议创建了一个带有入站 Echo 请求的新 ICMP 规则。这对我也不起作用。经过多次尝试,我为 Outbound with Echo Request 创建了一个新规则。现在它起作用了。也许 AWS 最近添加了这个?无论如何,希望这可以帮助那里的人。不能做像 ping 这样简单的事情会让人抓狂。

编辑:现在我的 apt-get 也可以了!

【讨论】:

【参考方案7】:

在 AWS 安全组(入站)中给出 2 条规则,

Custom ICMP Rule       Echo Request          N/A            0.0.0.0/0

Custom ICMP Rule       Echo Reply            N/A             0.0.0.0/0

【讨论】:

【参考方案8】:

晚了八年,但希望这对其他人有所帮助...

下面显示了如何启用 ping 所需的端口。

1) 首先确保 EC2 实例具有公共 IP。它有一个 Public DNSPublic IP 地址,那么你应该没问题。这也应该是您 ping 的地址。

2) 转到 EC2 正在使用的安全组

右键,选择入站规则 A:选择添加规则 B:选择自定义 ICMP 规则 - IPv4 C:选择回显请求 D:选择 AnywhereMy IP (注意:My IPanyone 更安全strong> 但只允许来自您的 IP 的 ping。) E:选择保存

3) 创建 Windows 防火墙例外。

转到开始并键入高级安全Windows防火墙 选择入站规则

【讨论】:

太棒了。你们中的一些人可能还希望允许“边缘遍历”,您可以通过上图所示的属性子菜单来实现。【参考方案9】:

我在从本地 mac 机器连接时遇到了类似的问题

解决方法如下:

    * 路由表 => 添加 0.0.0.0/0 并定位到您的 Internet 网关 *

    在 Network ACL 下添加广告

    2.1 用于来自本地计算机的 ping ->

    所有 ICMP - IPv4 ICMP (1) ALL 0.0.0.0/0 允许

    2.2 ssh/其他连接

    SSH (22) TCP (6) 22 0.0.0.0/0
    
    ALL Traffic ALL ALL 0.0.0.0/0
    

    将子网与路由表关联的良好做法

    在 Ec2 下 -> 安全组

    4.1 要允许 SSH 连接,只需添加如下

    SSH (22) TCP (6) 22 0.0.0.0/0
    

    4.2 用于 ping 从您的本地计算机工作,如下所示

    All ICMP - IPv4 All N/A 0.0.0.0/0
    

这将使您的连接适用于使用您的 KEY 文件 (xx.pem) 从本地计算机进行 ping 和 ssh

谢谢,

【讨论】:

【参考方案10】:

我发现如果你在你的 AWS 服务器上安装一个 *** 服务器,你可以连接到 *** 并 ping 虚拟私有网络中的私有 IP 地址。

【讨论】:

以上是关于如何访问/ping 位于 AWS 上的服务器?的主要内容,如果未能解决你的问题,请参考以下文章

AWS上的实例无法ping通的解决方案

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

AWS Lambda 上的 Nestjs(无服务器框架)|如何访问事件参数?

如何将 AWS S3 存储桶与远程非 AWS 服务器上的文件同步?

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

AWS - 我们如何向特定服务器发送请求