无法ping AWS EC2实例


229

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

如何使实例可ping通?


我不对ec2-instance进行ping操作,因为我不想仅仅为了ping而是在telnet开放端口上远程登录而在我的安全组中启用ICMP。
Aderemi Dayo

Answers:


280

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

  • 类型:自定义ICMP规则
  • 协议:回声请求
  • 端口:N / A
  • 来源:您的选择(我将选择“ 任何地方都可以从任何计算机ping通”)

3
谢谢,我喜欢这样。我只想允许ping,而不是全部。
黎楚祥

我也需要ICMPv6吗?
富兰克林于

也可以尝试。但是ICMP对我来说就足够了
Rakib

1
我在任何地方都可以,但它会自动将其转换为自定义@SyedRakibAlHasan
alper

25
很容易将“ Echo Reply”误认为“ Echo Request”,我对此感到困惑。
安迪

100

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

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

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

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

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

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

  • 转到“ 开始”,然后键入具有高级安全性的Windows防火墙。
  • 选择入站规则

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

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


1
你救了我的一天!非常感谢
Yugandhar Pathi

3
迄今为止最好的答案。很彻底
布莱恩·韦伯斯特

2
Windows防火墙是罪魁祸首,到目前为止,其他答案都没有提及。
crokusek

我现在可以ping通,但是您知道我如何允许我的节点应用程序侦听端口吗?
FluffyBeing

@zeion-我已经有一段时间没有使用AWS了(我在2017年初进行了试用),所以我将无济于事。我唯一能想到的(我确信您已经尝试过)将是使用上述各项,但要使用您的应用所需的端口。对于Windows防火墙部分,我认为您可以创建一个新规则,因为预建规则可能不会列出。
Sunsetquest

84

您必须编辑EC2实例所属的安全组并允许访问(或创建一个新的安全组并将其添加到其中)。

默认情况下,所有内容均被拒绝。您需要添加到安全组的例外取决于您需要使Internet可用的服务。

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

要允许对实例执行ping操作,您需要启用ICMP通信。

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


7
All ICMP使用指定的安全组启用到计算机的通信对我来说是一种享受。
乔纳森·威廉姆斯

除了创建和编辑安全组外,还需要将其与实例关联。只有这样,它才会生效。
MikeW

通过安全组,您可以控制到实例的流量,包括可以到达实例的流量的种类。```1.检查安全组(已启用PORTS处于打开状态)2.检查正确的VPC 3.附加了正确的子网4. AWS EC2位于公共子网中5.启用Internet网关```在以下位置打开端口AWS EC2检查此链接官方AWS [link] [1]答案由Tapan Nayan Banker发表| 塔潘银行家www.tapanbanker.com
塔潘银行家

40

安全组中的自定义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

而已。


1
没有与此相关的安全性问题吗?
维克多·阿努文瓦

可能您应该指定IP
Laura Liparulo

@avonnadozie,是的,我们不应该打开所有ICMP端口。
Kartik Narayana Maringanti

1
“所有ICMP端口”?那是什么意思?ICMP既不是TCP也不是UDP,并且没有端口。
David Ongaro

32
  1. 转到EC2仪表板,然后单击“安全组”上的“正在运行的实例”,选择需要添加安全性的实例组。
  2. 单击“入站”选项卡
  3. 点击“编辑”按钮(它将打开一个弹出窗口)
  4. 点击“添加规则”
  5. 选择“自定义ICMP规则-IPv4”作为类型
  6. 选择“回显请求”和“回显响应”作为协议(默认情况下,端口范围显示为“ N / A”)
  7. 输入“ 0.0.0.0/0”作为源
  8. 点击“保存”

12

请通过以下清单

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

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

AWS VPC中的公共和私有子网

2)检查是否添加了正确的安全组规则,如果没有添加以下规则,请在附加到实例的安全组中添加以下规则。每个启动的实例都将防火墙附加到安全组中。实例的/ out。默认情况下,每个安全组都允许来自实例的所有出站流量,而没有到实例的入站流量。请查看下面的链接以获取流量的更多详细信息。

安全组文档

类型:自定义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。


如何写答案。添加更多详细信息以证明您的答案合理。和使用格式化工具
Morse

感谢prateek的反馈。我说得更清楚了。
哈内夫·穆罕默德

请以图像而不是超链接的形式添加图像。编辑并将屏幕截图转换为图像
Morse '18

为什么这已经被否决了?似乎一切正常,也很
合理

Witold,感谢您的关注。似乎存在一些格式化问题,这使我不满意。我现在已经纠正了那些问题。
哈内夫·穆罕默德


4

刚接触aws ec2并想要从SSH, Broswer, Ping from system下面访问实例的用户是这些的入站规则:

在此处输入图片说明



3
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.点击“保存”


1

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

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


1

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

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

例如,在Scala(使用AWS Java SDK v2)中,以下工作可IpPermissionauthorizeSecurityGroupIngress端点定义。

  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下可能需要什么出口规则)


我实际上是在我的安全组中使用terraform将其设置为出站(出口)规则的,它就像一个魅力一样工作
str8up7od

1

通过安全组,您可以控制到实例的流量,包括可以到达实例的流量的种类。

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 链接



0

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


14
Echo回复对我不起作用,但Echo请求有效
storm_m2138'1

0

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


0

针对安全组的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"]
  }
}

0

我试图从Linux服务器连接到EC2时遇到了同样的问题,您有两个要确保从EC2中添加了“ ALL ICMP”的功能,而仅此一项是行不通的,因此您必须将Ansible更新为最新版本2.4,它不适用于我以前的2.2版本。


0

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

在此处输入图片说明

  1. 用于ping的所有ICMP。

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

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

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


0

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


-1

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

在此处输入图片说明


6
您的第二个规则“来自任何地方”的“所有流量”不是一个好主意。
Devin

-3

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


-3
  1. 确保您使用aws ec2实例的公用IP进行ping操作。

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

  3. 如果无法解决问题,请尝试ping通,然后在安全组中为ICMP添加出站规则。


-4

我想提到一些由ISP引起的罕见问题。有时,BSNL对我而言是偶然的。这是困扰您数小时的烦恼问题之一。在这种情况下,可能会引起ISP的问题或更改ISP。

  1. 可以从浏览器(所有打开的端口)访问Amazon实例
  2. 无法从控制台ping通
  3. ssh / telnet也不起作用。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.