Windows配置端口转发绕过SMB 445端口限制

为预防勒索病毒利用445端口SMB协议上的漏洞大肆传播,各大运营商都相继屏蔽了445端口。并且在Windows上,不管是服务端还是客户端的445端口都是写死的,无法更改,所以为了能够继续使用Windows上的SMB服务,只能通过配置端口转发来实现连接。

服务端配置


说明
如果是直接购买的云服务商的文件存储NAS服务,出于数据安全性考虑,云服务商的NAS服务默认都是不对公网暴露的。如果您的业务场景对数据传输的安全性要求不高,需要通过公网直接访问NAS的话,可以直接选择购买NAT网关或者负载均衡SLB将NAS服务映射到非445端口上,无需进行以下操作。

  1. 在任务栏搜索框里输入“cmd”,右键选择“以管理员身份运行”,打开命令提示符窗口,执行以下命令添加端口转发规则。
1
2
netsh interface portproxy add v4tov4 listenport=<自定义非445端口> listenaddress=0.0.0.0 connectport=445 connectaddress=<SMB服务器IP>
REM 示例:netsh interface portproxy add v4tov4 listenport=6655 listenaddress=0.0.0.0 connectport=445 connectaddress=192.168.0.9

说明
删除端口转发规则命令如下:

1
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=<自定义非445端口>
  1. 运行以下命令查看转发规则。
1
netsh interface portproxy show all

客户端配置


说明
本节内容在Windows系统首次挂载时才需要操作

关闭本地445端口占用

  1. 按“Win+R键”,输入“cmd”回车,打开命令提示符,执行以下命令,检查本地445端口是否被占用。
1
netstat -ano | findstr ":445"

说明
如果返回如下类似信息,则表示本地445端口被占用,继续以下操作,反之则跳过本小节。

1
2
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP [::]:445 [::]:0 LISTENING 4
  1. 按“Win+R键”,在运行窗口中输入“regedit”回车,打开注册表编辑器。

  2. 依次点击注册表选项“HKEY LOCAL MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters”。

  1. 在Parameters这个子项的右侧,点击鼠标右键,选择“新建”-“QWORD(64位)值”。

  1. 然后将子键的名称设置为“SMBDeviceEnabled”,数据值设置为0

  1. 按“Win+R键”,输入“services.msc”回车,打开服务窗口,找到名为“Server”的服务,双击打开属性,将启动类型改为禁用,最后点击确定。

  1. 重启电脑

  2. 按“Win+R键”,输入“cmd”回车,打开命令提示符。执行以下命令,确认本地445端口没有被占用。

1
netstat -ano | findstr ":445"

配置本地端口转发

  1. 在任务栏搜索框里输入“cmd”,右键选择“以管理员身份运行”,打开命令提示符窗口,执行以下命令添加端口转发规则。
1
2
netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=<自定义非445端口> connectaddress=<SMB服务器IP>
REM 示例:netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=6655 connectaddress=192.168.0.9

说明
删除端口转发规则命令如下:

1
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445
  1. 运行以下命令查看转发规则。
1
netsh interface portproxy show all

访问验证


在客户端按“Win+R键”,输入“\\127.0.0.1”回车,挂载成功ヾ(^▽^ヾ)