持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
前言
-
玩过nas的都知道smb文件共享服务走的445端口都是被运营商封杀的,因为之前流行的“永恒之蓝”漏洞就是借用445端口实现的,所以导致现在家里搭建的smb服务,外网就无法访问,并且windows系统写死了smb服务只能走445端口,但是这就能阻挡我们这些爱折腾的小伙汁了嘛😄
,怎么可能嘛,接下来就是相关教程。
-
需要准备:已经搭建好的smb服务端、与服务端不处于同一内网的windows电脑。
我的环境(每个人不一定相同)
- 我在家里使用了贝壳云机器(带有多个USB3.0)并通过线刷刷入了armbian系统,并将一块文件格式为ntfs的多余移动硬盘插入USB口。
- 搭建并配置好smb服务端(过程省略,以后再写专门教程)。
- 有公网IP,在路由器上将此设备设置DMZ主机,这样就不用每个端口都做端口转发了。
- 确保了内网访问没问题!
贝壳云
实现原理
将smb服务端的默认445端口改为自定义的端口(在配置文件里改),windows端将本来的smb服务关闭,然后利用windows自带的本地端口转发代理,把服务端的IP和自定义端口代理和转发至本地445端口上,便可大功告成!以下是详细步骤。
步骤
服务端
-
配置文件里
global里加上一句smb port = 6727(可自定义端口,注意空格),如下图。smb.conf
-
重启smb服务
bash
service smbd restart
windows端
- 以管理员身份运行cmd。
带管理员权限启动cmd
-
运行以下命令(注意空格)
cmd
sc config LanmanServer start= disabled \这命令是将“文件共享服务”(也就是windows自带的smb)改为禁用状态 net stop LanmanServer \这命令是停止现在在运行的smb服务 sc config iphlpsvc start= auto \iphlpsvc是IP转换还有为端口代理提供隧道的服务,这命令是将此服务设为自动启动状态 netsh interface portproxy add v4tov4 listenport=445 connectaddress=服务端的IP或者域名 connectport=服务端设置的smb自定义端口 \这是windows的v4地址转v4地址的端口转发命令。
ps:以上命令也可手动去此电脑右击管理->服务里一个一个手动操作,但我更喜欢命令行,在服务里iphlpsvc叫做iphelper,这个端口转发最依赖的服务便是它。
运行图
-
重启
一定要重启不然不会生效!!
-
右击此电脑选择映射网络驱动器
此电脑
-
选择一个盘符,地址输入
127.0.0.1\share,因为是进行了本地的端口转发,现在这个smb服务就是将服务端的自定义端口在本地的445端口运行了,所以要使用127.0.0.1,这也是代表本地主机的IP。映射驱动器
-
结果图如以下网络位置
结果图
-
补充命令
cmd
netsh interface portproxy show all \查看在本机做的所有端口转发 netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445 \删除掉指定的端口转发,如果做端口转发时没有输入listenaddress,那删除时也可不需要。
问题
-
有些人的系统出现问题开机
iphelper已经是自动的状态就是开机不自启,导致刚开机就无法连接到此驱动器,正常情况都是可以开机就能直接使用。 -
解决方案如下:
1、新建文本文档->输入以下内容->将后缀改为bat。
bat脚本内容
2、右击此电脑->管理->任务计划程序->创建任务按照以下图里设置即可。
常规
ps: 输入名称(随便输入),点击更换用户和组输入
system(这样本身bat运行会出现的弹窗便不会在你这个用户界面弹出),点确定。3、点击触发器->新建,设置为下图。
触发器
4、点击操作->新建->操作为
启动程序,点浏览找到bat脚本所在位置。设置为你bat脚本所在的位置
4、条件设置为下。
条件
5、重启
其他
- 这样做后,我就可以随时随地多了一块磁盘在电脑里,随时可备份或者存入一些文件。
- 能正常用就不用把解决方案走一遍,出现问题再走。
- 后期遇到问题或者有更好的方案我再更新!欢迎补充!
- 毕竟是公网服务,要小心小心再小心!