Fedora 39升级后无法通过Kerberos(sec=krb5)挂载Synology NAS的NFSv4.1共享,提示aes256-cts-hmac-sha384-192加密类型不被允许
看起来你遇到的问题确实是Fedora 39默认启用了Synology NAS不支持的Kerberos加密类型,而且全局修改krb5.conf还影响了FreeIPA的正常使用——这个场景我之前也碰到过,给你几个针对性的解决方案,从最安全到相对妥协的:
方案1:挂载时临时指定兼容的加密类型(推荐,不影响全局)
这个方法只针对NFS挂载进程生效,不会改动全局Kerberos配置,完美避免影响FreeIPA。
在执行挂载命令前,先设置环境变量指定客户端使用Synology支持的加密类型:
export KRB5_CLIENT_ENCTYPE=aes256-cts-hmac-sha1-96 mount -v -t nfs -o nfsvers=4,minorversion=1,sec=krb5 10.123.99.2:/volume1/video /mnt/
如果这个加密类型不行,还可以尝试aes128-cts-hmac-sha1-96,这两个是Synology NAS比较常见的支持类型。
如果需要开机自动挂载,你可以把环境变量加到挂载脚本里,或者在/etc/fstab中添加挂载项时,通过x-systemd.exec-options=KRB5_CLIENT_ENCTYPE=aes256-cts-hmac-sha1-96来传递环境变量,比如:
10.123.99.2:/volume1/video /mnt nfs nfsvers=4.1,sec=krb5,x-systemd.exec-options=KRB5_CLIENT_ENCTYPE=aes256-cts-hmac-sha1-96 0 0
方案2:为NAS单独配置Kerberos加密规则(全局微调,不影响FreeIPA)
如果你不想每次挂载都手动设置环境变量,可以在/etc/krb5.conf中针对NAS的IP/主机名单独指定允许的加密类型,而保留全局配置适配FreeIPA:
打开/etc/krb5.conf,添加或修改以下内容(替换成你的Kerberos领域和FreeIPA服务器地址):
[libdefaults] default_realm = YOUR_KERBEROS_REALM # 保留FreeIPA需要的加密类型 default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128 default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128 [domain_realm] # 将NAS的IP映射到你的Kerberos领域 10.123.99.2 = YOUR_KERBEROS_REALM [realms] YOUR_KERBEROS_REALM = { kdc = YOUR_FREEIPA_SERVER_ADDRESS admin_server = YOUR_FREEIPA_SERVER_ADDRESS # 只为NAS所在领域的服务主体指定兼容的加密类型 permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 }
修改后保存,重启nfs-client服务:
sudo systemctl restart nfs-client.target
然后再尝试挂载。
方案3:在Synology NAS端启用支持的加密类型(最彻底)
如果你的Synology NAS固件版本允许,可以尝试在NAS端开启aes256-cts-hmac-sha384-192加密类型:
- 登录Synology DSM,打开控制面板 -> 域/LDAP -> Kerberos
- 查看是否有加密类型的配置选项,添加
aes256-cts-hmac-sha384-192到允许列表 - 保存设置后重启NAS的Kerberos服务(或重启NAS)
这个方法一劳永逸,不需要修改客户端配置,但前提是你的NAS固件支持该加密类型。
方案4:降级客户端加密策略(不推荐,仅作为最后手段)
如果以上方法都不行,你可以尝试降低Fedora 39的全局加密策略,让它兼容旧设备:
sudo update-crypto-policies --set LEGACY sudo reboot
但注意,这个操作会降低整个系统的加密安全性,可能影响其他服务的安全性,所以只有在其他方法都失效时才考虑。
备注:内容来源于stack exchange,提问作者sebschub

