Windows 10 客户端,使用文件资源管理器,OpenVPN Connect 客户端 3.3.4,无法访问正在运行的 OpenVPN 服务器(2.4.11 arm-openwrt-linux-gnu)上的具有访客访问权限的 SMB 共享。
作品:
- 在 LAN 上(不使用 OpenVPN)使用访客访问(无用户登录提示)时可以通过 Windows 10 文件资源管理器连接到 SMB 共享
- OpenVPN Connect 客户端连接到 OpenVPN 服务器,可以访问 LAN Web 服务器、ping 机器等
- 可以通过原始 TCP 连接连接到 NAS 上的端口 445
- 可以使用 Android OpenVPN Connect 通过 SMB 访问 NAS 文件,也可以使用 SMB 访客访问通过 SMB 文件浏览器访问
不起作用:
- 从 Windows 10 文件资源管理器连接到 SMB 共享。提示输入用户名/密码(它不应该,尽管它至少表明 TCP 级别连接成功)。无论使用什么用户名都会失败
在 Windows 10 客户端上尝试过(包括各种组合):
- 通过 gpedit.msi 将 OpenVPN 客户端创建的适配器置于专用网络
- 为公共网络启用文件共享和网络发现
在 NAS 上尝试过:
- 创建 SMB 用户并尝试使用该用户登录
- 在 OpenVPN 服务器设置中,强制所有流量通过 VPN(以确保 Windows 在尝试建立 SMB 连接时不会绕过 VPN)
- 确保 SMBv1 已禁用
因此,这似乎是 OpenVPN 客户端配置上的问题,或者是 Windows 在“聪明”并“保护”我,但我所做的一切都无法让我通过 OpenVPN 访问 NAS 上的 SMB 共享。
更新:肯定是 Windows 的问题。在同一台 Windows 客户端计算机上,尝试使用 Linux VM,并将 OpenVPN 连接到主持人并且 VM 使用此连接,则在文件管理器 (KDE Dolphin) 中访问 smb://192.168.0.1 没有任何问题。那么为什么它在 Windows 主机上不起作用?为什么它一直要求输入用户/密码?
更新:嗯,根据 Windows 诊断,显然“SMBHelperClass LowHealth 诊断状态 1 [DS_CONFIRMED] HRESULT 0 [64 ms] 描述:您的用户帐户无权访问“磁盘”。这太荒谬了,它可以作为没有用户/密码的访客访问。
答案1
为了方便后人理解,这是由一个众所周知的 Windows 安全功能引起的,该功能不允许使用 SMB2 进行访客访问。我认为这是 SMB 服务器或 OpenVPN 的问题(因此在 ServerFault 而不是 Superuser 上提问)。为什么它在 LAN 上工作正常,但在 OpenVPN 上却不行,这真是个谜。也许如果 Windows 客户端看到访客访问的是同一 LAN 上的 SMB 服务器,它就会允许,否则就不会。
无论如何,解决方案是添加具有值的AllowInsecureGuestAuth
键并输入随机用户名(即使没有用户名/密码,窗口仍然会要求输入用户名/密码)。1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters