如何访问/ping 位于 AWS 上的服务器?
Posted
技术标签:
【中文标题】如何访问/ping 位于 AWS 上的服务器?【英文标题】:How to access/ping a server located on AWS? 【发布时间】:2010-11-30 16:58:15 【问题描述】:应该使用什么地址访问位于 AWS 上的服务器?
我创建了一个 AWS 实例并在其上安装了一个 Web 服务器。但是无法通过以下任何方式访问服务器:
-
ec2-174-129-24-92.compute-1.amazonaws.com
来自实例
ifconfig
的IP地址
我在 AWS 控制面板上创建并与实例关联的弹性 IP 地址
令人惊讶的是,带有root@ec2-174-129-24-92.compute-1.amazonaws.com
的 ssh 可以正常工作。
可能是什么问题以及如何将地址绑定到实例?
【问题讨论】:
【参考方案1】:Ping 不适用于 EC2,因为 ping 通过 ICMP 协议运行,该协议在典型的 EC2 安全组配置中被阻止。
使用tcping(通过 TCP 端口工作的 ping 替代方案)有一个非常好的解决方法:
tcping ec2-174-129-24-92.compute-1.amazonaws.com
tcping ec2-174-129-24-92.compute-1.amazonaws.com 22
它在端口 80(第一个示例)上运行,但您也可以指定一个不同的端口(第二个示例)用于测试连接性。
【讨论】:
tcping
不提供主机将无法工作(在 mac 上使用自制版本的 tcping 测试)。它产生以下错误:error: Usage: tcping [-q] [-t timeout_sec] [-u timeout_usec] <host> <port>
【参考方案2】:
在您的安全组中,在 ICMP 上打开 -1 到 -1 范围为 0.0.0.0/0,您将能够 ping。
查看我的截图以获得更好的视图:
@emostar 在下方发布的图片
【讨论】:
图像不再可用。 除此之外,如果您在公司网络后面,请与网络管理员部门核实他们是否没有阻止对除 80 (http) 和 22 (ssh) 以外的所有端口的访问。我们花了很多时间弄清楚为什么我们无法连接到在 2181 端口上运行的应用程序,后来发现我们的网络丢弃了不发往 80,22 端口的数据包。 注意:当我这样做时,传播需要一段时间(至少 20 分钟)。在打开 ICMP 访问之后,我重新启动了大约 3 次,中间等待。我出去购物,当我回来时 - 瞧!它正在工作。不知道这是正常现象还是我曾经遇到过的怪癖。【参考方案3】:正如 nowthatsamat 所说,您希望允许来自所有地址的 ICMP。
要在命令行上执行此操作,您可以运行:
ec2-authorize <group> -P icmp -t -1:-1 -s 0.0.0.0/0
或者,如果您更喜欢 AWS 控制台,这就是它的样子(截至 2012 年 9 月 19 日):
AWS Console Image
【讨论】:
【参考方案4】:如果您的实例使用 Windows AMI,您需要确保 AWS 控制台上的安全组和 Windows 防火墙都设置为接受所需端口上的连接。
在我将 Windows 防火墙配置为允许在我想要的端口上进行连接之前,我在启用 http 访问时遇到了同样的问题。这可以通过访问控制面板>系统和安全>Windows防火墙>高级设置在Windows中轻松完成。然后配置新的端口规则以允许传入 TCP 流量到您需要的端口或端口范围。
【讨论】:
【参考方案5】:2014 年更新 - 当前的 Amazon UI 不再使用 ICMP 类型的数字,因此现有答案不再适用。
在您的安全组中:
点击入站标签 创建自定义 ICMP 规则 选择回显请求 为所有人使用 范围 0.0.0.0/0 或将其锁定到特定 IP 应用更改你就可以ping通了。
【讨论】:
PSA 警告:选择echo request
而不是 echo reply
。否则你可能会因为疯狂而失去几个小时
Ack @BKSpureon 'ping' 是 'ICMP Echo Request'。 echo 回复是 ping 响应。您希望允许传入请求(和出站回复)。【参考方案6】:
2014 年 9 月更新: 在一段时间无法 apt-get 而不冻结之后,我尝试 ping www.google.com。令我惊讶的是,我也无法ping通。我按照上面的建议创建了一个带有入站 Echo 请求的新 ICMP 规则。这对我也不起作用。经过多次尝试,我为 Outbound with Echo Request 创建了一个新规则。现在它起作用了。也许 AWS 最近添加了这个?无论如何,希望这可以帮助那里的人。不能做像 ping 这样简单的事情会让人抓狂。
编辑:现在我的 apt-get 也可以了!
【讨论】:
【参考方案7】:在 AWS 安全组(入站)中给出 2 条规则,
Custom ICMP Rule Echo Request N/A 0.0.0.0/0
Custom ICMP Rule Echo Reply N/A 0.0.0.0/0
【讨论】:
【参考方案8】:晚了八年,但希望这对其他人有所帮助...
下面显示了如何启用 ping 所需的端口。
1) 首先确保 EC2 实例具有公共 IP。它有一个 Public DNS 或 Public IP 地址,那么你应该没问题。这也应该是您 ping 的地址。
2) 转到 EC2 正在使用的安全组。
右键,选择入站规则 A:选择添加规则 B:选择自定义 ICMP 规则 - IPv4 C:选择回显请求 D:选择 Anywhere 或 My IP (注意:My IP 比 anyone 更安全strong> 但只允许来自您的 IP 的 ping。) E:选择保存3) 创建 Windows 防火墙例外。
转到开始并键入高级安全Windows防火墙 选择入站规则【讨论】:
太棒了。你们中的一些人可能还希望允许“边缘遍历”,您可以通过上图所示的属性子菜单来实现。【参考方案9】:我在从本地 mac 机器连接时遇到了类似的问题
解决方法如下:
-
* 路由表 => 添加 0.0.0.0/0 并定位到您的 Internet 网关 *
在 Network ACL 下添加广告
2.1 用于来自本地计算机的 ping ->
所有 ICMP - IPv4 ICMP (1) ALL 0.0.0.0/0 允许
2.2 ssh/其他连接
SSH (22) TCP (6) 22 0.0.0.0/0
ALL Traffic ALL ALL 0.0.0.0/0
将子网与路由表关联的良好做法
在 Ec2 下 -> 安全组
4.1 要允许 SSH 连接,只需添加如下
SSH (22) TCP (6) 22 0.0.0.0/0
4.2 用于 ping 从您的本地计算机工作,如下所示
All ICMP - IPv4 All N/A 0.0.0.0/0
这将使您的连接适用于使用您的 KEY 文件 (xx.pem) 从本地计算机进行 ping 和 ssh
谢谢,
【讨论】:
【参考方案10】:我发现如果你在你的 AWS 服务器上安装一个 *** 服务器,你可以连接到 *** 并 ping 虚拟私有网络中的私有 IP 地址。
【讨论】:
以上是关于如何访问/ping 位于 AWS 上的服务器?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda 上的 Nestjs(无服务器框架)|如何访问事件参数?
如何将 AWS S3 存储桶与远程非 AWS 服务器上的文件同步?