一、 前言
SMB(Server Message Block)是一种网络文件共享协议,广泛应用于 Windows 系统之间的文件和打印机共享。然而,SMB 服务通常运行在内网中,当您身处外部网络(如公司网络访问家庭 NAS)时,无法直接连接。内网穿透技术可以解决这一问题。
之前写过很多有关frpee内网穿透的案例教程,本次分享穿透smb服务并通过windows访问,算是步骤最为复杂的一个穿透案例
穿透smb服务难点:
默认445不能公网访问,必须更换其他非445端口。
windows连接smb只能用445默认端口,不能指定其他端口。
如何将其他端口映射至本地445端口。
上述难点可以概述为:公网445端口被封禁,穿透时只能指定其他端口,但windows连接smb只能用445端口,指定端口号则网络连接失败,想办法将远程其他端口映射到本地445端口,通过访问127.0.0.1:445实现访问远程smb服务
二、 操作步骤
步骤 1:通过frpee客户端将smb服务穿透到公网
frpee客户端下载快速入口,可以使用图形化客户端,也可以使用frpc命令行工具实现穿透

步骤 2:禁用本地被占用的445端口
参考下方文章,过程写的很详细,且内容正确
禁用 Windows 共享服务,释放 445 端口
https://www.cnblogs.com/niewd/p/10948803.html
windows共享服务服务使用 445 端口进行通信,我们可以通过命令来确认该端口被占用。
netstat -an | findstr :445
一键获取完整项目代码
我们可以打开服务 (services.msc),在其中找到LanmanServer,右键进入属性,选择禁用和停止即可。
然而要使 Windows 释放 445 端口,除了停止服务,我们还需要重启一次计算机。
重启完成后,再执行之前执行过的 netstat -an | findstr :445 命令,我们会发现原先被占用的端口已经被释放了。

步骤 3:配置端口映射至本地445
以管理员权限打开CMD
执行端口映射命令(关机失效,默认不会随系统启动自动生效,每次开机执行或脚本处理)
(1)添加本地映射
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=free.frpee.top connectport=4545
(2)显示映射
netsh interface portproxy show v4tov4
侦听 ipv4: 连接到 ipv4:
地址 端口 地址 端口
------------- ------------ --------------- -----------
127.0.0.1 445 free.frpee.top 4545
(3)删除映射(如不需要)
netsh interface portproxy delete v4tov4 listenport=445 listenaddress=127.0.0.1
查看本地只有一个监听445端口的服务即可

步骤 4:windows连接到远程smb服务



步骤 5:Android手机连接到远程smb服务
推荐使用CX文件管理器,添加smb映射可直接指定端口号,简单方便

五、 安全提醒与总结
强密码:务必为 SMB 共享账户设置高强度密码。
通过以上步骤,您已经成功地使用 FRP 穿透了 SMB 服务,并能在任何地方的 Windows 电脑上安全便捷地访问您的内网文件资源,windows使用过程虽繁琐鸡肋,但是可以学到很多基础知识。
————————————————
版权声明:本文为CSDN博主「xnkyn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xnkyn/article/details/154950074