我试图访问在Ubuntu上运行的node.js服务器。我的电脑连接了TP链接路由器。现在,我想从其他IP(而不是从我的本地主机或本地IP)访问节点服务。我能做什么?我使用了以下代码。
注意:此服务器运行良好,可以从本地IP访问,但不能从我的公共IP 访问
http.listen(6000,"0.0.0.0",function(){
log.info("server started");
})
您必须使用:-
iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT
用于传出规则(而不是dport
)。除此之外,也许还有一条早期的规则可以阻止交通?尝试iptables -L
。
Ubuntu有很好的防火墙,默认系统不允许外部IP响应
在express和node-js或任何类似的服务器中
http.listen(6000,"0.0.0.0",function(){
log.info("server started");
})
它将在您的IP、localhost和公共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键保存所做的更改,然后输入
在任何时候,您都可以使用以下命令检查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的更多规则和防火墙,请单击此处