亚马逊 AWS EC2 端口:连接被拒绝

问题描述 投票:0回答:5

我刚刚在安全组后面的全新 AWS 账户上创建了一个 EC2 实例,并在上面加载了一些软件。我在机器上的端口 4567(当前)上运行 Sinatra,并在我的安全组中向全世界开放了该端口。此外,我可以通过 ssh 进入 EC2 实例,但无法连接到端口 4567。我正在使用公共 IP 进行连接:

shakuras:~ tyler$ curl **.***.**.***:22
SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.1
curl: (56) Recv failure: Connection reset by peer
shakuras:~ tyler$ curl **.***.**.***:4567
curl: (7) Failed connect to **.***.**.***:4567; Connection refused

但是我的网络服务器正在运行,因为当我从本地主机 curl 时我可以看到该站点:

ubuntu@ip-172-31-8-160:~$ curl localhost:4567
Hello world! Welcome

我以为它可能是防火墙,但我运行 iptables 并得到:

ubuntu@ip-172-31-8-160:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我对这里发生的事情很迷茫。为什么我无法连接到外部世界?

amazon-web-services amazon-ec2 ports
5个回答
3
投票

您确定 Web 服务器正在侦听本地主机以外的其他接口吗? 检查输出 网络统计-an | grep 4567

如果它没有在 0.0.0.0 上监听,那就是原因。


2
投票

这听起来像是 Sinatra 绑定的问题。可以检查 thisthis 甚至 this 链接,它讨论了将 Sinatra 绑定到所有 IP 地址。


2
投票

您正在根据您的 netstat 命令收听

127.0.0.1
。这就是输出应该是这样的:

tcp        0      0 :::8080                     :::*                        LISTEN

你能发布你的 Sinatra 配置吗?你用什么启动它?


0
投票

这不适用于简单的 Amazon AMI,安装如http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-install.html所示

Step 1 , 2, 3 works (agent installation and starting demon ) 如图所示

[ec2-user@ip-<ip> ~]$ curl http://localhost:51678/v1/metadata
curl: (7) Failed to connect to localhost port 51678: Connection refused

事实上 netstat 显示了一些侦听的 tcp 端口,但一个能够连接,绝对不是 51678 tcp。


0
投票

如果您正在使用 Amazon EC2 并确保您在安全组中为 0.0.0.0 设置了自定义 TCP 安全规则,但仍然无法连接;尝试通过

0.0.0.0

添加到/etc/hosts的第一行
sudo vim /etc/hosts
//or
sudo nano /etc/hosts

第一行最后一个ip加空格,应该是这样

127.0.0.1 本地主机 0.0.0.0

© www.soinside.com 2019 - 2024. All rights reserved.