Windows通过非445端口访问Samba
文章目录
原理
由于外网的445端口经常被封,所以有时候我们会将samba服务设置在非445端口上。但是windows又无法指定端口来访问samba服务。本文不讨论服务器的端口设置或frp转发之类,仅讨论windows如何访问非445端口的samba服务。
其原理就是在127.0.0.1
上将外网的samba端口映射到445端口上,本机访问外网samba服务时,直接访问127.0.0.1
的445端口即可。
假设
- 外网IP:
example.com
- 外网samba端口:
28888
- 共享文件夹名称:
share
步骤
空出本机的445端口
查询445端口的占用情况
netstat -ano | findstr 445
如果有反馈显示,且PID是4,则一般是局域网发现服务占用了
关闭局域网发现服务
- 运行
services.msc
- 找到
Server
服务(服务名称是LanmanServer
)禁用并关闭 - 重启电脑
验证445端口的占用情况
再次运行netstat -ano | findstr 445
确认445端口是否已经空出(无返回信息)。
端口转发
设置端口转发
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=example.com connectport=28888
确定端口转发是否成功
netsh interface portproxy show all
验证端口转发
再次运行netstat -ano | findstr 445
确认445端口是否转发成功(返回PID不是4)。
挂载磁盘
访问\\127.0.0.1\share
即可访问到外网的samba共享。
其他操作
设置开机启动
上述的端口转发,在机器重启后又会实效,所以只能把设置端口转发的命令写成一个脚本放到shell:start
启动文件夹下。
@echo off
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=example.com connectport=28888
删除端口转发
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445
重置所有端口转发
netsh interface portproxy reset
参考资料
文章作者 Evan Yu
上次更新 2022-08-09