我尝试访问在Ubuntu上运行的node.js服务器。我的电脑与TP-link路由器连接。现在,我想从其他IP(而不是本地主机或本地IP)访问节点服务。我能做什么?我使用了以下代码。
注意:此服务器工作正常,可从本地IP访问,但无法从我的公共IP访问
http.listen(6000,"0.0.0.0",function(){
log.info("server started");
})
答案 0 :(得分:0)
你必须使用: -
iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT
表示传出规则(不是dport
)。除此之外,也许有一个阻止流量的早期规则?试试iptables -L
。
答案 1 :(得分:0)
Ubuntu的防火墙很好,默认系统不允许外部IP响应
在express和node js或类似的任何服务器中
http.listen(6000,"0.0.0.0",function(){
log.info("server started");
})
它将在您的IP,本地主机和公共IP上运行 但在外部IP上无法访问
首先替换
localhost -> 0.0.0.0
当您想同时运行前端和后端时
那么最好直接使用公共IP,而不要使用0.0.0.0
如果您使用的是ubuntu,那么我们需要使用ufw更改防火墙设置
UFW默认安装在Ubuntu上。如果由于某种原因已将其卸载,则可以使用apt-get安装它:
sudo apt-get install ufw
然后
sudo nano /etc/default/ufw
选中此行并使其为
IPV6=yes
使用Ctrl-X保存文件以退出文件,然后按+ y保存所做的更改,然后按ENTER
您随时可以使用以下命令检查UFW的状态:
sudo ufw status verbose
默认情况下,UFW被禁用,因此您应该看到类似以下内容的
:Output:
Status: inactive
不是最重要的一点
sudo ufw allow portNumber // here portNumber is port-number in integer
就您而言
sudo ufw allow 6000
并允许
sudo ufw allow http
有关ubuntu click here上的更多规则和防火墙