Answers:
迟了几年,但希望这会对其他人有所帮助...
1)首先确保EC2实例具有公共IP。如果具有公共DNS或公共IP地址(在下面圈出),那么您应该很好。这就是您要查询的地址。
2)接下来,确保Amazon网络规则允许Echo Requests。转到EC2 的安全组。
3)接下来,Windows防火墙默认会阻止入站Echo请求。通过创建Windows防火墙例外来允许Echo请求...
4)完成!希望您现在应该能够ping您的服务器。
您必须编辑EC2实例所属的安全组并允许访问(或创建一个新的安全组并将其添加到其中)。
默认情况下,所有内容均被拒绝。您需要添加到安全组的例外取决于您需要使Internet可用的服务。
如果它是一个Web服务器,您需要允许访问端口80
的0.0.0.0/0
(这意味着任何IP地址)。
要允许对实例执行ping操作,您需要启用ICMP通信。
AWS Web Console在相关下拉列表中提供了一些最常用的选项。
All ICMP
使用指定的安全组启用到计算机的通信对我来说是一种享受。
安全组中的自定义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)您必须首先检查实例是否在从Internet可以访问的子网中启动
为此,请检查实例启动的子网是否连接了Internet网关。有关AWS中联网的详细信息,请访问以下链接。
2)检查是否添加了正确的安全组规则,如果没有添加以下规则,请在附加到实例的安全组中添加以下规则。每个启动的实例都将防火墙附加到安全组中。实例的/ out。默认情况下,每个安全组都允许来自实例的所有出站流量,而没有到实例的入站流量。请查看下面的链接以获取流量的更多详细信息。
类型:自定义ICMPV4
协议:ICMP
Portrange:回显请求
来源:0.0.0.0/0
3)检查子网级别防火墙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。
转到EC2实例的安全组,然后编辑允许ICMP使用0.0.0.0/0的入站规则。
它会工作。
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.点击“保存”
默认情况下,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)中,以下工作可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下可能需要什么出口规则)
是的,您需要打开对该端口的访问权限。查看安全组http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html
您的EC2实例需要连接到允许您需要访问的安全组。
如果您将规则设置为“ Custom ICMP”(自定义ICMP)规则并在任何位置使用“ echo Reply”,它将像冠军一样工作。“回显请求”是回答ping的错误规则。
如果您已经在安全组中打开并且VPC是正确的,则可能是您的内部网络正在阻止该IP ping防火墙或阻止了ping数据包。