引言
家里架了一个SMB文件服务器,想要远程访问,开了445端口,但仅限某些特殊网络可以远程访问,其他网络全部拒绝445端口,因此网上找了很多将Win10的SMB指向别的端口的教程,但所有教程均使用环回网卡解决,非常不优雅,因此我决定使用nginx将本机445端口代理为远程端口。
注意:本教程需要关闭本机445端口监听,也就是说本机无法再作为SMB服务器来共享文件了!!!!!!!
解除Win10的445端口占用
445端口默认会被Win10的文件共享服务给占用,nginx无法启动代理,因此需要将该文件共享服务关闭。
这里我参考了这篇文章,可以直接照做,但是我的电脑(系统LTSC2021,版本号21H1)只有LanmanServer这个服务,没有Browser这个服务,忽略即可。
禁用完成服务后需要重启电脑,然后使用
netstat -an | findstr :445
查看445端口占用,如果出来没有任何信息,则表示已解除占用。
配置nginx转发端口
打开nginx官方网站,点击 “nginx-版本号”,下载zip后将程序解压到某个路径中没有中文的文件夹下。
打开conf\
,在最下面一行添加以下内容:
stream {
upstream remote_smb_server{
server :12345; # 这里换成你的ip或域名,12345换成你的SMB端口
}
server {
listen 445; # 这里必须是445,表示监听本地445端口
proxy_connect_timeout 10;
proxy_timeout 600;
proxy_pass remote_smb_server;
}
尝试
返回根目录,运行,使用任务管理器查看是否有nginx进程,如果有,表明代理成功。
开机启动
为了更加优雅的开机即用,可以将nginx设置为开机启动。
使用运行窗口(快捷键:Win+R)输入shell:startup
,将指向你的的快捷方式放入该文件夹。
完整测试
你可以尝试使用\\localhost
来映射你刚刚定义的远程SMB服务器了,如果一切正常,建议再重启试一下。