我在调试此错误时遇到了一些困难。我正在运行 nginx 作为 api 网关,每当使用 SPNEGO 方法调用端点时,都会向 kerberos 发出子请求。但每当我尝试在标头中使用 TGS 票证发出请求时,我都会收到错误,TCP client 192.168.112.4.51658 wants 1195725856 bytes, cap is 1048572
然后连接就会关闭。
我尝试过printf "\xff\xff\xff\xff" | netcat krb_address 88
并且它会触发上述错误,如果删除 \xff 的一个实例则不会出现错误。
我正在努力弄清楚的是:
- 发送给 Kerberos 并打破上限约束的消息到底是什么?
- 需要进行什么样的配置更改才能满足上限要求?
我之前从未使用过 nginx 和 kerberos,因此不确定除了基本问题之外我还能问什么更好的问题。
非常感谢您对之前遇到此错误的经验的一些见解,或者我可以使用的一些其他技术来发现更多导致错误的原因!
答案1
这是协议不匹配;有时,当 Kerberos 服务器正在等待其他东西时,您却发送了 HTTP 请求。
此处的漏洞是错误中显示的数字 1195725856。转换为十六进制,即 47 45 54 20。转换为 ASCII,即G
、E
、T
、 空格或 HTTP GET 请求的前四个字符。这不太可能是巧合。
我不太熟悉 Kerberos,但经过一番研究,我发现一个可能的原因是你可能遗漏--enable-http
了kdc
服务?