我有一个在 AWS 中运行的 EC2 实例。当我尝试从本地盒子 ping 时,它不可用。
如何使实例可 ping?
添加新的 EC2 安全组入站规则:
类型:自定义 ICMP 规则
协议:回声请求
端口:不适用
来源:您的选择(我会选择 Anywhere 以便能够从任何机器 ping 通)
晚了几年,但希望这对其他人有帮助......
1 - 首先确保 EC2 实例具有公共 IP。
https://i.stack.imgur.com/yQjda.png
2 - 亚马逊网络规则
接下来确保 Amazon 网络规则允许 Echo Requests。转到 EC2 的安全组。
右键,选择入站规则
A:选择添加规则
B:选择自定义 ICMP 规则 - IPv4
C:选择回显请求
D:选择任何地方或我的 IP
E:选择保存
https://i.stack.imgur.com/2ybsf.png
- 访问控制列表(如果适用)
注意:谢谢 santosh 的这个。
您的 VPC 已连接到网络,并且该网络也可能有一些 ACL 阻止它。
A: 转到 Your VPCs --> Default --> Network ACLs --> Details(Tab) --> 并选择 Main network ACL。 (它应该将您带到应用了网络 ID 过滤器的网络 ACL)
B:然后选择网络 ACL ID(屏幕截图未显示)
C:在 Inbound rules 选项卡下,如果当前规则不允许 ICMP,则选择 Edit Inbound Rule --> Add a New Rule
D:选择所有 ICMP - IPv4
E:选择任何地方或键入另一个网络 CIDR
F:选择允许(0.0.0.0/0 为全部)
G:选择保存更改
H:对出站规则选项卡执行相同操作(如果需要)
4 - Windows 防火墙例外:
接下来,默认情况下,Windows 防火墙会阻止入站 Echo 请求。通过创建 Windows 防火墙例外来允许 Echo 请求...
转到开始并键入具有高级安全性的 Windows 防火墙
选择入站规则
https://i.stack.imgur.com/iP2SQ.png
完毕!希望您现在应该能够 ping 您的服务器。
您必须编辑您的 EC2 实例所属的 Security Group 并允许访问(或者创建一个新实例并将实例添加到其中)。
默认情况下,一切都被拒绝。您需要添加到安全组的例外情况取决于您需要提供给 Internet 的服务。
如果它是网络服务器,您需要允许 0.0.0.0/0
(which means any IP address) 访问端口 80
。
要允许 ping 实例,您需要启用 ICMP 流量。
AWS Web 控制台在相关下拉列表中提供了一些最常用的选项。
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
而已。
转到 EC2 Dashboard 并单击“Security Groups”上的“Running Instances”,选择您需要添加安全性的实例组。单击“入站”选项卡单击“编辑”按钮(它将打开一个弹出窗口)单击“添加规则”选择“自定义 ICMP 规则 - IPv4”作为类型选择“回声请求”和“回声响应”作为协议(端口范围默认显示为“N/A”输入“0.0.0.0/0”作为源点击“保存”
请仔细阅读以下清单
1)您必须首先检查实例是否在可从互联网访问的子网中启动
为此,请检查实例启动的子网是否连接了 Internet 网关。有关 AWS 网络的详细信息,请访问以下链接。
public and private subnets in aws vpc
2)检查您是否添加了适当的安全组规则,如果没有在附加到实例的安全组中添加以下规则。安全组是附加到每个启动的实例的防火墙。安全组包含允许流量进入的入站/出站规则/out of the instance.默认情况下,每个安全组都允许来自该实例的所有出站流量,并且不允许到该实例的入站流量。请查看以下链接以获取有关流量的更多详细信息。
类型:自定义ICMPV4
协议:ICMP
Portrange : 回声请求
来源:0.0.0.0/0
https://i.stack.imgur.com/NAwrv.png
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
允许/拒绝:允许允许/拒绝:允许
https://i.stack.imgur.com/8yMzd.png
https://i.stack.imgur.com/WkvoL.png
4) 检查任何防火墙,如 IPTABLES 并禁用以测试 ping。
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.点击“保存”
使用 All ICMP 创建一个新的安全组对我有用。
那些对 aws ec2 不熟悉并希望从 SSH, Broswer, Ping from system
访问实例的人,那么下面是这些的入站规则:-
https://i.stack.imgur.com/46ox6.png
转到 EC2 实例的安全组并编辑入站规则 allow 0.0.0.0/0 for ICMP。
它会起作用的。
如果您想通过 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 下可能需要哪些出口规则)
我有一个更深层次的问题——我创建了一个 VPC、子网和适当的安全组,但忽略了添加一个 Internet 网关并将其与我的子网关联。由于这是我的第一个“无法 ping ec2”的 Google 结果,因此我在此处发布此信息,以防它证明对其他人(或将来我自己)有用。
安全组使您能够控制到您的实例的流量,包括可以到达您的实例的流量类型。
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 link
您必须在安全组中打开以下安全端口。每个规则用于不同的目的,如下所示。
https://i.stack.imgur.com/FGkdN.png
用于 ping 的所有 ICMP。 HTTP 用于在 HTTP 端口上访问 URL。 HTTPS 用于访问安全 HTTP 端口上的 URL。
根据您的要求,您可以更改 SOURCE
默认情况下,EC2 由 AWS 安全组(EC2 和 VPC 中的一项服务)保护。默认情况下,安全组不允许任何包含 ping 的 ICMP 请求。允许它:
转到:AWS EC2 实例定位:安全组绑定到该实例(可能有多个安全组)检查:协议的入站规则(ICMP)端口(0 - 65535)如果不存在,您可以添加它并允许它打开您指定的源 IP 或另一个安全组。
是的,您需要开放对端口的访问。查看安全组 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html
您的 EC2 实例需要附加到允许您所需访问权限的安全组。
如果您将规则设置为“自定义 ICMP”规则并在任何地方使用“回显回复”,它将像冠军一样工作。 “回声请求”是回答 ping 的错误规则。
ping 两个系统时,默认情况下启用 SSH(如果您已通过 putty 或终端连接。)为了允许 ping,我为每个实例(入站)添加了安全组。
https://i.stack.imgur.com/Tzxq3.png
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"]
}
}
我在尝试从 linux 服务器连接到 EC2 时遇到了同样的问题,您有两个确保从 EC2 添加“ALL ICMP”的事情,如上所示,仅此一项不起作用,您必须将 Ansible 更新到最新版本2.4,它不适用于我之前的 2.2 版本。
如果您已在安全组中打开并且 VPC 正确,则可能是您的内部网络阻止了该 IP 来 ping 或阻止防火墙中的 ping 数据包。
我从上述步骤尝试了多种解决方案,但对我有用的是
将互联网连接更改为我的移动热点
并再次尝试。我家的互联网设置中的某些东西不允许我连接到 RDP。我可以通过 SSH 连接到 linux 服务器
确保您使用 aws ec2 实例的公共 IP 进行 ping。编辑附加到您的 EC2 实例的安全组并为 ICMP 协议添加入站规则。尝试 ping,如果不能解决,则在安全组中添加 ICMP 的出站规则。
有 2 件事需要考虑。
检查安全组规则。包括入站规则,如下所示。
类型:自定义 ICMPV4,协议:ICMP,端口范围:Echo Request,来源:0.0.0.0/0
检查 EC2 实例的防火墙状态。在 /etc/ufw/before.rules 中附加一个 ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
1-检查您的安全组
2-检查互联网网关
3-检查路由表
访问 ec2 实例中的新端口时。您已添加 2 个位置。 1. 安全组入端口。 2.防火墙设置入站规则。
我想提一些罕见的 ISP 引起的问题。 BSNL 偶尔会发生在我身上。它是那些花费您日常生活数小时的奇怪问题之一。在这种情况下,可能会向 ISP 提出问题或更改 ISP。
亚马逊实例可以从浏览器访问(所有打开的端口) 无法从控制台 ping 相同 ssh / telnet 也不起作用。
ping
,而不是全部。