尽管通过firewall-cmd启用,但仍无法访问端口3001上的快速/节点服务器

时间:2018-10-09 17:33:08

标签: node.js express firewall iptables

今天上午我一直在寻找解决问题的方法,但似乎没有适合我的情况或解决问题的方法,所以我在这里。

我有一个在CentOS Linux release 7.5.1804 (Core)上运行的服务器,并且已经安装了节点v10.11.0以托管网站。我有一个域foo.ca,其中有两个运行的独立Web服务器(一个用于客户端,一个用于服务器)。客户端运行在端口3000上,我使用iptables将端口80转发到端口3000,这样我实际上可以查看我的网站而无需明确列出端口(即,通过在地址栏中输入foo.ca

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

这很好,我可以看到foo.ca

当我尝试访问在端口3001上运行的服务器时,出现了我的问题。我已使用Firewall-cmd通过tcp启用了该端口:

sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3001/tcp --permanent
sudo firewall-cmd --reload

如果我输入foo.ca:3001 chrome告诉我无法访问该网站,则foo.ca花费的时间太长了。

我通过在线工具测试了端口3001,它说它是开放的,我还检查了netstat:

netstat -tuplen
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      995        12161      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          12066      -
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      1000       56647615   4926/node
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      1000       56671635   6195/node

一些在线建议包括使用0.0.0.0而不是localhost,但是您已经看到我已经实现了。我现在真的不知道我的选择是什么,我也尝试过通过iptables启用端口,但是我不确定这样做有什么作用:

iptables -A INPUT -p tcp --dport 3001 -j ACCEPT

最后一件事,我的快递服务器代码如下:

const express = require('express')
const app = express()
const port = 3001

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, '0.0.0.0', () => console.log(`Example app listening on port ${port}!`))

我像node test

一样运行它

有人有什么想法吗?我不是网络专家

1 个答案:

答案 0 :(得分:0)

解决方案是我的网络由于某种原因将其阻止