[Step3-1]-krb5-conf template调整不改报错
需要 ttr-release 版本 >= 2.2.3
Ambari 3.0.0 + Free IPA 统一认证体系 示例环境:Kylin V10 SP3 x86,Realm = TEST.COM
# 一、为什么 krb5-conf 必须调整?
在 FreeIPA 环境下,如果 Ambari 使用默认的 krb5_conf.j2 模板,不进行调整,会产生两个典型问题:
# 1.Ranger 高可用场景 SPN 不统一
- 节点解析 FQDN 时发生反向解析
- Kerberos 自动 canonicalize hostname
- 最终生成的 SPN 与预期不一致
- Ranger Admin / Plugin 通信报错
# 2.开启 Kerberos 流程无法通过(Fatal)
在 Ambari 启用 Kerberos 流程中:
- Principal 创建成功
- 但服务校验失败
- 流程中断
本质原因: Kerberos 主机名解析行为与 FreeIPA 期望不一致。
结论
在 FreeIPA 场景下,不修改 krb5-conf 模板属于致命隐患。
# 二、问题根源:Kerberos 主机名解析机制
默认情况下:
rdns = true
dns_canonicalize_hostname = true
1
2
2
行为:
- Kerberos 会进行反向 DNS 解析
- 自动 canonicalize hostname
- SPN 可能被改写
例如:
HTTP/dev1.test.com@TEST.COM
1
可能被解析成:
HTTP/dev1.internal.local@TEST.COM
1
导致认证失败。
# 三、源码级修复(推荐方式)
# 3.1 修改 krb5_conf.j2 模板
源码路径:
ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/KERBEROS/properties/krb5_conf.j2
1
如下图所示:

# 3.2 在 [libdefaults] 中追加两行
rdns = false
dns_canonicalize_hostname = false
1
2
2
# 3.3 修改后的完整关键段落
[libdefaults]
forwardable = true
default_realm = {{ realm }}
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
rdns = false
dns_canonicalize_hostname = false
default_ccache_name = /tmp/krb5cc_%{uid}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
完整模板示例:
[libdefaults]
forwardable = true
default_realm = {{ realm }}
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
rdns = false
dns_canonicalize_hostname = false
default_ccache_name = /tmp/krb5cc_%{uid}
[realms]
{{ realm }} = {
admin_server = {{ admin_server_host }}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
笔记
源代码修改完毕后,重新编译、部署安装即可
# 四、生产环境如何处理?
如果已经是生产环境,不方便重新编译,可以直接通过 Ambari Web UI 修改 krb5-conf 模板。
步骤:
- 进入 Ambari → Kerberos → Advanced krb5-conf
- 找到
[libdefaults]段 - 添加:
rdns = false
dns_canonicalize_hostname = false
1
2
2
界面如下:

保存后重新部署 Kerberos 配置。
- 03
- Ranger Admin 证书快速导入脚本02-15