我有一个在 AWS 中运行的 EC2 实例。当我尝试从本地盒子 ping 时,它不可用。
如何使实例可 ping?
我有一个在 AWS 中运行的 EC2 实例。当我尝试从本地盒子 ping 时,它不可用。
如何使实例可 ping?
添加新的 EC2 安全组入站规则:
晚了几年,但希望这对其他人有帮助......
1)首先确保EC2实例有公网IP。如果有公共 DNS或公共 IP地址(在下面圈出),那么你应该很好。这将是您 ping 的地址。
2)接下来确保亚马逊网络规则允许Echo Requests。转到 EC2 的安全组。
3) 接下来,Windows 防火墙默认阻止入站 Echo 请求。通过创建 Windows 防火墙例外来允许 Echo 请求...
4) 完成!希望您现在应该能够 ping 您的服务器。
您必须编辑安全组您的 EC2 实例所属
默认情况下,一切都被拒绝。您需要添加到安全组的例外情况取决于您需要提供给 Internet 的服务。
如果它是一个网络服务器,您将需要允许访问端口80
(这意味着任何 IP 地址)。0.0.0.0/0
要允许 ping 实例,您需要启用 ICMP 流量。
AWS Web 控制台在相关下拉列表中提供了一些最常用的选项。
安全组中的自定义 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 网关。有关 AWS 网络的详细信息,请访问以下链接。
2)检查您是否添加了适当的安全组规则,如果没有在附加到实例的安全组中添加以下规则。安全组是附加到每个启动的实例的防火墙。安全组包含允许流量进入的入站/出站规则/out of the instance。默认情况下,每个安全组都允许来自该实例的所有出站流量,并且不允许该实例的入站流量。查看以下链接以获取有关流量的更多详细信息。
类型:自定义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。
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 创建一个新的安全组对我有用。
如果您想通过 SDK 以编程方式(从任何地方)启用 ping,那么神奇的公式是:
cidrIp: "0.0.0.0/0"
ipProtocol: "icmp"
toPort: -1
fromPort: 8
例如,在 Scala(使用 AWS Java 开发工具包 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 下可能需要哪些出口规则)
转到 EC2 实例的安全组并编辑入站规则 allow 0.0.0.0/0 for ICMP。
它会起作用的。
我有一个更深层次的问题——我创建了一个 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链接
默认情况下,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 实例需要附加到允许您所需访问权限的安全组。
我在尝试从 linux 服务器连接到 EC2 时遇到了同样的问题,你有两个确保从 EC2 添加“ALL ICMP”的事情,如上所示,仅此一项不起作用,你必须将 Ansible 更新到最新版本2.4,它不适用于我之前的 2.2 版本。
如果您已在安全组中打开并且 VPC 正确,则可能是您的内部网络阻止了该 IP 来 ping 或阻止防火墙中的 ping 数据包。
如果您将规则设置为“自定义 ICMP”规则并在任何地方使用“回显回复”,它将像冠军一样工作。“回声请求”是回答 ping 的错误规则。
我从上述步骤尝试了多种解决方案,但对我有用的是
将互联网连接更改为我的移动热点
并再次尝试。我家的互联网设置中的某些东西不允许我连接到 RDP。我可以通过 SSH 连接到 linux 服务器
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"]
}
}
1-检查您的安全组
2-检查互联网网关
3-检查路由表
确保您使用 aws ec2 实例的公共 IP 进行 ping。
编辑附加到您的 EC2 实例的安全组并为 ICMP 协议添加入站规则。
尝试 ping,如果不能解决,则在安全组中添加 ICMP 的出站规则。
访问 ec2 实例中的新端口时。您已添加 2 个位置。1. 安全组入端口。2.防火墙设置入站规则。
我想提一些罕见的 ISP 引起的问题。BSNL 偶尔会发生在我身上。它是那些花费您日常生活数小时的奇怪问题之一。在这种情况下,可能会向 ISP 提出问题或更改 ISP。