我在 LAN 上有一个 Samba 共享,带有 2008 PDC/DNS。Smb 使用 AD 进行身份验证,我有几台可以正常连接的 Win7 机器。
我最近在局域网中添加了几台新计算机,它们的映像与其他机器相同(相同的软件等;不同的硬件,因此驱动程序不同),并且它们设置了相同的策略。
无论如何,我都无法让新机器连接到 samba 共享。我总是遇到Unspecified Error 0x80004005
或Network Path not found
。
我已经关闭了防火墙;将 LANMAN 身份验证设置为仅响应 NTLM/发送 LM 和 NTLM 响应/使用 NTLM 会话安全(如果在“本地安全策略”>“安全选项”中协商);尝试使用 ip 和主机名进行连接。
SMB 日志显示身份验证成功;但随后连接被客户端立即终止。
tcpdump 没有显示出任何值得注意的内容,只是当尝试通过主机名从客户端连接时出现未知的数据包类型错误:
ack 201 win 255 NBT Session Packet: Unknown packet type 0xABData: (41 bytes)
以下是该错误中的几行内容:
11:18:37.964991 IP 001-client.domain.local.49372 > smb.domain.local.netbios-ssn: P 1670:2146(476) ack 201 win 255 NBT Session Packet: Unknown packet type 0xABData: (41 bytes)
[000] AA 46 96 FA D5 99 33 75 0C C4 20 CE 26 42 F3 61 \252F\226\372\325\2313u \014\304 \316&B\363a
[010] F0 8C FB 65 18 17 40 A5 DB 42 BB 94 37 53 92 EC \360\214\373e\030\027@\245 \333B\273\2247S\222\354
[020] 55 98 7F C4 AE 3D 6B 10 C4 U\230\177\304\256=k\020 \304
11:18:37.964998 IP smb.domain.local.netbios-ssn > 001-client.domain.local.49372: . ack 2146 win 100
[编辑 strike:这原来是 arp 缓存的问题,客户端从 dhcp 获得了一个以前属于另一台机器的旧 ip]
我也不断收到这个错误:
[2012/09/10 11:50:00.529650, 2] smbd/sesssetup.c:1413(setup_new_vc_session)
setup_new_vc_session: New VC == 0, if NT4.x compatible we would close all old resources.
以下是 smb.conf,以防万一(虽然不知道其他机器是否运行正常):
[global]
workgroup = MYDOMAIN
realm = MYDOMAIN.LOCAL
server string = domain|smb share
interfaces = eth1
security = ADS
password server = 192.168.1.3
log level = 2
log file = /var/log/samba/%m.log
smb ports = 139
strict locking = no
load printers = No
local master = No
domain master = No
wins server = 192.168.1.3
wins support = Yes
idmap uid = 500-10000000
idmap gid = 500-10000000
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
[samba-share1]
comment = SMB Share
path = /home/share/smb/
valid users = @"MYDOMAIN+Domain Users"
admin users = @"MYDOMAIN+Domain Admins"
guest ok = no
read only = No
create mask = 0765
force directory mode = 0777
还有什么想法我还可以尝试或寻找吗?或者可能是什么问题?
谢谢。
更新 1
在其他机器上注意到“本地安全策略”>“LAN 管理器身份验证级别”未定义。无法通过 LSP 编辑器进行设置,因此必须进入 regedit 并删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\lmcompatibilitylevel
但是,这并没有解决问题。现在遇到了Accessing the resource '\\smb\share' has been disallowed
。或Unspecified Error
取决于我以谁的身份登录(普通用户 == 前者;管理员 == 后者)
更新 2
当你在 SF 上问一个问题,并在此期间不断寻找答案,却发现几个小时后你自己的问题重复出现在谷歌搜索结果的第一个位置时,这真是令人沮丧 ;)
更新 3
我在客户端上运行了 Wireshark,据我所知,Samba 端一切正常。我在协商协议请求中看到 NT 状态为 STATUS_SUCCESS(这很可能是身份验证成功,但不知道)。
一切都指向客户端本身的问题。在其他机器上,一切都按预期运行。包括在我的机器上运行的虚拟机。它使用管理员和普通用户凭据都可以工作。
注意:我尝试解决这个问题的客户端暂时关闭了防火墙并且没有音频/视频等。
我已经更新了 NIC 驱动程序,但只有 1 个 iface 可用。DNS 正在运行,我已将我能找到的所有设置与正在运行的 VM 和其他正在运行的机器进行了匹配。
越来越绝望任何想法一定很棒。
答案1
因此问题似乎是 secpol 被设置为数字签名通信(始终)。
修复方法:Secpol.msc > 本地策略 > 安全选项 > Microsoft 网络客户端:数字签名通信(总是)=> 禁用
谢谢。
编辑:
作为兔子话虽如此,最好更新 Samba 来处理要求,而不是禁用它以保持安全。
答案2
尝试在服务器上或仅在 Windows 客户端上启用 SMB 2 或 3。在注册表中将键值设置为 1 AllowInsecureGuestAuth
:
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\
答案3
如果 Samba 服务器运行的是 SMBv1,那么装有 Win10 的新机器就会出现问题,因为它们缺少 SMBv1 客户端功能。要启用该功能,请按照本指南来自 windowscentral.com:
- 打开控制面板(旧的版本,不是“触摸”版本)
- 单击“程序”。
- 单击打开或关闭 Windows 功能链接。
- 展开 SMB 1.0/CIFS 文件共享支持选项。
- 选中 SMB 1.0/CIFS 客户端选项。
- 单击“确定”按钮。
- 点击立即重启按钮(因为需要安装关机功能,所以确实需要重启)
答案4
我收到0x80004005
权限错误:
Client for Microsoft Networks
由于另一个原因,我的 WiFi 挂钩未处于活动状态Network panel
,并且:
- 更改网络安全:LAN 管理器身份验证级别为“发送 LM 和 NTLM 响应”
- 将 NTLM SSP 的最低会话安全性从“需要 128 位加密”禁用为“无最低安全性”。
可能还有:
- 卸载KB2536276。