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

posted @   幻月无名  阅读(5604)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示