305

我有一个在 AWS 中运行的 EC2 实例。当我尝试从本地盒子 ping 时,它不可用。

如何使实例可 ping?

4

26 回答 26

342

添加新的 EC2 安全组入站规则

  • 类型:自定义 ICMP 规则
  • 协议:回声请求
  • 端口:不适用
  • 来源:您的选择(我会选择Anywhere以便能够从任何机器 ping 通)
于 2015-05-30T09:39:43.703 回答
159

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

1)首先确保EC2实例有公网IP。如果有公共 DNS公共 IP地址(在下面圈出),那么你应该很好。这将是您 ping 的地址。 AWS 公共 DNS 地址

2)接下来确保亚马逊网络规则允许Echo Requests。转到 EC2 的安全组

  • 右键,选择入站规则
  • A:选择添加规则
  • B:选择自定义 ICMP 规则 - IPv4
  • C:选择回显请求
  • D:选择任何地方我的 IP
  • E:选择保存

添加安全组 ICMP 规则以允许 Ping 和 Echo

3) 接下来,Windows 防火墙默认阻止入站 Echo 请求。通过创建 Windows 防火墙例外来允许 Echo 请求...

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

添加 Windows Server ICMP 规则以允许 Ping 和 Echo

4) 完成!希望您现在应该能够 ping 您的服务器。

于 2017-03-14T03:56:39.140 回答
96

您必须编辑安全组您的 EC2 实例所属

默认情况下,一切都被拒绝。您需要添加到安全组的例外情况取决于您需要提供给 Internet 的服务。

如果它是一个网络服务器,您将需要允许访问端口80这意味着任何 IP 地址)。0.0.0.0/0

要允许 ping 实例,您需要启用 ICMP 流量。

AWS Web 控制台在相关下拉列表中提供了一些最常用的选项。

于 2014-02-24T12:00:21.343 回答
47

安全组中的自定义 ICMP 规则不是它所需要的,至少对我来说是这样。但以下规则将起作用:

Type: All ICMP 
Protocol: TCP
Port range: 0 - 65535
Source: Anywhere - 0.0.0.0/0

完成此操作后,您将能够 ping 其他实例。您应该会看到如下内容:

PING 10.0.0.15 (10.0.0.15): 56 data bytes
64 bytes from 10.0.0.14: icmp_seq=1 ttl=64 time=3.9 ms
64 bytes from 10.0.0.14: icmp_seq=2 ttl=64 time=3.9 ms
64 bytes from 10.0.0.14: icmp_seq=3 ttl=64 time=10.6 ms
64 bytes from 10.0.0.14: icmp_seq=4 ttl=64 time=40.6 ms
64 bytes from 10.0.0.14: icmp_seq=5 ttl=64 time=3.8 ms
64 bytes from 10.0.0.14: icmp_seq=6 ttl=64 time=5.3 ms
64 bytes from 10.0.0.14: icmp_seq=7 ttl=64 time=6.5 ms
64 bytes from 10.0.0.14: icmp_seq=8 ttl=64 time=3.5 ms
64 bytes from 10.0.0.14: icmp_seq=9 ttl=64 time=21.0 ms
64 bytes from 10.0.0.14: icmp_seq=10 ttl=64 time=3.5 ms
64 bytes from 10.0.0.14: icmp_seq=11 ttl=64 time=3.5 ms
64 bytes from 10.0.0.14: icmp_seq=12 ttl=64 time=59.7 ms
64 bytes from 10.0.0.14: icmp_seq=13 ttl=64 time=3.5 ms
64 bytes from 10.0.0.14: icmp_seq=14 ttl=64 time=3.5 ms
64 bytes from 10.0.0.14: icmp_seq=15 ttl=64 time=4.8 ms
64 bytes from 10.0.0.14: icmp_seq=16 ttl=64 time=3.1 ms
64 bytes from 10.0.0.14: icmp_seq=17 ttl=64 time=3.1 ms
64 bytes from 10.0.0.14: icmp_seq=18 ttl=64 time=3.0 ms
64 bytes from 10.0.0.14: icmp_seq=19 ttl=64 time=3.1 ms

--- 10.0.0.14 ping statistics ---
20 packets transmitted, 19 packets received, 5% packet loss
round-trip min/avg/max = 3.0/9.9/59.7 ms

而已。

