这里也曾有人问过类似的问题(Windows 文件资源管理器使用端口 80 (webdav) 而不是 445 (samba smb cifs) 作为 UNC 路径),然而这个解决方案并不符合我的目的。
我最近设置了一个 OpenVPN 解决方案,并尝试使用它来连接到其他计算机。我已完成所有设置,但现在我一直尝试通过 SMB 连接到这些计算机。
当我尝试通过 SMB(使用net use
、Windows 资源管理器或其他任何程序)在本地(192.168.xx)进行连接时,Windows 将正常使用端口 445。但是,当我尝试连接到远程网络(192.168.yy)时,Windows 决定需要使用端口 80 和 135。当然,80 会失败,而 135 没有我尝试使用的服务。
TCP/IP NetBIOS Helper 服务正在运行(在本地子网中运行良好)。当我禁用 Web 客户端服务(即使它没有运行)时,Windows 将跳过端口 80 尝试并直接转到远程网络的端口 135。我在网络设置中同样更改了提供商的优先顺序,但这并没有改变任何东西。
如何告诉限制 Windows 使用仅有的端口 445 用于 SMB?这似乎与它不在本地子网中有关。
如果重要的话,客户端正在使用 Windows 7 Pro x64。
答案1
是的,有可能。
仅供参考(或仅供参考),端口 135 用于 NETBIOS,它仅在本地广播域内起作用,除非有 WINS 服务器,而 WINS 服务器基本上已经没有人拥有了。这就是为什么您会看到基于您所在子网的不同行为。
以下端口与文件共享和服务器消息块 (SMB) 通信相关:
- Microsoft 文件共享 SMB:用户数据报协议 (UDP) 端口 135 至 139 和传输控制协议 (TCP) 端口 135 至 139。
- 没有网络基本输入/输出系统 (NetBIOS) 的直接托管 SMB 流量:端口 445(TCP 和 UPD)。
为了改变这种行为,你基本上需要禁用 TCP/IP 上的 NETBIOS。这可以在机器的网络适配器上完成,甚至可以由 Windows DHCP 服务器完成,具体取决于你的偏好。这是 Windows 领域,这被称为“直接访问 SMB”,微软知识库介绍了如何强制直接访问 SMB,请参见此处。
(是的,该 KB 也适用于 Windows 7 和 Vista,即使它们不在适用操作系统列表中 - 默认情况下,Windows 7 和 Vista 从 DHCP 服务器获取其通过 TCP/IP 的 NETBIOS 设置,并且我还没有看到我没有设置的禁用通过 TCP/IP 的 NETBIOS 的服务器。)