无法从Ubuntu上的外部IP访问Node.js

时间:2016-05-02 19:04:37

标签: node.js live

我尝试访问在Ubuntu上运行的node.js服务器。我的电脑与TP-link路由器连接。现在,我想从其他IP(而不是本地主机或本地IP)访问节点服务。我能做什么?我使用了以下代码。

注意:此服务器工作正常,可从本地IP访问,但无法从我的公共IP访问

http.listen(6000,"0.0.0.0",function(){
    log.info("server started");
})

2 个答案:

答案 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上的更多规则和防火墙