运行 ubuntu 22.04
我正在运行一个测试 express.js 应用程序,我可以通过 192.168.1.6:3000 作为本地 ip 连接到它,也可以作为 (静态公共 IP):3000 连接到它,但只能从连接到我的 WiFi 的设备连接到它。
当我尝试使用移动数据访问(静态公共 IP):3000 时,我收到错误 CONNECTION_REFUSED,HTTP 错误代码为 102
root@server:~# ss -lntu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
udp UNCONN 0 0 192.168.1.6%enp1s0:68 0.0.0.0:*
tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
我尝试过调整防火墙,启用、禁用它,还将端口 3000 添加到例外列表中。
root@server:~# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 80/tcp ALLOW IN Anywhere
[ 2] 443 ALLOW IN Anywhere
[ 3] 3000 ALLOW IN Anywhere
[ 4] 3000 ALLOW IN 0.0.0.0
[ 5] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 443 (v6) ALLOW IN Anywhere (v6)
[ 7] 3000 (v6) ALLOW IN Anywhere (v6)
- 我已尝试设置服务器来监听端口 3000,但显然没有多大效果。
- 我已经在路由器设置中设置了端口转发,这就是为什么我的应用程序完全使用公共静态 IP 地址加载
此外,无论是否以 root 身份登录,我似乎都被拒绝在端口 80 上运行。
root@server:/home/user/testsite/testapp2# npm run start
> start
> node index.js
node:events:491
throw er; // Unhandled 'error' event
^
Error: listen EACCES: permission denied 0.0.0.0:80
at Server.setupListenHandle [as _listen2] (node:net:1446:21)
at listenInCluster (node:net:1511:12)
at Server.listen (node:net:1599:7)
at Function.listen (/home/user/testsite/node_modules/express/lib/application.js:635:24)
at Object.<anonymous> (/home/user/testsite/testapp2/index.js:9:5)
at Module._compile (node:internal/modules/cjs/loader:1155:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
at Module.load (node:internal/modules/cjs/loader:1033:32)
at Function.Module._load (node:internal/modules/cjs/loader:868:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1490:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EACCES',
errno: -13,
syscall: 'listen',
address: '0.0.0.0',
port: 80
}
我不知道问题是什么,经过 8 小时的谷歌搜索,我确认我没有问对问题。我想可能是服务器本身拒绝了 WAN 连接,但我对此真的很陌生,我不知道如何正确排除故障。
更新:到目前为止,我为测试网络服务器而设置的端口转发选项
答案1
您不应该使用同一个端口转发到不同的内部 LAN IP 地址,每个 IP 一个端口,否则它不起作用。