即使安全组允许一切,从外部访问 Amazon EC2 机器也会超时

Timeout accessing Amazon EC2 machine from outside even with security group allowing everything

你好吗?

我对我的应用程序(是否已 docker 化)的外部访问有疑问。

我有一个简单的乒乓套接字通信,使用 socket.io 和以下代码文件:

server.js

let Server = require('socket.io')

const io = new Server().attach(8090)

io.on('connection', (socket) => {
  console.log('connection')
  socket.on('message', (msg) => {
    console.log('< ' + msg)
    console.log('> pong')
    socket.emit('event', 'pong')
  })
})

client.js

let host = process.argv[2]
let io = require("socket.io-client");

let client = io.connect(`http://${host}`)

let connected = false
client.on('connect', () => {
  connected = true
})

client.on('event', (msg) => {
  console.log('< ' + msg)
  ping()
})


function ping () {
  if (!connected) { 
    setTimeout(ping, 1000)
  } else {
    setTimeout(() => {
      console.log('> ping')
      client.emit('message', 'ping'); 
    }, 1000)
  }
}
ping()

在我的服务器启动并 运行ning 的情况下,我可以像这样执行客户端来测试通信:

$ node client.js localhost:8090

输出类似于:

> ping
< pong
> ping
< pong
> ping
< pong
... and so on

当我在我的 EC2 机器外测试这个(客户端和服务器)时一切正常,但是当我将 server.js 部署到云并 运行 它时,我无法访问它来自外面。

当我在端口 80 或 81 上绑定一个 nginx 网络服务并将每个请求代理到应用程序时,从云外部开始一切正常,但在其他端口上仍然无法正常工作。

我的安全组是完全开放的(用于测试目的)(入站和出站允许所有流量在所有端口上进出任何地方(0.0.0.0/0,::/0))(截图附后)。

可能对故障排除有用的东西:

任何帮助或疑难解答建议将不胜感激。

非常感谢您的宝贵时间

下面是安全组定义的截图:

我的问题已经解决了,这很尴尬。我的本地网络不允许在我提到的端口上进行出站连接。

如果您遇到同样的问题,我建议您测试您的本地网络。另外,检查你的 iptables 规则