无法 ping 通 AWS EC2 实例

我有一个在 AWS 中运行的 EC2 实例。当我试图从我的 local box ping它, 但是 ping 不通。

我如何能使实例支持 ping ?

350820 次浏览

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

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

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

要允许ping实例,您需要启用ICMP通信。

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

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

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

访问ec2实例中的新端口。你要在两个地方相加。 1. 安全组入端口。 2.

.设置入站规则

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

  • 类型:自定义ICMP规则
  • 协议:回声请求
  • 端口:N/A
  • 来源:你的选择(我会选择在任何地方,以便能够从任何机器ping)
至少对我来说,安全组中的自定义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

´s。

用所有ICMP创建一个新的安全组对我很有用。

如果你将规则设置为“自定义ICMP”规则和“回声回复”,它将像冠军一样工作。echo request是错误的响应ping的规则。

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

enter image description here

我有一个更深层次的问题——我已经创建了VPC、子网和适当的安全组,但忽略了添加Internet网关并将其与子网关联。因为这是我的第一个谷歌结果“不能ping ec2”,我把这个信息贴在这里,以防它被证明对别人有用(或将来我自己)。

虽然晚了几年,但希望这能帮助到其他人……

1 -首先确保EC2实例有一个公共IP。

如果有一个公共DNS公共IP地址(下面圈出),那么你应该是好的。这将是你ping的地址。 AWS公网DNS地址 < / p >

2 -亚马逊网络规则

接下来确保Amazon网络规则允许回声请求。去EC2的安全组

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

Add a Security Group ICMP Rule to allow Pings and Echos .

3 -访问控制列表(如适用)

注意:感谢桑托什年代提供这个。

您的VPC连接到一个网络,这个网络可能也有一些acl阻止它。

  • A:去你的vpc——>默认的——比;网络acl——比;细节(选项卡)——比;并选择主网ACL。(它应该带你到网络acl与网络id过滤器应用) 李enter image description here < / >
  • B:然后选择网络ACL号(截图未显示)
  • C:在入站规则选项卡下,如果当前规则已经不允许ICMP,那么选择编辑入站规则—>添加一条新规则 李enter image description here < / >
  • D:选择所有icmp - IPv4
  • E:选择在任何地方或键入另一个网络CIDR
  • F:选择允许(0.0.0.0/0是全部)
  • G:选择保存更改
  • H:对出站规则选项卡做同样的操作(如果需要)

4 - Windows防火墙例外:

接下来,Windows防火墙会默认阻止入站Echo请求。通过创建windows防火墙异常允许Echo请求…

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

Add a Windows Server ICMP Rule to allow Pings and Echos

  1. 完成了!希望您现在能够ping通服务器。

起程拓殖安全组的特定指令,因为-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"]
}
}
  1. 确保使用aws ec2实例的公共IP进行ping。

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

  3. 尝试ping,如果这个问题没有解决,然后在安全组中添加ICMP的出站规则。

我想提到一些ISP引起的罕见问题。我偶尔也会用BSNL。这是一个奇怪的问题,它占用了你日常生活中的几个小时。在这种情况下,人们可能会提出与ISP或更换ISP的问题。

  1. Amazon实例可以从浏览器访问(所有开放端口)
  2. 控制台无法ping通
  3. SSH / Telnet也不能正常使用。

那些刚接触aws ec2并希望从SSH, Broswer, Ping from system访问实例的人,那么下面是这些的入站规则:-

enter image description here

我也有同样的问题,从linux服务器连接到EC2,你有两个确保的事情,“所有ICMP”是从EC2添加如上所示,这是不会工作的,你必须更新Ansible到最新版本2.4,它不与我以前的版本2.2工作。

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

enter image description here

  1. 所有ICMP用于ping。

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

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

根据你的要求,你可以改变

请仔细检查下面的核对表

1)您必须首先检查实例是否启动在一个子网中,该子网可以从internet访问

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

aws vpc中的公网和私有子网 . > . >在aws vpc中的公网和私有子网

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

安全组文档 .

类型:自定义ICMPV4

协议:ICMP

Portrange: Echo Request

来源:0.0.0.0/0

截图from aws控制台

3)检查子网级防火墙(称为NACL)中是否有足够的规则。NACL是一种无状态防火墙,需要分别指定入站和出站流量。NACL应用于子网级别,子网下的所有实例都将遵循NACL规则。下面是有更多细节的链接。

NACL文档 .

入站规则出站规则

Type:自定义IPV4 Type:自定义IPV4

Protocol: ICMP协议:ICMP

Portrange: ECHO REQUEST Portrange: ECHO REPLY

源:0.0.0.0/0目的:0.0.0.0/0

Allow/Deny:允许Allow/Deny:允许

截图入站规则

截图outbound rule

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

  1. 进入EC2仪表板,单击“运行实例” 在“Security Groups”中,选择需要添加安全的实例的组
  2. 点击“入站”选项卡
  3. 点击“编辑”按钮(将打开一个弹出窗口)
  4. 点击“添加规则”
  5. “类型”选择“自定义ICMP规则- IPv4”
  6. 协议选择“Echo Request”和“Echo Response”(端口范围默认为N/A)
  7. 输入“0.0.0.0/0”作为源
  8. 点击“保存”

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

它会起作用的。

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

如果您在安全组和VPC中打开,可能是您的内部网络正在阻止该IP到ping或在您的防火墙中阻止ping包。

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

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

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

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

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

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

例如,在Scala(使用AWS Java SDK v2)中,以下工作用于为authorizeSecurityGroupIngress端点定义IpPermission

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

检查你的安全组

2-check Internet网关

3-检查路由表

我尝试了以上步骤中的多种解决方案,但对我有效的是

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

再试一次。我家的网络设置不允许我连接到RDP。我在哪里可以SSH到linux服务器

有两件事需要考虑。

  1. 检查安全组规则。 包含一个入站规则,如下所示

类型:自定义ICMPV4, 协议:ICMP, Portrange: Echo Request, 来源:0.0.0.0/0 < / p >

  1. 检查EC2实例的防火墙状态。 在/etc/ufw/before.rules中添加

    A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT