动机:
我正在尝试使用 PuTTY、Bitvise SSH 客户端或类似软件通过 SSH 隧道将 SMB 连接代理到远程网络。
这与其他服务(例如 HTTP(S))配合良好。
为了避免在当前接口(无论是 Wi-Fi 还是有线设备)上禁用 SMB,我选择设置环回适配器并将隧道的侦听器绑定到它。
Loopback adapter
`-- SSH Tunnel listening on port 445
`-- SSH to remote host
`-- Proxy to FreeNAS file server, port 445
然后,打开 explorer.exe 并访问环回适配器的 IP 地址或其等效的本地 lmhosts 条目,应通过隧道代理往返于远程 FreeNAS 文件服务器的流量。
\\192.168.0.2 or
\\freenas
问题:
反向 SSH 隧道的本地端口绑定尝试失败,因为 lanmanserver 默认监听所有接口。
运行以下命令表明它确实在监听所有接口(0.0.0.0)。
netstat -ano | findstr 445
尝试的解决方案:
经过几个小时的搜索,我发现了这篇文章:
为了找出环回接口的 GUID,我使用了非常有用的 ShareFix 脚本:
https://github.com/filippobottega/ShareFix
然后我继续删除与相应 GUID 匹配的所有条目,从绑定钥匙。
完成后,我重新启动了。
不幸的是,lanmanserver 仍然在所有接口上监听。
问题:
还应该做什么来防止 lanmanserver 绑定到该特定接口?
我是否遗漏了一些关键的东西?
答案1
我在微软网站上发现了以下内容:
https://support.microsoft.com/en-gb/help/204279/direct-hosting-of-smb-over-tcp-ip
NetbiosSmb 是一个全局设备,不以每个适配器为基础进行绑定。这意味着,如果不完全禁用 Microsoft 网络的文件和打印机共享,则无法在 Windows 中禁用直接托管的 SMB。
解决方案:(撰写本文时)
禁用 lanmanserver:
https://winaero.com/blog/disable-service-windows-10/
这可能并不是一件坏事,特别是如果您的 Windows 客户端只需要访问中央服务器上的 SMB 共享。
如果有人对 Windows 及其设计选择有深入的了解,可以解释一下为什么它是全部,或者什么都不是,这可能会很有用?
我读过一些可能虚假的言论,称禁用 lanmanserver 会导致“不良后果”。请分享。