Win10上通过nginx代理配置远程非445端口SMB

时间:2025-01-25 15:55:08

引言

家里架了一个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服务器了,如果一切正常,建议再重启试一下。