我有一个在AWS中运行的EC2实例。当我试图从我的本地盒子ping它是不可用的。
我如何能使实例pingable?
我有一个在AWS中运行的EC2实例。当我试图从我的本地盒子ping它是不可用的。
我如何能使实例pingable?
您必须编辑EC2实例所属的Security Group并允许访问(或者创建一个新的Security Group并将该实例添加到其中)。
默认情况下,一切都被拒绝。您需要添加到安全组的例外取决于您需要向internet提供的服务。
如果它是一个web服务器,你需要允许访问端口80为0.0.0.0/0(这意味着任何IP地址)。
要允许ping实例,您需要启用ICMP通信。
AWS Web控制台在相关下拉列表中提供了一些最常用的选项。
是的,您需要打开对端口的访问。查看Security Groups http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html
您的EC2实例需要附加到一个允许您所需访问的安全组。
添加一个新的EC2安全组入站规则:
类型:自定义ICMP规则 协议:Echo Request 端口: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。
我有一个更深层次的问题——我已经创建了VPC、子网和适当的安全组,但忽略了添加Internet网关并将其与子网关联。因为这是我的第一个谷歌结果“不能ping ec2”,我把这个信息贴在这里,以防它被证明对别人有用(或将来我自己)。
虽然晚了几年,但希望这能帮助到其他人……
1 -首先确保EC2实例有一个公共IP。
如果有一个公共DNS或公共IP地址(下面圈出来),那么你应该是好的。这将是你ping的地址。
2 -亚马逊网络规则
接下来,确保Amazon网络规则允许Echo请求。进入EC2的安全组。
右键单击,选择入站规则 A:选择“添加规则” B:选中“自定义ICMP规则- IPv4” C:选择“Echo Request” D:选择“任何地方”或“我的IP” E:选择保存
3 -访问控制列表(如适用)
注:谢谢santosh的这一个。
您的VPC连接到一个网络,这个网络可能也有一些acl阻止它。
A: Go to the Your VPCs --> Default --> Network ACLs --> Details(Tab) --> and select the Main network ACL. (it should bring you to Network ACLs with the network id filter applied) B: Then Select the Network ACL ID (screenshot not shown) C: Under Inbound rules tab, if the current rules don't already allow ICMP, then select Edit Inbound Rule --> Add a New Rule D: Select All ICMPs - IPv4 E: Select Anywhere or type another network CIDR F: Select Allow (0.0.0.0/0 is all) G: Select Save Changes H: do the same for Outbound rules tab (if needed)
4 - Windows防火墙例外:
接下来,Windows防火墙会默认阻止入站Echo请求。通过创建windows防火墙异常允许Echo请求…
点击“开始”,输入“高级安全的Windows防火墙” 选择入站规则
完成了!
希望您现在能够ping通服务器。
terrraform安全组的特定指令,因为-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"]
}
}
确保使用aws ec2实例的公共IP进行ping。 编辑附加到EC2实例的安全组,并为ICMP协议添加入站规则。 尝试ping,如果这个问题没有解决,然后在安全组中添加ICMP的出站规则。
我想提到一些ISP引起的罕见问题。我偶尔也会用BSNL。这是一个奇怪的问题,它占用了你日常生活中的几个小时。在这种情况下,人们可能会提出与ISP或更换ISP的问题。
Amazon实例可以从浏览器访问(所有开放端口) 控制台无法ping通 SSH / Telnet也不能正常使用。
我也有同样的问题,从linux服务器连接到EC2,你有两个确保的事情,“所有ICMP”是从EC2添加如上所示,这是不会工作的,你必须更新Ansible到最新版本2.4,它不与我以前的版本2.2工作。
您需要在安全组中打开以下安全端口。每条规则用于不同的目的,如下所示。
所有ICMP用于ping。 HTTP用于访问HTTP端口上的URL。 HTTPS访问安全HTTP端口上的URL。
根据您的要求,您可以更改SOURCE
请仔细检查下面的核对表
1)您必须首先检查实例是否启动在一个子网中,该子网可以从internet访问
为此,检查实例启动的子网是否附加了internet网关。有关AWS网络的详细信息,请访问下面的链接。
aws VPC中的公网子网和私有子网
2)检查你是否添加了正确的安全组规则,如果没有,在附加到实例的安全组中添加以下规则。安全组是连接到每个启动实例的防火墙。安全组包含入站/出站规则,这些规则允许流量进出实例。默认情况下,每个安全组允许来自该实例的所有出站流量,而不允许进入该实例的流量。查看下面的链接,了解更多流量的详细信息。
安全组文档
类型:自定义ICMPV4
协议:ICMP
Portrange: Echo Request
来源:0.0.0.0/0
3)检查子网级防火墙(称为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:允许
4)检查任何防火墙,如IPTABLES和禁用测试ping。
转到EC2仪表板,点击“运行实例” 在“Security Groups”上,选择需要添加安全性的实例的组。 点击“入站”选项卡 点击“编辑”按钮(将打开一个弹出窗口) 点击“添加规则” “类型”选择“自定义ICMP规则- IPv4” 协议选择“Echo Request”和“Echo Response”(端口范围默认为N/A) 输入“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.点击“保存”
安全组使您能够控制到实例的流量,包括可以到达实例的流量类型。
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请求。允许:
Goto: 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下可能需要什么出口规则)
我尝试了以上步骤中的多种解决方案,但对我有效的是
更改互联网连接到我的移动热点
再试一次。我家的网络设置不允许我连接到RDP。我在哪里可以SSH到linux服务器
有两件事需要考虑。
检查安全组规则。 包括如下所示的入站规则。
类型:自定义ICMPV4, 协议:ICMP, Portrange: Echo Request, 来源:0.0.0.0/0
检查EC2实例的防火墙状态。 在/etc/ufw/before.rules中追加如下内容 -p icmp——icmp-type echo-request -j ACCEPT