smb服务访问

843 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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.conf

  • 重启smb服务


    bash

    service smbd restart
    

windows端

  • 以管理员身份运行cmd。

带管理员权限启动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脚本内容

    bat脚本内容

    2、右击此电脑->管理->任务计划程序->创建任务按照以下图里设置即可。

    常规

    常规

    ps: 输入名称(随便输入),点击更换用户和组输入system(这样本身bat运行会出现的弹窗便不会在你这个用户界面弹出),点确定。

    3、点击触发器->新建,设置为下图。

    触发器

    触发器

    4、点击操作->新建->操作为启动程序,点浏览找到bat脚本所在位置。

    设置为你bat脚本所在的位置

    设置为你bat脚本所在的位置

    4、条件设置为下。

    条件

    条件

    5、重启

其他

  • 这样做后,我就可以随时随地多了一块磁盘在电脑里,随时可备份或者存入一些文件。
  • 能正常用就不用把解决方案走一遍,出现问题再走。
  • 后期遇到问题或者有更好的方案我再更新!欢迎补充!
  • 毕竟是公网服务,要小心小心再小心!