在我的 Fedora 机器上,除了 apache 的端口 80 之外,所有传入连接似乎都被拒绝。
我试过8111和1111端口,都不起作用。我已经在我的硬件路由器上完成了转发,并配置了防火墙(iptables,使用 GUI)以允许这些端口上的连接。然而,它仍然不起作用。
当我在这些端口之一上运行小型 HTTP 服务器(node.js hello-world)并尝试对其进行卷曲时,它仅适用于本地主机,但不适用于公共 IP 地址。
使用公共地址,我立即得到curl: (7) couldn't connect to host
。
如果没有端口转发或防火墙例外,这需要一段时间并且不会立即出现 - 所以我认为这不是问题。我也尝试使用网络浏览器而不是curl,没有任何区别。
我尝试过一个名为 的工具tcptrack
,每当我尝试使用公共地址进行卷曲时,它就会显示这一点(我在这里更改了公共地址,192.168.0.2 是本地地址):
215.17.123.60:52014 192.168.0.2:1111 RESET 16s 0 B/s
192.168.0.2:52014 215.17.123.60:1111 RESET 16s 0 B/s
所以我收到了包裹,但不知何故被拒绝了(我不知道重置是什么意思)。是否有其他防火墙或其他东西?正如我所说,80 端口工作正常。
答案1
你如何运行这个网络服务器?看起来它只监听本地主机,而不监听你的实际 IP 地址。因此它只接受来自本地主机 (127.0.0.1) 的连接。
尝试将其绑定到 192.168.0.2(或 0.0.0.0)而不是 localhost。
所以如果你像这样开始:
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
改成127.0.0.1
192.168.0.2