ChatGPT解决这个技术问题 Extra ChatGPT

我有一个在 AWS 中运行的 EC2 实例。当我尝试从本地盒子 ping 时,它不可用。

如何使实例可 ping?

我不 ping 我的 ec2-instances,因为我不想仅仅为了 ping 而在我的安全组中启用 ICMP,而是我 telnet 打开端口。

U
Undo

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

类型:自定义 ICMP 规则

协议:回声请求

端口:不适用

来源:您的选择(我会选择 Anywhere 以便能够从任何机器 ping 通)


谢谢,我喜欢这个。我只想允许 ping,而不是全部。
我也需要 ICMPv6 吗?
也可以试试。但是 ICMP 对我来说就足够了
我正在做任何地方,但它会自动将其转换为自定义 @SyedRakibAlHasan
很容易将“Echo Reply”误认为“Echo Request”,我一度对此感到困惑。
S
SunsetQuest

晚了几年,但希望这对其他人有帮助......

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 您的服务器。


你拯救了我的一天!非常感谢
迄今为止最好的答案。非常彻底。
Windows 防火墙是罪魁祸首,到目前为止其他答案都没有提到。
我现在可以 ping,但您知道如何让我的节点应用程序在端口上侦听可以访问吗?
@zeion - 我有一段时间没有使用 AWS(我在 2017 年初进行了试用),所以我无法提供太多帮助。我唯一能想到的(我相信您已经尝试过)将使用上述项目,但用于您的应用程序所需的端口。对于 windows 防火墙部分,我认为您可以创建一个新规则,因为可能不会列出预先构建的规则。
E
Eric Nguyen

您必须编辑您的 EC2 实例所属的 Security Group 并允许访问(或者创建一个新实例并将实例添加到其中)。

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

如果它是网络服务器,您需要允许 0.0.0.0/0 (which means any IP address) 访问端口 80

要允许 ping 实例,您需要启用 ICMP 流量。

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


使用指定的安全组启用到机器的 All ICMP 流量对我来说是一种享受。
除了创建和编辑安全组之外,它还需要与实例相关联。只有这样,它才会生效。
安全组使您能够控制到您的实例的流量,包括可以到达您的实例的流量类型。 ``` 1. 检查安全组(启用 PORTS 以打开) 2. 检查正确的 VPC 3. 附加正确的子网 4. AWS EC2 在公共子网中 5. 启用 Internet 网关 ``` 打开端口AWS EC2 检查此链接官方 AWS [链接][1] 答案由 Tapan Nayan Banker 发布 |塔班银行家 www.tapanbanker.com
L
Laura Liparulo

安全组中的自定义 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

而已。


没有与此相关的安全问题吗?
可能您应该指定 IP
@avonnadozie,是的,我们不应该打开所有 ICMP 端口。
“所有 ICMP 端口”?这意味着什么? ICMP 既不是 TCP 也不是 UDP,也没有端口。
p
prasoon

转到 EC2 Dashboard 并单击“Security Groups”上的“Running Instances”,选择您需要添加安全性的实例组。单击“入站”选项卡单击“编辑”按钮(它将打开一个弹出窗口)单击“添加规则”选择“自定义 ICMP 规则 - IPv4”作为类型选择“回声请求”和“回声响应”作为协议(端口范围默认显示为“N/A”输入“0.0.0.0/0”作为源点击“保存”


我确实更新了您的指南,但仍然无法 ping 到我的 ip。你能帮忙吗
H
Haneef Mohammed

请仔细阅读以下清单

1)您必须首先检查实例是否在可从互联网访问的子网中启动

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

public and private subnets in aws vpc

2)检查您是否添加了适当的安全组规则,如果没有在附加到实例的安全组中添加以下规则。安全组是附加到每个启动的实例的防火墙。安全组包含允许流量进入的入站/出站规则/out of the instance.默认情况下,每个安全组都允许来自该实例的所有出站流量,并且不允许到该实例的入站流量。请查看以下链接以获取有关流量的更多详细信息。

security group documentation

类型:自定义ICMPV4

协议:ICMP

Portrange : 回声请求

来源:0.0.0.0/0

https://i.stack.imgur.com/NAwrv.png

