我正在为自己的应用程序设置服务器,但遇到了端口转发问题。
我想通过路由器将服务器暴露给互联网,但端口转发不起作用。我当前的配置如下:
目前,我使用的是 ZTE MF286D 路由器,其静态地址为 WAN 上的 192.168.0.14,LAN 上的 192.168.2.1。它使用原始固件
在服务器上,我安装了 Ubuntu,并且运行 Apache 和 SSH,两者都在 UFW 中开放了端口。
作为 WAN 客户端,我使用 Windows 10。
我尝试将端口 80/TCP 转发到 192.168.2.2,但没有成功 - Nmap 报告没有开放端口,并且通过浏览器和 ssh 的连接都失败。
然后我尝试将 192.168.2.2 开放到 DMZ - 但没有结果。我不知道我做错了什么!据我所知,在此配置下不可能出现 ISP 问题。
我也尝试过 D-Link DIR-635,效果几乎相同。 是否有可能两者都以相同的方式被破坏,还是我遗漏了什么?
Nmap 返回
Nmap scan report for 192.168.0.14
Host is up (0.00s latency).
All 1000 scanned ports on 192.168.0.14 are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
MAC Address: [redacted] (zte)
我还没有找到允许对 ZTE 进行 ping 请求的方法。从主机 ping 192.168.2.1 时,请求超时。
这是端口转发屏幕:
nmap -p 22,80 192.168.2.2
来自 192.168.0.1的结果
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.43 seconds
再次尝试-Pn
Nmap scan report for 192.168.2.2
Host is up.
PORT STATE SERVICE
22/tcp filtered ssh
80/tcp filtered http
Nmap done: 1 IP address (1 host up) scanned in 20.03 seconds
当我在 LAN 端连接时,因为 192.168.2.3nmap -p 22,80 192.168.2.2
导致:
Nmap scan report for 192.168.2.2
Host is up (0.0023s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: [redacted] (Dell)
Nmap done: 1 IP address (1 host up) scanned in 16.94 seconds
配置:
联邦水务局sudo ufw status
Status: active
To Action From
-- ------ ----
Samba ALLOW Anywhere
Apache ALLOW Anywhere
22/tcp ALLOW Anywhere
25665 ALLOW Anywhere
25565 ALLOW Anywhere
Samba (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
25665 (v6) ALLOW Anywhere (v6)
25565 (v6) ALLOW Anywhere (v6)
Netplan 配置:
network:
ethernets:
enp0s25:
addresses:
- 192.168.0.254/24
- 192.168.2.2/24
routes:
- to: default
via: 192.168.2.1
nameservers:
addresses: [192.168.2.1, 192.168.0.14, 192.168.0.1, 8.8.8.8, 217.113.224.36, 217.113.224.134]
version: 2
sshd_配置:
Include /etc/ssh/sshd_config.d/*.conf
PermitRootLogin yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
PasswordAuthentication yes
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
PasswordAuthentication yes
尝试在端口 3000 上运行 docker 镜像:docker run -d -p 3000:3000
。我在 UFW 中打开了端口,在路由器配置中转发了端口,但没有成功。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
15f9c323ad30 ghcr.io/saviusz/melon-server:dev "docker-entrypoint.s…" 34 minutes ago Up 34 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp Melon-Server-dev
答案1
在问题中添加其他信息后进行更新:
192.168.0.254/24
从接口中删除enp0s25
。
至于评论中你问的为什么这会破坏你的网络,用外行的话来说:它使192.168.0.0/24
范围内的任何地址成为 LAN 网络的一部分。这意味着任何发往(返回)该范围内任何地址的数据192.168.0.0/24
都不再通过默认网关,因此将不再被路由。它在某种程度上停留在没有目的地的 LAN 内。
如果您想了解实际发生了什么,您需要详细了解 IP 寻址的工作原理。YouTube 上有很多书籍或在线教程和视频(几乎都是基本/基础的网络知识)。问题发生在第 2 层封装上,它没有使用默认网关的 MAC 地址,而是尝试在 LAN 上查找 IP 的 MAC 地址(通过 ARP 请求),而 LAN 上不存在该地址,因此数据包/帧被丢弃。
原始答案:
您的“路由器”或者更好的 ZTE MF286D 设备(它实际上是一个一体化设备,包含路由器、交换机、AP 等)可能配置不正确。
您不能同时使用 WAN 和 LAN1 端口,因为它们物理上是同一个端口:
默认模式下WAN口来自手机SIM卡,若要使用WAN口需设置为“有线宽带模式”,LAN口2~4为LAN网络。
端口转发设置应该没问题,所以我估计问题出在其他地方。你唯一可以尝试的是使用不同的 HTTP/HTTPS 端口,有些路由器使用默认端口通过 WAN 端口进行远程设置(并且不会在该端口上转发)。
请注意,在标准设置中,ZTE 最有可能启用 NAT 和 DHCP。我不知道 ZTE 设备上是否有任何防火墙设置,我找不到任何用户指南,只有快速设置指南,其中没有提供有关设置选项的详细信息。
也可能是 UFW 配置错误(例如 LAN 和 WAN 的规则不同)。您需要更具体地提出您的问题。如果您希望社区帮助您进行故障排除,您应该发布任何相关设置页面以及设备和服务器的设置页面(ZTE WAN 配置、LAN 配置、NAT、UFW 配置等)。不要只用文字总结您的设置,请用屏幕截图等展示它。