我们在哥斯达黎加有一个分公司,当时我们在那里实施了使用 AD 的 Squid 代理和 SSO,并且运行良好。最近,我们在现场实施了 RODC。发生这种情况后,没有人能够进行身份验证,我无法修复该问题。我删除了用于 kerberos 身份验证的 AD 对象并运行了以下命令:
msktutil -c -b "CN=COMPUTERS" -s HTTP/PROXY.domain.com -k /etc/squid3/PROXY.keytab --computer-name PROXY-K --upn HTTP/PROXY.domain.com --server dc1.domain.com --verbose
此命令实际上在 AD 中创建了对象,但未设置密码。我收到以下错误:
错误:krb5_set_password_using_ccache 失败(无法联系请求领域的任何 KDC)错误:set_password 失败
我已经确保这台机器可以解析域控制器。
到现在为止,我迷路了。断断续续地与这个问题斗争了一个月,确实需要一些指导。我还有其他四个相同的 squid 代理,它们不在 RODC 后面,但运行良好。
答案1
我假设 RODC 运行正常,即:Kerberos 正常、AD DS 启动并运行,等等?
我想我的下一步是捕获网络跟踪,仅过滤 DNS 和 Kerberos,然后查看客户端正在做什么。
--- 2017 年 7 月 1 日 ---
我可以看到 172.26.48.25 和 172.21.1.19 之间发生了 Kerberos 握手。但是,两个 AS-REQ(身份验证服务请求)响应失败,并经常出现 KRB5KDC_ERR_PREAUTH_REQUIRED。对于 Kerberos 5,这种情况预计会出现一次。出现两次这种情况很奇怪,通常情况下表示 KDC 和 Kerberos 客户端之间的时间同步问题。
但是,我们随后看到客户端请求服务票证。KDC 的票证授予服务 (TGS) 部分以 KRB5_NT_UNKNOWN(Kerberos 名称类型未知)进行响应。因此,我可能会进一步调查此错误,因为如果客户端的初始身份验证失败,我通常不会期望客户端继续请求服务票证。
答案2
我决定使用最新版本的 msktutil 在 Ubuntu 的更高版本上构建一个新的代理,它确实有效。我想我只需在下一个维护时段迁移所有数据并交换 IP 即可。