3)检查子网级防火墙NACL是否有足够的规则。NACL是无状态防火墙,需要分别指定入站和出站流量。NACL应用于子网级,子网下的所有实例都将归入NACL 规则。下面是链接,其中将包含更多详细信息。

NACL documentation

入境规则 。出站规则

类型:自定义 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。


How to write an answer。添加更多详细信息以证明您的答案是正确的。并使用格式化工具
感谢 prateek 的反馈。我已经说得更清楚了。
请将图像添加为图像而不是超链接。 edit 并将屏幕截图转换为图像
为什么这被否决了?似乎一切都好,很有意义
Witold,感谢您的关注。似乎有一些格式问题导致投票失败。我现在已经更正了。
j
jobin george
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.点击“保存”


在我看来,这是一个很好的答案,只是我通过添加“出站”规则让它工作。谢谢。
虽然我在默认情况下可以使用 ping 之前使用谷歌云,但我在 aws ec2 中假设相同,谢谢你的回答
j
java college

使用 All ICMP 创建一个新的安全组对我有用。


Y
Yogesh Suthar

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

https://i.stack.imgur.com/46ox6.png


D
Deepak Sharma

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

它会起作用的。


S
Steve Waldman

如果您想通过 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 下可能需要哪些出口规则)


我实际上使用 terraform 在我的安全组中将此设置为出站(出口)规则,它就像一个魅力
t
tsbertalan

我有一个更深层次的问题——我创建了一个 VPC、子网和适当的安全组,但忽略了添加一个 Internet 网关并将其与我的子网关联。由于这是我的第一个“无法 ping ec2”的 Google 结果,因此我在此处发布此信息,以防它证明对其他人(或将来我自己)有用。


R
Ry-

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

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


P
Pranjal Bikash Das

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

https://i.stack.imgur.com/FGkdN.png

用于 ping 的所有 ICMP。 HTTP 用于在 HTTP 端口上访问 URL。 HTTPS 用于访问安全 HTTP 端口上的 URL。

根据您的要求,您可以更改 SOURCE


E
Edcel Cabrera Vista

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

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


b
bennie j

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

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


C
Chris Edwards

如果您将规则设置为“自定义 ICMP”规则并在任何地方使用“回显回复”,它将像冠军一样工作。 “回声请求”是回答 ping 的错误规则。


回声回复对我不起作用,但回声请求对我有用。
J
JJJ

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

https://i.stack.imgur.com/Tzxq3.png


您的第二条规则,“任何地方”的“所有流量”,不是一个好主意。
x
xenoterracide

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"]
  }
}

C
ChakEL

我在尝试从 linux 服务器连接到 EC2 时遇到了同样的问题,您有两个确保从 EC2 添加“ALL ICMP”的事情,如上所示,仅此一项不起作用,您必须将 Ansible 更新到最新版本2.4,它不适用于我之前的 2.2 版本。


R
Raghunath Babalsure

如果您已在安全组中打开并且 VPC 正确,则可能是您的内部网络阻止了该 IP 来 ping 或阻止防火墙中的 ping 数据包。


V
Vishruth

我从上述步骤尝试了多种解决方案,但对我有用的是

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

并再次尝试。我家的互联网设置中的某些东西不允许我连接到 RDP。我可以通过 SSH 连接到 linux 服务器


M
M Manjunath

确保您使用 aws ec2 实例的公共 IP 进行 ping。编辑附加到您的 EC2 实例的安全组并为 ICMP 协议添加入站规则。尝试 ping,如果不能解决,则在安全组中添加 ICMP 的出站规则。


K
Kavishka Hirushan

有 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


y
yasin lachini

1-检查您的安全组

2-检查互联网网关

3-检查路由表


s
shivaghaneesh

访问 ec2 实例中的新端口时。您已添加 2 个位置。 1. 安全组入端口。 2.防火墙设置入站规则。


R
Ryu_hayabusa

我想提一些罕见的 ISP 引起的问题。 BSNL 偶尔会发生在我身上。它是那些花费您日常生活数小时的奇怪问题之一。在这种情况下,可能会向 ISP 提出问题或更改 ISP。

亚马逊实例可以从浏览器访问(所有打开的端口) 无法从控制台 ping 相同 ssh / telnet 也不起作用。