![使用 AD 身份验证从 Windows 10 工作站使用 Redhat IdM 身份验证访问 Samba](https://linux22.com/image/733618/%E4%BD%BF%E7%94%A8%20AD%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E4%BB%8E%20Windows%2010%20%E5%B7%A5%E4%BD%9C%E7%AB%99%E4%BD%BF%E7%94%A8%20Redhat%20IdM%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E8%AE%BF%E9%97%AE%20Samba.png)
我花了 5 天时间在 Google 上搜索、进行测试用例以及分析网络流量,以便有人能为我指明正确的方向或了解出了什么问题,然后在这里发布了这篇文章。
场景:
我们有一台在 CentOS 7.5 上运行的 samba 4.7 服务器,该服务器锁定到该特定操作系统版本以实现驱动程序兼容性,并加入由 RedHat IdM 为特定网络管理的域(我们称之为区域 B)。在另一个网络上,我们有 Windows 10 桌面、Ubuntu 桌面和 Windows 服务器(一些具有共享),它们加入到 Active Directory 域(我们称之为区域 A)。这两个域具有信任关系,因此来自 AD 区域的用户可以在位于 RedHat IdM 区域内的服务器上进行身份验证。
Samba ---> RedHat IdM <--- 信任 ---> Windows AD <--- Windows 10 / Ubuntu 18.04 / Windows Server
当前问题:
区域 A 中的 Windows 客户端无法验证区域 B 中的 Samba 服务器上的文件共享,但区域 A 中的 Linux 桌面可以。Windows 客户端可以使用 AD 林中的凭据成功通过 SSH 连接到 Samba 服务器。
目前已完成的故障排除:
1)进行了大量谷歌搜索,但无果而终。(也许我的谷歌搜索最近不太好)
2) 尝试使用未应用任何 GPO 的 Windows 10 客户端,结果导致失败。
3)比较从以下位置捕获的数据包:
Ubuntu Desktop 18.04(区域 A)到 Samba 服务器(区域 B)[成功]
Windows 10(区域 A)到 Samba 服务器(区域 B)[失败]
Windows 10(区域 A)到 Windows 服务器文件共享(区域 A)[成功]
数据包捕获的结果表明客户端和服务器协商使用的协议,在本例中为 SMB3_02。
协商后,Ubuntu 客户端立即向 samba 服务器发送会话设置请求,而 Windows 客户端则挂起并在几秒钟后发送超时。
在区域 A 捕获中将 Windows 10 添加到 Windows Server 时,客户端和服务器协商协议(SMB3_02),然后 Windows 10 发送会话设置请求并成功向 Windows 服务器进行身份验证。
Samba 配置全局部分(其他部分只有路径/ro 设置):
[global]
workgroup = ZONEB
realm = ZONEB.LAB
dedicated keytab file = FILE:/etc/samba/samba.keytab
kerberos method = dedicated keytab
log file = /var/log/samba/log.%m
security = ads
max protocol = SMB3_02
create mask = 0660
directory mask = 0770
答案1
如果有人遇到这种情况,可以采用以下解决方案。
以下 DNS 条目不存在,并且从未出现在 IdM 端。
_kerberos._tcp.ZONEA._sites.dc._msdcs.ZONEB.LAB
我们添加了 ZONEB.LAB IdM DC 的条目,一切都开始正常工作。