无法使用 LAN 外部的公共静态 IP 地址连接到家庭 ubuntu 服务器

无法使用 LAN 外部的公共静态 IP 地址连接到家庭 ubuntu 服务器

运行 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 一个端口,否则它不起作用。

相关内容