Введение
Первичная диагностика производится на настроенном контроллере ЕПП FreeIPA и предназначена для оценки текущего состояния домена (порядок установки и настройки контроллера см. в статье Контроллер ЕПП FreeIPA в Astra Linux).
Она поможет своевременно обнаружить сбои Directory Server и некорректную работу репликации.
В статье будет рассмотрен ряд ручных и автоматических диагностик. Для автоматических диагностик будет использован инструмент ipa-healthcheck. Ознакомиться с его функциональными возможностями более подробно можно в статье FreeIPA Health Check. Обзор функциональных возможностей.
Термины
| Термин | Пояснение |
|---|---|
| Источник (source) | Модуль или пространство имён для сбора данных (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. |
| Проверка (check) | Конкретная проверка в рамках источника (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. |
DogTag | Сокращенное название проекта Dogtag Certificate System. |
CA | Аббревиатура от Certificate Authority. |
DNS | Аббревиатура от Domain Name System. |
LDAP | Аббревиатура от Lightweight Directory Access Protocol. |
RUV | Аббревиатура от Replica Update Vector. |
FQDN | Аббревиатура от Fully Qualified Domain Name. |
KDC | Аббревиатура от Key Distribution Center. |
DNA | Аббревиатура от Distributed Numeric Assignment. |
Топология репликации | Схема взаимосвязей и соглашений репликации между IPA-серверами. |
IPA | Аббревиатура от Identity, Policy, Audit. |
Первичная диагностика Directory Server, включая репликацию
Важно!
Для выполнения диагностических операций обязательно наличие прав суперпользователя и пароля администратора доменной службы LDAP.
Также для большинства диагностических операций требуется наличие билета Kerberos администратора домена. Получить билет Kerberos можно с помощь команды kinit, указав пароль пользователя — владельца билета. Например, для пользователя admin (имя администратора домена по умолчанию):
kinit admin
Удостовериться в наличии билета Kerberos можно с помощью команды klist:
klist
Например, для пользователя admin (имя администратора домена по умолчанию), вывод будет выглядеть так:
Ticket cache: KEYRING:persistent:1000:1000 Default principal: admin@TESTDOMAIN.TEST Valid starting Expires Service principal 28.05.2025 12:50:01 29.05.2025 12:18:08 HTTP/ipasrv.testdomain.test@TESTDOMAIN.TEST 28.05.2025 12:50:01 29.05.2025 12:18:08 krbtgt/TESTDOMAIN.TEST@TESTDOMAIN.TEST
Ручная диагностика
Проверка имени хоста и DNS записей
Важно!
В случае сбоев при разрешении имени доменного имени сервера или 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.
- Сделать SRV-запрос для службы LDAP по протоколу TCP:Ожидается, что команда вернет полное доменное имя каждого контроллера вместе с указанием приоритета, веса и порта в формате <приоритет> <вес> <порт> <FQDN>:
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.
- Сделать SRV-запросы для службы Kerberos по протоколам TCP и UDP:Ожидается, что команда вернет полное доменное имя каждого контроллера вместе с указанием приоритета, веса и порта в формате <приоритет> <вес> <порт> <FQDN>:
dig +short SRV _kerberos._udp.$(hostname -d)
dig +short SRV _kerberos._tcp.$(hostname -d)Вывод0 100 88 ipasrv.testdomain.test. 0 100 88 ipacln.testdomain.test.
- Сделать запрос к службе управления сертификатами ipa-ca:Ожидается, что команда вернёт один или несколько IP-адресов тех узлов, которые выполняют функции CA:
dig +short ipa-ca.$(hostname -d)
Вывод10.192.5.243 10.192.5.244
Проверка доступности сетевых портов
- Для диагностики доступности сетевых портов в составе пакета freeipa-server предоставляется инструмент ipa-replica-conncheck. Требуется репликация с минимум двумя узлами: ведущим (master) и ведомым (slave/replica). Для выполнения диагностики:
- На ведомом узле протестировать доступность сетевых портов ведущего узла при помощи команды:
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
- Дополнительно вручную протестировать порты 88 и 464 протокола UDP. Сделать это можно при помощи команды на ведомом узле, например:
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!
- На ведомом узле протестировать доступность сетевых портов ведущего узла при помощи команды:
- Для диагностики доступности сетевых портов в составе пакета freeipa-server предоставляется инструмент ipa-replica-conncheck. Требуется репликация с минимум двумя узлами: ведущим (master) и ведомым (slave/replica). Для выполнения диагностики:
Проверка списков реплик и соглашений репликации
- Для диагностики доступности узлов в текущей топологии, а также для диагностики актуальности репликации узлов в составе пакета freeipa-server предоставляется инструмент ipa-replica-manage. Для выполнения диагностики:
- На любом узле вывести базовый список узлов при помощи команды:
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
- На любом узле вывести значения счётчиков изменений (RUV) при помощи команды:
sudo ipa-replica-manage list-ruvВывод без подключенного DogTagReplica Update Vectors: ipasrv.testdomain.test:389: 4 ipacln.testdomain.test:389: 3 Certificate Server Replica Update Vectors: No CS-RUVs found.Вывод c подключенным DogTagReplica Update Vectors: ipasrv.testdomain.test:389: 4 ipacln.testdomain.test:389: 3 Certificate Server Replica Update Vectors: ipasrv.testdomain.test:389: 6 - На любом узле вывести назначенные UID/GID-диапазоны (DNA-ranges) при помощи команды:
sudo ipa-replica-manage dnarange-showВыводipasrv.testdomain.test: 1188400002-1188500499 ipacln.testdomain.test: 1188500504-1188599999
- На любом узле вывести базовый список узлов при помощи команды:
- Для диагностики доступности узлов, участвующих в репликации сертификатов DogTag CA в составе пакета freeipa-server предоставляется инструмент ipa-careplica-manage. Для выполнения диагностики:
- На любом узле вывести базовый список узлов участвующих в репликации сертификатов DogTag CA при помощи команды:
sudo ipa-csreplica-manage listВыводipasrv.testdomain.test: master ipacln.testdomain.test: master
- На любом узле вывести подробный статус соглашений репликации сертификатов DogTag CA для конкретного узла, например:
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
- На любом узле вывести базовый список узлов участвующих в репликации сертификатов DogTag CA при помощи команды:
- Для диагностики доступности узлов в текущей топологии, а также для диагностики актуальности репликации узлов в составе пакета freeipa-server предоставляется инструмент ipa-replica-manage. Для выполнения диагностики:
Проверка суффиксов репликации
- Для диагностики наличия и корректности LDAP-суффиксов репликации в составе пакета freeipa-server предоставляется инструмент ipa с командами topologysuffix-find и ipa topologysuffix-verify. Для выполнения диагностики:
- На любом узле выполнить обзор суффиксов при помощи команды:
sudo ipa topologysuffix-find --allВывод без подключенного DogTag--------------------------------------------- установлено соответствие 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 ---------------------------------
Вывод с подключенным DogTag---------------------------------------------- установлено соответствие 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 ---------------------------------
- На любом узле выполнить верификацию нужного суффикса, например domain, при помощи команды:
sudo ipa topologysuffix-verify domainВывод================================================================= Топология репликации суффикса "domain" соответствует требованиям. =================================================================
- На любом узле выполнить обзор суффиксов при помощи команды:
- Для диагностики наличия и корректности LDAP-суффиксов репликации в составе пакета freeipa-server предоставляется инструмент ipa с командами topologysuffix-find и ipa topologysuffix-verify. Для выполнения диагностики:
Автоматическая диагностика
Работа с инструментом ipa-healthcheck
- Для автоматической диагностики в составе пакета freeipa-healthcheck предоставляется инструмент ipa-healthcheck.
Рекомендуется запускать инструмент на всех узлах, со всеми возможными источниками и проверками:При отсутствии сбоев в окружении узла ожидается вывод:sudo ipa-healthcheck --output-type humanРяд источников, которые могут быть полезны при точечном диагностировании сбоев Directory Server, включая репликацию:ВыводNo issues found.
- все источники начинающиеся на ipahealthcheck.ds: ipahealthcheck.ds.backends, ipahealthcheck.ds.config, ipahealthcheck.ds.disk_space, ipahealthcheck.ds.dse, ipahealthcheck.ds.encryption, ipahealthcheck.ds.fs_checks, ipahealthcheck.ds.nss_ssl, ipahealthcheck.ds.ds_plugins, ipahealthcheck.ds.replication, ipahealthcheck.ds.ruv,
- источник ipahealthcheck.ipa.topology,
- источник ipahealthcheck.meta.services,
- источник ipahealthcheck.ipa.host,
- источник ipahealthcheck.ipa.dna,
- источник ipahealthcheck.ipa.idns.
- Источники указываются через аргумент командной строки --source, например:Ознакомиться с его функциональными возможностями более подробно можно в статье FreeIPA Health Check. Обзор функциональных возможностей.
sudo ipa-healthcheck --output-type human --source ipahealthcheck.ipa.dna
- Для автоматической диагностики в составе пакета freeipa-healthcheck предоставляется инструмент ipa-healthcheck.