我正在使用 NodeJs 创建后端应用程序。我的应用程序在端口上运行3001
。当我尝试使用localhost:3001
或0.0.0.0:3001
或访问它时可以访问127.0.0.1:3001
,但当我尝试使用另一台设备访问它时,这意味着我尝试使用本地 ip(同一网络)访问192.168.1.8
,它是不工作。
因此,我尝试使用 ufw 打开我的端口
sudo ufw allow 3001
我使用 检查了 ufw 状态sudo ufw status verbose
,结果如下:
To Action From
-- ------ ----
2222 ALLOW IN Anywhere
3001/tcp ALLOW IN 192.168.1.8
53 ALLOW IN Anywhere
22 ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp ALLOW IN Anywhere
192.168.1.8 3001/tcp ALLOW IN 127.0.0.1
3001 ALLOW IN Anywhere
2222 (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
22/tcp (v6) ALLOW IN Anywhere (v6)
3001 (v6) ALLOW IN Anywhere (v6)
但是当我尝试时nmap 192.168.1.8
。我看到端口没有打开,这是我的 nmap 的结果。
Starting Nmap 7.80 ( https://nmap.org ) at 2021-03-18 12:43 WIB
Nmap scan report for 192.168.1.8 (192.168.1.8)
Host is up (0.00014s latency).
All 1000 scanned ports on 192.168.1.8 (192.168.1.8) are closed
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
但当我尝试时nmap localhost
,端口3001
已经打开。
Starting Nmap 7.80 ( https://nmap.org ) at 2021-03-18 12:44 WIB
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
631/tcp open ipp
3001/tcp open nessus
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
那么,如何将我的端口打开到本地 IP,以便同一网络中的另一台设备可以访问?提前致谢。
答案1
仅作为示例,node.js文件:
const express = require('express');
const app = express();
const port=3000;
app.listen(port, () => console.log(`App listening on port ${port}`));
进而:
# lsof -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 201089 wayne 21u IPv6 2249996 0t0 TCP *:3000 (LISTEN)
*:3000
表示所有接口上的端口 3000。请注意,尽管它说的是 IPv6,但它实际上也在监听 IPv4,因为我们没有指定 ipv6Only(nodejs server.listen 文档)。