于 2015-06-24T08:50:11.163 回答
39
  1. 转到 EC2 Dashboard 并单击“Security Groups”上的“Running Instances”,选择您需要添加安全性的实例组。
  2. 点击“入站”选项卡
  3. 单击“编辑”按钮(它将打开一个弹出窗口)
  4. 点击“添加规则”
  5. 选择“自定义 ICMP 规则 - IPv4”作为类型
  6. 选择“Echo Request”和“Echo Response”作为协议(端口范围默认显示为“N/A”)
  7. 输入“0.0.0.0/0”作为源
  8. 点击“保存”
于 2018-10-16T05:57:28.077 回答
15

请仔细阅读以下清单

1)您必须首先检查实例是否在可从互联网访问的子网中启动

为此,请检查实例启动的子网是否连接了 Internet 网关。有关 AWS 网络的详细信息,请访问以下链接。

aws vpc 中的公有和私有子网

2)检查您是否添加了适当的安全组规则,如果没有在附加到实例的安全组中添加以下规则。安全组是附加到每个启动的实例的防火墙。安全组包含允许流量进入的入站/出站规则/out of the instance。默认情况下,每个安全组都允许来自该实例的所有出站流量,并且不允许该实例的入站流量。查看以下链接以获取有关流量的更多详细信息。

安全组文档

类型:自定义ICMPV4

协议:ICMP

Portrange : 回声请求

来源:0.0.0.0/0

来自 aws 控制台的屏幕截图

3)检查子网级防火墙NACL是否有足够的规则。NACL是无状态防火墙,需要分别指定入站和出站流量。NACL应用于子网级,子网下的所有实例都将归入NACL 规则。下面是链接,其中将包含更多详细信息。

NACL 文件

入站规则出站规则

类型:自定义 IPV4 类型:自定义 IPV4

协议:ICMP 协议:ICMP

Portrange: ECHO REQUEST Portrange: ECHO REPLY

来源:0.0.0.0/0 目的地:0.0.0.0/0

允许/拒绝:允许允许/拒绝:允许

截图入站规则

截图出站规则

4) 检查任何防火墙,如 IPTABLES 并禁用以测试 ping。

于 2018-03-29T14:32:53.860 回答
10
1.Go to EC2 Dashboard and click "Running Instances" on "Security Groups"
2.select the group of your instance which you need to add security.  
3.click on the "Inbound" tab
4.Click "Edit" Button (It will open an popup window)
5.click "Add Rule"
6.Select the "Custom ICMP rule - IPv4" as Type
7.Enter the "0.0.0.0/0" as Source or your public IP

7.点击“保存”

于 2019-07-10T16:32:43.533 回答
7

使用 All ICMP 创建一个新的安全组对我有用。

于 2015-07-28T06:46:26.793 回答
6

那些对 aws ec2 不熟悉并希望从SSH, Broswer, Ping from system下面访问实例的人是这些的入站规则:-

在此处输入图像描述

于 2017-08-20T08:29:03.647 回答
5

如果您想通过 SDK 以编程方式(从任何地方)启用 ping,那么神奇的公式是:

cidrIp:     "0.0.0.0/0"
ipProtocol: "icmp"
toPort:     -1
fromPort:   8

例如,在 Scala(使用 AWS Java 开发工具包 v2)中,以下内容IpPermission用于为authorizeSecurityGroupIngress终端节点定义一个。

  val PingPermission = {
    val range = IpRange.builder().cidrIp( "0.0.0.0/0" ).build()
    IpPermission.builder().ipProtocol( "icmp" ).ipRanges( range ).toPort( -1 ).fromPort( 8 ).build()
  }

(我试过这仅在 EC2-Classic 上。我不知道在 VPC 下可能需要哪些出口规则)

于 2019-12-30T10:25:44.980 回答
5

转到 EC2 实例的安全组并编辑入站规则 allow 0.0.0.0/0 for ICMP。

它会起作用的。

于 2019-06-21T11:11:44.297 回答
3

我有一个更深层次的问题——我创建了一个 VPC、子网和适当的安全组,但忽略了添加一个 Internet 网关并将其与我的子网关联。由于这是我的第一个“无法 ping ec2”的 Google 搜索结果,因此我将在此处发布此信息,以防它对其他人(或将来对我自己)有用。

于 2017-03-09T21:15:11.307 回答
3

