• Winows通过非445端口远程访问公网Samba


    本人家里用的软路由,PVE下虚拟安装了CentOS,并安装了Samba服务,在家庭局域网访问和共享文件很方便,如果想在公司电脑和手机也能随时随地访问资源,就需要实现公网访问,但 Samba 的默认端口是445,公网因为 smb1 漏洞等安全原因445端口全部封了; Windows 系统默认不提供非445端口的samba访问,所以需要用端口转发实现访问。

    前提

    有内建 Samba 的服务器(电脑),有公网IP,路由器做了端口转发,并对域名做好DDNS,也可以直接IP访问,但一旦路由器重新拨号,IP变化之后,需要重新设置;没有公网IP的需要用到其他内网穿透如frp等,本文暂不涉及。

    假设

    1、内网samba服务端口:445

    2、公网IP:123.123.123.123

    3、公网端口:44500

    4、做好DDNS的域名:smb.domain.com

    流程

    1、用管理员账号打开CMD,以下命令查询445端口占用情况

    netstat -ano | findstr 445

    可以看出是pid为4的进程进行监听,从任务管理器上看是名叫System,备注"NT Kernel&System"。

     

    2、本地 Windows 电脑打开:控制面板-所有控制面板选项-Windows工具-服务-Server,启动类型改为“禁用”,并停止服务,如下图:

     

    3、重启机器,再次用步骤1种命令查看445端口占用情况,应该是无占用信息(没有返回信息)。

    4、利用 Windows 自带的端口转发 netsh interface portproxy 命令,修改端口转发(如果使用IPV6网络,也需要进行端口转发,具体的参照 netsh interface portproxy 使用帮助)

    netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=smb.domain.com connectport=44500

    5、用以下命令查询端口转发是否设置成功(IPV6 同理)

    netsh interface portproxy show all

    应该可以看到相关转发信息,说明转发成功。

    6、用步骤1中命令,查看445端口占用情况,此时的进程ID应该不是4,说明成功了。

    7、磁盘挂载(注意,IP地址为本机地址127.0.0.1)。

    8、删除端口转发:

    netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445

     9、重置所有端口转发:

    netsh interface portproxy reset

    解决重启失效

    以上方法在Win10,Win11电脑上有个缺陷,目前还没有好的解决方法,就是电脑重启失效,查看的话,转发是存在的,但就是无法实际转发,所以,没办法,只能自己写个批处理命令,每次重启以后运行一次或加入计划任务里自动运行。

  • 相关阅读:
    个人总结21
    个人总结08
    个人总结07
    构建之法读后感01
    学习进度表 03
    四则运算3
    求最大值
    学习进度表02
    四则运算 2
    学习进度表01
  • 原文地址:https://www.cnblogs.com/kimshen/p/15660852.html
Copyright © 2020-2023  润新知