linux 端口映射到公网(专网IP),公网无法访问

我在ubuntu 22.04上进行网站部署,开放了3001端口想让公网能访问,已经在路由器上做公网IP映射(windows端口能正常访问),linux下无法访问,目前已经做如下事情:

  1. 已经开通iptable, 已经设置ufw;

    img

2.网络情况,有专网IP(固定公网IP);

3.路由器已经设置了映射

img


4.只要映射的内网端口是linux系统就无法访问,但是在局域网中可以正常访问3001端口;
5.路由器映射到windows系统可以在公网正常访问;
6.通过windows服务器做端口转发到linux能正常访问3001端口;
7.路由器牌子:TL-R479G+;
8.总结,路由器映射能正常访问windows的端口,不能正常访问linux端口(局域网能正常访问)。

确保你映射之后,可以使用你本地的电脑telnet 登录访问

浏览器能正常访问吗?

引用 皆我百晓生 小程序回复内容作答:
根据您提供的信息,您已经在路由器上设置了端口映射,并且在 Windows 系统上可以成功访问您的网站。但是在 Linux 系统上无法从公网访问该端口,同时您的网站在局域网中可以正常访问。

有几个可能的原因导致这个问题:

  1. 防火墙设置:您已经提到您在 Linux 系统上启用了 iptables 和 ufw,但可能需要进一步检查它们的配置是否正确。确保您在防火墙中允许了入站和出站连接,允许通过 3001 端口的流量。

  2. 网络配置:检查您的 Linux 系统的网络配置,确保它与路由器的设置兼容。您可以尝试将您的 Linux 系统设置为静态 IP,并确保网关和 DNS 设置正确。

  3. 反向代理或负载均衡设置:如果您在 Linux 上使用了反向代理(如 Nginx)或负载均衡器,确保您已正确配置它们,以便将流量转发到适当的端口和主机。

  4. 路由器配置:尽管您已经在路由器上设置了端口映射,但仍要确保路由器的配置正确。检查端口映射设置是否正确,并且没有任何其他规则或配置阻止了公网对 Linux 系统的访问。

  5. 其他应用程序或服务冲突:如果在 Linux 系统上运行了其他应用程序或服务,可能会导致端口冲突或网络访问问题。确保没有其他程序使用了相同的端口,并检查系统日志以获取任何与网络连接相关的错误信息。

如果您仍然无法解决问题,我建议您查阅操作系统和路由器的文档,或者咨询网络管理员或技术支持人员以获取更详细的指导和帮助。

你有没有完全关闭SELinux?
临时关闭

setenforce 0

注意:重启系统后还会开启。

永久关闭
1、vim /etc/selinux/config,SELINUX=disabled,然后保存退出。
2、 vim /etc/sysconfig/selinux,SELINUX=disabled,然后保存退出。

阿里云linux云服务器公网地址无法访问最常见两个问题解决方法
可以参考下

结合GPT给出回答如下请题主参考
首先确认在 Linux 系统中是否已经开启了防火墙,如果开启了防火墙,则需要在防火墙中开放相应的端口。

假设你的监听端口为 3001,公网 IP 地址为 xx.xx.xx.xx,以下是在 Linux 中开放防火墙端口的命令:

sudo ufw allow 3001

然后检查你的监听地址是否绑定到公网 IP,可以使用如下命令检查:

netstat -tulpn | grep 3001

输出如下:

tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      1234/node

如果第一列中的地址为 0.0.0.0,则表示已经绑定到所有可用地址,包括公网 IP,可以继续操作。如果不是,可以使用如下命令将监听地址绑定到公网 IP:

node your_app.js --host xx.xx.xx.xx --port 3001

最后,如果你的路由器上做了公网 IP 映射,并且 Windows 系统可以正常访问,则可以排除路由器配置问题,这时需要检查 Linux 系统中是否有其他防火墙或网络配置问题,建议通过调试日志或者抓包等方式进行排查。