问题描述
在极空间上用docker部署了个frp来内网穿透,其它端口都正常,在尝试内穿smb端口445时出了问题,本地局域网内的电脑直接连接什么问题都没有,但是当连接内网穿透的服务器时就是连不上。
虽然极空间的Windows端也提供了挂载的功能,但是功能很鸡肋,如图,只要是大点的文件直接就废了,它不能做到直接原文件上传,而是非要再复制一份再进行上传。

一番搜索后发现445端口被运营商屏蔽了,没办法连接,这个时候很蛋疼的地方就来了,Windows的文件资源管理器虽然可以直接用smb协议映射,但是它的端口是写死的,不能指定特定端口,虽然可以让frp把smb端口指定成别的,但是连接端的Windows电脑没办法连。

解决方案
依然是使用Windows资源管理器,但是尝试让它连接到我们想要的端口。
设置IP端口转发规则
netsh interface portproxy add v4tov4 listenport=445 listenaddress=localhost connectport=目标端口 connectaddress=目标IP
例如我要把访问127.0.0.1:445的请求都转发到192.168.31.1:1000,命令如下
netsh interface portproxy add v4tov4 listenport=445 listenaddress=localhost connectport=1000 connectaddress=192.168.31.1
查看是否设置成功
netsh interface portproxy show all
重启电脑,让SMB 1.0协议和端口转发服务生效
使用第三方工具进行转发
可以尝试Muti Port Forwarder,这个工具是需要授权的,我们所需要用到的功能是免费的,但依然需要我们手动去授权一下。


访问官网多端口转发器 |维里吉奥(开梯),点击Basic授权下的Get,然后在购物车页面就能看到免费的授权码了。


直接进行在线激活,但是这里最好开全局梯,如果不能激活的话就选择离线激活,选择Create and save License Request,把文件保存备用,访问下面给出的网址。

在License request file里将刚刚保存的文件选择上传,之后就可以下载到授权文件,回到工具点击Load and Apply the License,选择下载的文件,即可激活使用。

添加规则,Direction选择Outgoing出方向,协议选TCP,Remote的Port写445,在右侧的Remote Port写你需要映射的端口,比如frp映射出的端口是555,这里就填555。
然后回到Windows映射网络驱动器,输入地址即可正常连接了。
使用第三方工具替代
以下引用ChatGPT的回复
1. WinSCP(免费,功能强大)
支持 FTP/SFTP/WebDAV,但通过插件或内嵌方式也支持 WebDAV、S3 等。
不原生支持 SMB,但你可以通过搭配 WebDAV over SMB 网关 来使用。
显示风格接近资源管理器 + Total Commander 的混合。
🔗 下载地址:https://winscp.net/
2. Cyberduck(免费,开源)
原生不支持 SMB,但支持 WebDAV / SFTP。
可用搭配 Samba-to-WebDAV 网关 或通过内网转发等方式。
🔗 下载地址:https://cyberduck.io/
3. Total Commander(强烈推荐)
支持插件,可安装
Lanman插件来支持 SMB。插件配置灵活,可以通过修改 ini 文件或用插件指定端口。
风格接近早期 Norton Commander,但功能非常强大。
🔗 官网:https://www.ghisler.com/
🔌 插件地址:https://totalcmd.net/plugring/Lanman.html
4. 使用 rclone(轻量、可指定端口)
rclone 是一款跨平台命令行工具,支持挂载、同步各种云存储,也支持 SMB 协议。
使用方式:
rclone mount remote: Z: --vfs-cache-mode full需要在 rclone config 里配置一个 SMB remote,可以手动指定端口:
[smb]
type = smb
host = 192.168.1.123
port = 1445
username = youruser
password = yourpassword📌 优点:
支持挂载为盘符
支持指定端口
性能不俗
有 Windows GUI 管理工具
🔗 官网:https://rclone.org/
参考文章