Windows10 SMB协议映射将非标准端口映射到445端口

Posted by 橙叶 on Thu, Sep 16, 2021

SMB的标准端口是445,这个端口在Windows系统上是固定的。

但是,Linux上的samba服务是允许设置445以外的端口的,或者出于各种原因,SMB服务被映射到了其他端口,这时候就没办法在Windows系统的资源管理器里直接挂载了。

这里介绍一种方式,用本地端口转发的方式将非445端口转发到445。

创建本地环回网卡

这一步是为了在本地挂载多个SMB服务。

如果只挂载一个SMB,直接把端口映射到本地的127.0.0.1就可以了。但是这样做有两个问题,

  1. 你就只能挂载这一个了
  2. 即使没有打开文件夹共享,本地也默认有一个SMB服务在445端口运行。你需要在服务里把它关掉,端口映射才会起作用。

所以这里再额外添加一块虚拟的网卡,用来承载445监听端口。

Step 1 创建硬件

在“运行”里输入hdwwiz打开“添加硬件”窗口。或者从设备管理器->操作->添加过时硬件打开,但是在Windows11中已经没有这个选项了。

在打开的窗口里,选择下一步->安装我手动从列表选择的硬件->网络适配器,然后找到Microsoft->Microsoft KM-TEST 环回适配器

image-20210916184553665

选择下一步,安装。

用管理员运行Powershell或CMD,输入命令

ipconfig /all

这个命令会列出设备上的所有网卡,包括刚才添加的那个。

image-20210916184828142

注意这个网卡的名字,上图里显示的是“以太网 2”,

给这个网卡指定一个ip地址:

netsh interface ip add address "以太网 2" 1.10.0.2 255.255.255.0

如果你需要挂载多个SMB,可以用如上方法给这个网卡再添加几个IP地址。

image-20210916185350615

Windows的端口转发

WIndows的端口转发命令为:

netsh interface portproxy add v4tov4 listenaddress=监听地址 listenport=监听端口 connectaddress=连接地址 connectport=连接端口

即将连接地址上的连接端口(这个端口上正运行着SMB服务),映射到监听地址的监听端口。

假设127.0.0.1上有一个端口号为20445的SMB服务,我们要把它映射到1.10.0.2(刚刚添加的网卡的地址)的445端口。

netsh interface portproxy add v4tov4 listenaddress=1.10.0.2 listenport=445 connectaddress=127.0.0.1 connectport=20445

查看刚刚设置的端口

netsh interface portproxy show all

image-20210916185818317

在运行里输入\\\1.10.0.2\[共享名],看能否正常访问。

image-20210916190310935

如果不行的话,尝试重启电脑。



comments powered by Disqus