Первичная диагностика производится на настроенном контроллере домена FreeIPA и предназначена для оценки текущего состояния домена. Порядок установки и настройки контроллера домена см. в статье Контроллер ЕПП FreeIPA в Astra Linux.
Диагностика позволяет своевременно обнаружить сбои Directory Server и некорректную работу репликации.
В статье будет рассмотрен ряд ручных и автоматических диагностик, дополняющих друг друга. Для автоматических диагностик будет использован инструмент ipa-healthcheck. Ознакомиться с его функциональными возможностями более подробно можно в статье FreeIPA Health Check. Обзор функциональных возможностей.
| Термин | Пояснение |
|---|---|
| Источник (source) | Набор диагностических действий (проверок) для сбора данных (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. |
| Проверка (check) | Конкретная проверка в составе источника (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. |
| Сокращенное название проекта Dogtag Certificate System. |
| Аббревиатура от Certificate Authority. |
| Аббревиатура от Domain Name System. |
| Аббревиатура от Lightweight Directory Access Protocol. |
| Аббревиатура от Replica Update Vector. |
| Аббревиатура от Fully Qualified Domain Name. |
| Аббревиатура от Key Distribution Center. |
| Аббревиатура от Distributed Numeric Assignment. |
| Процесс автоматического создания и поддержания идентичных копий данных или ресурсов на двух и более узлах с целью обеспечения отказоустойчивости, повышения доступности и равномерного распределения нагрузки. |
| Схема взаимосвязей и соглашений репликации между контроллерами домена. |
| Аббревиатура от Identity, Policy, Audit. |
с минимум двумя узлами: ведущим (master) и ведомым (slave/replica) | |
Для выполнения диагностических операций обязательно наличие прав суперпользователя и пароля администратора доменной службы LDAP. Также для большинства диагностических операций требуется наличие билета Kerberos администратора домена. Получить билет Kerberos можно с помощь команды kinit, указав пароль пользователя — владельца билета. Например, для пользователя admin (имя администратора домена по умолчанию):
Удостовериться в наличии билета Kerberos можно с помощью команды klist:
Например, для пользователя admin (имя администратора домена по умолчанию), вывод будет выглядеть так:
|
В случае сбоев при разрешении имени доменного имени сервера или DNS записей скорректируйте их настройки. Подробнее см. Настройка серверов для FreeIPA и Настройка сетевых подключений в Astra Linux. |
Для диагностики корректности настройки полного доменного имени (FQDN) используется команда:
hostname -f |
Ожидается, что hostname -f вернет полное доменное имя сервера, например:
ipasrv.testdomain.test |
Для диагностики корректности записей DNS в составе пакета dnsutils предоставляется инструмент dig. Для выполнения диагностики:
|
Сделать прямой запрос (hostname → IP):
dig +short A $(hostname -f) |
Ожидается, что команда вернет IPv4 адрес сервера, например:
10.192.5.243 |
Сделать обратный PTR-запрос (IP → hostname):
dig +short -x $(hostname -i) |
Ожидается, что команда вернёт полное доменное имя сервера с точкой на конце, например:
ipasrv.testdomain.test. |
dig +short SRV _ldap._tcp.$(hostname -d) |
10 100 389 ipasrv.testdomain.test. 0 100 389 ipasrv.testdomain.test. 0 100 389 ipacln.testdomain.test. |
dig +short SRV _kerberos._udp.$(hostname -d) |
0 100 88 ipasrv.testdomain.test. 0 100 88 ipacln.testdomain.test. |
dig +short ipa-ca.$(hostname -d) |
10.192.5.243 10.192.5.244 |
sudo ipa-replica-conncheck -m ipasrv.testdomain.test -r TESTDOMAIN.TEST -k ipasrv.testdomain.test -p admin -w 12345678 -a
|
Check connection from replica to remote master 'ipasrv.testdomain.test': Directory Service: Unsecure port (389): OK Directory Service: Secure port (636): OK Kerberos KDC: TCP (88): OK Kerberos Kpasswd: TCP (464): OK HTTP Server: Unsecure port (80): OK HTTP Server: Secure port (443): OK The following list of ports use UDP protocol and would need to be checked manually: Kerberos KDC: UDP (88): SKIPPED Kerberos Kpasswd: UDP (464): SKIPPED Connection from replica to master is OK. Start listening on required ports for remote master check 389 tcp: Failed to bind 636 tcp: Failed to bind 88 tcp: Failed to bind 88 udp: Failed to bind 464 tcp: Failed to bind 464 udp: Failed to bind 80 tcp: Failed to bind 443 tcp: Failed to bind Get credentials to log in to remote master Check RPC connection to remote master Retrying using SSH... Check SSH connection to remote master Execute check on remote master |
nc -vuz ipasrv.testdomain.test 88 464
|
Connection to ipasrv.testdomain.test (10.192.5.244) 88 port [udp/kerberos] succeeded! Connection to ipasrv.testdomain.test (10.192.5.244) 464 port [udp/kpasswd] succeeded! |
sudo ipa-replica-manage list
|
ipasrv.testdomain.test: master ipacln.testdomain.test: master |
sudo ipa-replica-manage list ipasrv.testdomain.test -v
|
ipacln.testdomain.test: replica last init status: Error (0) Total update succeeded last init ended: 2025-05-28 19:51:44+00:00 last update status: Error (0) Replica acquired successfully: Incremental update succeeded last update ended: 2025-05-28 23:59:09+00:00 |
sudo ipa-replica-manage list-ruv
|
Replica Update Vectors:
ipasrv.testdomain.test:389: 4
ipacln.testdomain.test:389: 3
Certificate Server Replica Update Vectors:
No CS-RUVs found. |
Replica Update Vectors:
ipasrv.testdomain.test:389: 4
ipacln.testdomain.test:389: 3
Certificate Server Replica Update Vectors:
ipasrv.testdomain.test:389: 6 |
sudo ipa-replica-manage dnarange-show
|
ipasrv.testdomain.test: 1188400002-1188500499 ipacln.testdomain.test: 1188500504-1188599999 |
sudo ipa-csreplica-manage list
|
ipasrv.testdomain.test: master ipacln.testdomain.test: master |
sudo ipa-csreplica-manage list ipasrv.testdomain.test -v
|
ipacln.testdomain.test last init status: Error (0) Total update succeeded last init ended: 2025-05-28 10:22:34+00:00 last update status: Error (0) Replica acquired successfully: Incremental update succeeded last update ended: 2025-05-28 21:32:10+00:00 |
sudo ipa topologysuffix-find --all
|
--------------------------------------------- установлено соответствие 1 суффикса топологии --------------------------------------------- dn: cn=domain,cn=topology,cn=ipa,cn=etc,dc=testdomain,dc=test Имя суффикса: domain DN управляемого суффикса LDAP: dc=testdomain,dc=test nsds5replicastripattrs: modifiersName modifyTimestamp internalModifiersName internalModifyTimestamp nsds5replicatedattributelist: (objectclass=*) $ EXCLUDE memberof idnssoaserial entryusn krblastsuccessfulauth krblastfailedauth krbloginfailedcount passwordgraceusertime nsds5replicatedattributelisttotal: (objectclass=*) $ EXCLUDE entryusn krblastsuccessfulauth krblastfailedauth krbloginfailedcount passwordgraceusertime objectclass: top, iparepltopoconf --------------------------------- Количество возвращённых записей 1 --------------------------------- |
---------------------------------------------- установлено соответствие 2 суффиксов топологии ---------------------------------------------- dn: cn=ca,cn=topology,cn=ipa,cn=etc,dc=testdomain,dc=test Имя суффикса: ca DN управляемого суффикса LDAP: o=ipaca objectclass: top, iparepltopoconf dn: cn=domain,cn=topology,cn=ipa,cn=etc,dc=testdomain,dc=test Имя суффикса: domain DN управляемого суффикса LDAP: dc=testdomain,dc=test nsds5replicastripattrs: modifiersName modifyTimestamp internalModifiersName internalModifyTimestamp nsds5replicatedattributelist: (objectclass=*) $ EXCLUDE memberof idnssoaserial entryusn krblastsuccessfulauth krblastfailedauth krbloginfailedcount passwordgraceusertime nsds5replicatedattributelisttotal: (objectclass=*) $ EXCLUDE entryusn krblastsuccessfulauth krblastfailedauth krbloginfailedcount passwordgraceusertime objectclass: top, iparepltopoconf --------------------------------- Количество возвращённых записей 2 --------------------------------- |
sudo ipa topologysuffix-verify domain
|
================================================================= Топология репликации суффикса "domain" соответствует требованиям. ================================================================= |
sudo ipa-healthcheck --output-type human |
No issues found. |
sudo ipa-healthcheck --output-type human --source ipahealthcheck.ipa.dna |