服務的客戶因為有近 200 台 Linux 主機,故在幾年前導入了 IPA Server 來集中管理帳號,現有環境中有一台 Master 及一台 Replica ,在前一陣子發現 Replica 上的 LDAP 的 SSL 憑證過期,以致於兩台主機間的資料同步中斷了,在試過一些指令如 ipa-cert-fix 或是 ipa-ca-install 去試著更新憑證,但是都無法與 Master 溝通 (其間也有試著將 Replica 的日期調回沒過期前) ,似乎原本只有資料同步是正常的,當指令無法解決問題,便想到將系統重建,試過幾種方法也都無法順利完成建置,只好來求救,望各位先輩指點迷津。
作業系統:CentOS 7.9
IPA-Server:4.6.8-5
Master 及 Replica 全新安裝
參考網路上的幾篇文章,寫得都很簡單,實際操作起來也差不多,很簡單的就把 Master 建置起來,並順利的加入了 Replica ,感覺若是全新全空的環境是沒有問題的。
原 Master 不動,重新設定 Replica在確認 Master 與 Replica 上的 IPA-Server 的版本是一致後,先執行 ipa-server-uninstall 把設定及資料都刪掉,然後再執行 ipa-client-install (參數就不列出來了) ,指令成功後,先執行 ipa-replica-conncheck 檢查溝通,成功後再執行 ipa-replica-install ,在進行到第二階段「Configuring directory Server (dirsrv)」的第 27 步 [27/42] ,出現以下錯誤
[27/42]: creating DS keytab
[error] CalledProcessError: Command '/usr/sbin/ipa-getkeytab -k /etc/dirsrv/ds.keytab -p ldap/server02.example.com@EXAMPLE.COM -H ldaps://server01.example.com' returned non-zero exit status 9
有試著單獨執行該指令,是可以成功在 ds.keytab 中建立資料,不太清楚為什麼批次執行就會出錯。
經雷神指點,在 Master 上執行那兩個指令後再執行 ipa-replica-install ,可以順利通過 [27/42] 的錯誤,可是到了 Configuring directory server (dirsrv) ,第五階段的 [1/3] 還是出錯了。
[1/3]: Configuring TLS for DS instance
[error] RuntimeError: Certificate issuance failed (CA_UNREACHABLE: Server at https://server01.example.com/ipa/xml failed request, will retry: 4016 (RPC failed at server. Failed to authenticate to CA REST API).)
原 Master 不動,Replica 全新建置
在進行 ipa-replica-install 時,在同樣的地方出現同樣的錯誤,檢查了一下,在執行前,並沒有 ds.keytab 的檔案,手動執行該指令串後會產生該檔案,使用 klist -ek /etc/dirsrv/ds.keytab 指令去檢視檔案內容,有 ldap/server02.example.com@EXAMPLE.COM 的資料,但是若重新執行一次 ipa-replica-install 的話,該檔案會消失,忘了檢查是因為 ipa-server-install --uninstall 的關係還是其他原因,但是在前一次的測試,執行該指令,並不會讓 ds.keytab 消失。
Master 與 Replica 均重新建置,利用 ipa-backup 的備份資料來還原。
如前所述,順利的建置好環境,但是在使用 ipa-restore --data 僅還原資料後,無法從網頁登入,會出現 Login failed due to an unknown reason.
檢視 /var/log/sssd/ldap_child.log 會有以下錯誤訊息
(2023-04-04 15:37:17): [ldap_child[2530]] [ldap_child_get_tgt_sync] (0x0010): Failed to init credentials: Preauthentication failed
檢視 messages 會有以下錯誤訊息
Failed to initialize credentials using keytab [MEMORY:/etc/krb5.keytab]: Preauthentication failed. Unable to create GSSAPI-encrypted LDAP connection.
因為 admin 密碼無法使用,所以 Replica 有無順利同步資料,無從檢查。
Master 重新建置,利用 ipa-restore --data 先還原資料
會出現前述問題,所以就沒有再測試 Replica 的建置。
Master 重新建置,利用 ipa-resoter 全部資料還原
LDPA 管理者密碼及 admin 密碼均可正常使用,但是在建置 Replica 時,感覺 Master 整個還原成原本狀態,所以一樣會在 [27/42] 這一步出錯。
以上是目前的測試,針對錯誤有找尋過處理方法,但似乎無效或是沒有詳細的解法說明,不知道該如何進行下去,若是真的無法處理,可能就要完全重建 Master 與 Replica ,然後將近 200 台的主機退「網域」,然後再重新加入新的「網域」。
不知道是否是因為憑證過期太久了,有些主機在「加網域」的時候是指定 Replica 當驗證主機,這些主機在登入時,密碼會失效,不論怎麼改都沒有用,直到把 Replica 主機的時間改到憑證過期前就正常了。
謝謝!
在執行 ipa-replica-install 之前, 有先清掉 Master 上面的 Replica 設定嗎?
https://lists.fedoraproject.org/archives/list/freeipa-users@lists.fedorahosted.org/thread/Z6V7MYLWSGXU77NHNPFT357PQOEYQALG/
ipa-replica-manage del <replica> --clean --force
kdestroy -A
此外, 執行完 ipa-server-uninstall 之後, 有確認 Replica 的 Process 也砍掉了嗎:
kill -9 `pidof ns-slapd`
剛剛執行 ipa-replica-manage list ,列出只有一筆資料:master ,不過我還是執行了一次 ipa-replica-manage del 的指令串,出現以下訊息:
ipa: WARNING: Forcing removal of server02.example.com
ipa: WARNING: Ignoring topology connectivity errors.
ipa: WARNING: Failed to cleanup server02.example.com DNS entries: no such entry
ipa: WARNING: You may need to manually remove them from thr tree
ipa: WARNING: Server has already been deleted
Deleted IPA server "server02.example.com"
我會再試著用建置新的 replica 方式來試試看,並在進行 ipa-replica-install 前先執行這兩個指令。
謝謝!
問題已解決,謝謝雷神大大的指點,真奇怪,那個網站也有給我幾個網頁,怎麼就沒看到這個。
先說原因:兩年前的網頁弱掃要求 Master 關閉 mod_proxy ,當時沒有多想就直接把相關會影響重啟的都關閉,於是 Replica 就再也無法跟 Master 溝通了,當我把 Master 上的 mod_proxy 開啟,所有問題都不見了。
雖然,因為個人因素,我還是把 Replica 那台的一些套件移除再重裝,但是一點也不影響重新加回 Master 。
不過也因為這樣知道了有個 certmonger 在管理憑證,也知道了網頁憑證跟 LDAP 憑證放的位置,也知道了一些指令用途,算是從 IPA-1 進階到 IPA-2 吧!(自以為)(熟練是 IPA-100)。