我之前曾成功进行过一些端口转发,但突然遇到了这个我不知道如何解决的问题。我在端口 137-139 和 445 上托管了一个 samba 共享,通过其本地 IP 地址 (192.168.xx) 地址访问设备可以正常工作 - 我可以查看共享。
但是,当我从正确的本地 IP 地址转发路由器中的正确端口并通过我的公共 IP 地址访问它时,它可以正常工作;但是当其他人尝试时,端口看起来是关闭的。没有在线端口扫描器,也没有我联系过的朋友可以连接到共享或看到开放端口,即使使用与我和我的公共 IP 完全相同的命令。我猜我的路由器支持发夹技术,因为我可以随时访问我的公共 IP,但是为什么当我使用我的公共 IP 地址时,它对我的行为与对其他人的行为不同?
我的路由器型号是 ASUS RT-AC85P,我将共享托管在 Raspberry Pi 3 Model B+ 上。我之前已经能够进行端口转发,所以这不是我的 ISP 的问题,而是我的路由器的问题,因为我最近才更换了它。
答案1
为什么当我使用我的公共 IP 地址时,我的行为与其他人的行为不同?
可能是因为 RPi 有基于 IP 的防火墙规则,正如评论中所建议的那样,但我怀疑是你的 ISP 阻止了连接——许多 ISP 封锁了端口 137-139 和 445 具体来说,即使他们不阻止其他任何东西。(Windows 内置的 SMB 服务曾多次成为主要攻击目标,因此他们不想冒险。)
当您访问自己的公共 IP 地址时,您只是直接与路由器通信,而不通过 ISP 的连接。(这也是路由器需要专门支持发夹式连接的原因之一。)另一方面,当您从外部连接时,ISP 过滤将适用,数据包甚至不会首先到达路由器,因此您的端口转发规则对此无能为力。
如果您需要远程访问服务器(并且必须通过 SMB 进行访问),请在您的家庭网络中设置 VPN。否则,请考虑使用 SFTP(SSH)进行偶尔的远程访问。
(请注意,所有相对现代的 SMB 软件只需要 TCP 端口 445。只有在使用 Win2000 之前的系统时才需要 137-139,在这种情况下真的应该在 VPN 内部进行。