安全组使您能够控制到您的实例的流量,包括可以到达您的实例的流量类型。

1. Check the Security Groups (Enabled the PORTS to be OPEN)
2. Check the correct VPC 
3. Attached the correct Subnet 
4. AWS EC2 to be in Public Subnet 
5. Enable Internet Gateway 

在 AWS EC2 中打开端口检查此链接官方 AWS链接

于 2019-11-11T05:03:42.717 回答
2

默认情况下,EC2 由 AWS 安全组(EC2 和 VPC 中的一项服务)保护。默认情况下,安全组不允许任何包含 ping 的 ICMP 请求。允许它:

转到: AWS EC2 实例 定位:安全组绑定到该实例(可能有多个安全组) 检查:协议的入站规则(ICMP)端口(0 - 65535)如果不存在,您可以添加它并允许它打开您指定的源 IP 或另一个安全组。

于 2019-12-17T10:25:29.183 回答
2

您必须在安全组中打开以下安全端口。每个规则用于不同的目的,如下所示。

在此处输入图像描述

  1. 用于 ping 的所有 ICMP。

  2. HTTP 用于在 HTTP 端口上访问 URL。

  3. HTTPS 用于访问安全 HTTP 端口上的 URL。

根据您的要求,您可以更改SOURCE

于 2017-11-01T12:51:04.290 回答
1

是的,您需要开放对端口的访问。查看安全组http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

您的 EC2 实例需要附加到允许您所需访问权限的安全组。

于 2014-02-24T12:02:44.493 回答
1

我在尝试从 linux 服务器连接到 EC2 时遇到了同样的问题,你有两个确保从 EC2 添加“ALL ICMP”的事情,如上所示,仅此一项不起作用,你必须将 Ansible 更新到最新版本2.4,它不适用于我之前的 2.2 版本。

于 2017-10-07T09:59:43.613 回答
1

如果您已在安全组中打开并且 VPC 正确,则可能是您的内部网络阻止了该 IP 来 ping 或阻止防火墙中的 ping 数据包。

于 2019-08-09T12:25:54.037 回答
1

如果您将规则设置为“自定义 ICMP”规则并在任何地方使用“回显回复”,它将像冠军一样工作。“回声请求”是回答 ping 的错误规则。

于 2015-12-07T19:52:05.180 回答
1

我从上述步骤尝试了多种解决方案,但对我有用的是

将互联网连接更改为我的移动热点

并再次尝试。我家的互联网设置中的某些东西不允许我连接到 RDP。我可以通过 SSH 连接到 linux 服务器

于 2021-04-15T13:32:23.253 回答
1

ping 两个系统时,默认情况下启用 SSH(如果您已通过 putty 或终端连接。)为了允许 ping,我为每个实例(入站)添加了安全组。

在此处输入图像描述

于 2016-11-02T10:34:22.190 回答
1

terraform针对安全组的特定说明,因为 -1 对我来说并不明显。

resource "aws_security_group" "Ping" {
  vpc_id = "${aws_vpc.MyVPC.id}"
  ingress {
    from_port   = -1
    to_port     = -1
    protocol    = "icmp"
    cidr_blocks = ["0.0.0.0/0"]
    ipv6_cidr_blocks = ["::/0"]
  }
}
于 2017-06-08T13:57:05.430 回答
0

1-检查您的安全组

2-检查互联网网关

3-检查路由表

于 2020-08-29T23:51:33.803 回答
0
  1. 确保您使用 aws ec2 实例的公共 IP 进行 ping。

  2. 编辑附加到您的 EC2 实例的安全组并为 ICMP 协议添加入站规则。

  3. 尝试 ping,如果不能解决,则在安全组中添加 ICMP 的出站规则。

于 2017-06-30T11:11:43.860 回答
-3

访问 ec2 实例中的新端口时。您已添加 2 个位置。1. 安全组入端口。2.防火墙设置入站规则。

于 2014-02-24T18:22:59.533 回答
-3

我想提一些罕见的 ISP 引起的问题。BSNL 偶尔会发生在我身上。它是那些花费您日常生活数小时的奇怪问题之一。在这种情况下,可能会向 ISP 提出问题或更改 ISP。

  1. 亚马逊实例可以从浏览器访问(所有开放端口)
  2. 同样无法从控制台ping通
  3. ssh / telnet 也不起作用。
于 2017-08-02T06:07:56.567 回答