前言
基于安全的考虑,服务器端的SMB(共享文件夹)应用通过FRP等工具将SMB应用的445端口映射到了公网IP的其他端口,或者直接修改了SMB的默认端口(可参考最后一节目录)
客户端无法像SSH一样通过\\IP:端口
访问远程SMB,所以必须在客户端进行一系列配置进行访问
客户端(win10)操作步骤
重点:转发之后访问的应该是\\127.0.0.1\
,而不是\SMB服务器IP\。几乎所有人都转发失败应该都是这个原因
我这里的公网IP为
117.73.12.12
,服务器端SMB映射到了30445
端口
根据自己的情况修改
- win10 右键开始菜单 - Windows PowerShell(管理员),以管理员模式打开PowerShell,输入以下命令配置一个端口转发:
netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=30455 connectaddress= 117.73.12.12
效果就是本机访问127.0.0.1的445端口时,会转发到远程IP地址(117.73.12.12)的30445端口
- 查看端口转发配置列表,可以看到已经成功转发
netsh interface portproxy show all
- 打开系统服务管理器,找到server,右键属性–> 启动类型改为禁用,然后重启电脑,再次查看服务状态,没有正在运行就是成功了
单击开始菜单,依次点击所有应用→Windows系统→运行
快捷键:win+R键,打开运行,在输入框中输入:services.msc,确定打开。
-
可以执行
netstat -ano | findstr 445
命令,查看端口放开情况 -
打开电脑的文件资源管理(此电脑),在地址栏输入
\\127.0.0.1\
就可以访问了
注意:一定是输入\\127.0.0.1\
恢复步骤
用完以后,可以打开server的启动,并且删除转发
删除转发的命令:
netsh interface portproxy delete v4tov4 listenaddress=欲删除项目的监听IP listenport=欲删除项目的监听端口
netsh interface portproxy delete v4tov4 listenport=445 listenaddress=127.0.0.1
附:服务端修改SMB的端口
netsh interface portproxy add v4tov4 listenport=希望被修改成的端口 listenaddress=127.0.0.1 connectport=445 connectaddress=127.0.0.1
修改完记得检查服务端的防火墙是否放通了这个端口
附:动态域名配置方法
创建一个bat文件,粘贴以下内容
- @ECHO OFF
- ipconfig /flushdns
-
- netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445
- Set ip=
- For /f "skip=1 tokens=2 delims=[" %%a in ('ping 替换为域名 -n 1 -w 10') do (
- For /f "tokens=1 delims=]" %%b in ("%%a") do (
- Set ip=%%b
- )
- )
-
- netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=替换为端口号 connectaddress=%ip%
把上面的“替换为域名”、“替换为端口号”,改为你的域名和端口号,保存为bat文件,并用windows的计划任务,用管理员权限每天定时运行。