| Оглавление |
|---|
| Якорь | ||||
|---|---|---|---|---|
|
Первичная диагностика производится на настроенном контроллере ЕПП FreeIPA и предназначена для оценки текущего состояния домена (порядок установки и настройки контроллера см. в статье Контроллер ЕПП FreeIPA в Astra Linux).
Она поможет своевременно обнаружить и устранить ошибки установки, некорректную репликацию, проблемы с аутентификацией, несоответствия в DNS-записях и сбои в работе PKI-служб.
В статье будет рассмотрен ряд ручных и автоматических диагностик. Для большинства автоматических диагностик будет использован инструмент ipa-healthcheck. Ознакомиться с его функциональными возможностями более подробно можно в статье FreeIPA Health Check. Обзор функциональных возможностей.
Термины
| Термин | Пояснение | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Источник (source) | Модуль или пространство имён для сбора данных (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. | ||||||||||||
| Проверка (check) | Конкретная проверка в рамках источника (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. | ||||||||||||
CLI | Аббревиатура от Command Line Interface. | ||||||||||||
| Сокращенное название проекта Dogtag Certificate System. | ||||||||||||
| Аббревиатура от Certificate System. | ||||||||||||
| Аббревиатура от Certificate Authority. | ||||||||||||
| Аббревиатура от Certificate Revocation List. | ||||||||||||
| Аббревиатура от Key Recovery Authority. | ||||||||||||
| Аббревиатуры от Directory Server <сокращенное название проверки> Lint Error. | ||||||||||||
| Главный файл конфигурации подсистемы DogTag CS. В DogTag подсистемы запускаются независимо, каждая со своим CS.cfg:
| ||||||||||||
| Аббревиатура от Domain Name System. | ||||||||||||
| Аббревиатура от Lightweight Directory Access Protocol. | ||||||||||||
| Аббревиатура от Network Security Services. | ||||||||||||
| Аббревиатура от Directory Server | ||||||||||||
| Аббревиатура от Replica Update Vector. | ||||||||||||
| Аббревиатура от Transport Layer Security (TLS) и Secure Sockets Layer (SSL). | ||||||||||||
| Служба для автоматического управления жизненным циклом сертификатов: генерирует запросы, отслеживает их, обновляет истекающие сертификаты и взаимодействует с центром сертификации для их продления. | ||||||||||||
| Аббревиатура от Fully Qualified Domain Name. | ||||||||||||
| Аббревиатура от Key Distribution Center. | ||||||||||||
| Аббревиатура от Ticket Granting Ticket. | ||||||||||||
| Аббревиатура от Distributed Numeric Assignment. | ||||||||||||
| Файл “key table” Kerberos, хранящий длинно-срочные ключи одного или нескольких принципалов. Используется сервисами для автоматической аутентификации без ввода пароля. | ||||||||||||
| Схема взаимосвязей и соглашений репликации между IPA-серверами. | ||||||||||||
| Аббревиатура от Active Directory. | ||||||||||||
| RID (Аббревиатура от Relative Identifier) SID (Аббревиатура от Security Identifier) | ||||||||||||
| Аббревиатура от Identity, Policy, Audit. |
Первичная диагностика Directory Server, включая репликацию
| Предупреждение | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| |||||||||
Для выполнения диагностических операций обязательно наличие прав суперпользователя и пароля администратора доменной службы LDAP. Также для большинства диагностических операций требуется наличие билета Kerberos администратора домена. Получить билет Kerberos можно с помощь команды kinit, указав пароль пользователя — владельца билета. Например, для пользователя admin (имя администратора домена по умолчанию):
Проверить наличие билета Kerberos можно с помощью команды klist.
Например, для пользователя admin (имя администратора домена по умолчанию), вывод будет выглядеть так:
|
Установка
...
Ручная диагностика
Проверка имени хоста и DNS
Предупреждение title Важно! В случае сбоев при разрешении имени доменного имени сервера или DNS-записей проверьте и скорректируйте их настройки. Подробнее см. Настройка серверов для FreeIPA и Настройка сетевых подключений в Astra Linux.
Чтобы проверить корректную настройку полного доменного имени (FQDN) используется команда:
Command hostname -f
Ожидается, что hostname -f выдаст полное доменное имя сервера, например:
Блок кода title Вывод ipasrv.ipadomain.loc
Чтобы проверить корректность настроек DNS, потребуется два шага:
Сделать прямой запрос (hostname → IP):
Command dig +short A $(hostname -f)
Раскрыть title Справка Информация title Справка Команда dig используется как инструмент для опроса DNS-серверов и получения ответов на DNS-запросы. Предоставляется пакетом dnsutils и входит в базовый репозиторий.
В примерах используется со следующими параметрами:+short
выводит только ответ без заголовков и дополнительных сведений,A
указывает на запрос A-записи (IPv4),-x
сокращённый синтаксис для запроса PTR-записи, используемой в обратном разрешении имен,$(hostname -f)
командная подстановка, возвращающая FQDN, соответствующий текущему хосту,$(hostname -i)
командная подстановка, возвращающая IP-адрес, соответствующий текущему имени хоста.
Ожидается, что команда вернет IPv4 адрес сервера, например:
Блок кода title Вывод 10.192.5.243
Сделать обратный PTR-запрос (IP → hostname):
Command dig +short -x $(hostname -i)
Раскрыть title Справка Информация title Справка Команда dig используется как инструмент для опроса DNS-серверов и получения ответов на DNS-запросы. Предоставляется пакетом dnsutils и входит в базовый репозиторий.
В примерах используется со следующими параметрами:+short
выводит только ответ без заголовков и дополнительных сведений,A
указывает на запрос A-записи (IPv4),-x
сокращённый синтаксис для запроса PTR-записи, используемой в обратном разрешении имен,$(hostname -f)
командная подстановка, возвращающая FQDN, соответствующий текущему хосту,$(hostname -i)
командная подстановка, возвращающая IP-адрес, соответствующий текущему имени хоста.
Ожидается, что команда вернёт полное доменное имя сервера, например:
Блок кода title Вывод ipasrv.ipadomain.loc.
Анализ журналов установки
Для выявления причин сбоев при выполнении команды astra-freeipa-server используется основной журнал установки /var/log/ipaserver-install.log. Вывести его для анализа последних сообщений, в частности возможных сбоев, можно командой:
Command sudo tail -n 50 /var/log/ipaserver-install.log- При наличии встроенного центра сертификации DogTag дополнительно анализируются журналы /var/log/pki/pki-kra-spawn.<метка_времени>.log и /var/log/pki/pki-ca-spawn.<метка_времени>.log, где <метка_времени> соответствует дате и времени запуска процесса установки. Вывести их для анализа последних сообщений, в частности возможных сбоев, можно командами:
Во всех случаях ожидается вывод последних шагов установки, включая отметки ERROR при сбоях.Command sudo tail -n 50 /var/log/pki/pki-kra-spawn.*.log
sudo tail -n 50 /var/log/pki/pki-ca-spawn.*.log
Автоматическая диагностика
Запуск инструмента ipa-healthcheck производится на настроенном контроллере ЕПП FreeIPA и неактуален для диагностики сбоев установочного процесса.
Directory Server, включая репликацию
описание
...
Проверка доступности сетевых портов
- Для диагностики доступности сетевых портов в составе пакета freeipa-server предоставляется инструмент ipa-replica-conncheck. Требуется репликация с минимум двумя узлами: ведущим (master) и ведомым (slave/replica). Для выполнения диагностики:
- На ведомом узле проверить доступность сетевых портов ведущего узла при помощи команды:
Command sudo ipa-replica-conncheck -m ipasrv.testdomain.test -r TESTDOMAIN.TEST -k ipasrv.testdomain.test -p admin -w 12345678 -aРаскрыть title Справка Информация title Справка Command sudo ipa-replica-conncheck -m <HOST> -r <REALM> -k <HOST> -p <PRINCIPAL> -w <PASSWORD> -a
Эта команда проводит двухфазную проверку сетевого взаимодействия между уже существующими ведущими и ведомыми узлами реплики FreeIPA. Сначала тестируется доступность TCP-портов ведущего узла (389, 636, 88, 464, 80, 443), а затем автоматически по SSH инициирует обратную проверку тех же портов с ведущего на ведомый узел. Ошибки «Failed to bind» при этом свидетельствуют лишь о занятости портов штатными службами, но не об их недоступности.
Используются следующие параметры:
-m <HOST>
указывает FQDN или IP-адрес ведущего узла, к которому ведомый узел должен подключиться в первой фазе проверки,-r <REALM>
имя IPA Kerberos области (realm) (обычно домен в верхнем регистре); без него инструмент не сможет получить билет и завершится ошибкой,-k <HOST>
FQDN или IP-адрес KDC для Kerberos аутентификации (по умолчанию совпадает с ведущим узлом),-p <PRINCIPAL>
имя Kerberos принципала (например, admin), под которым будет совершена аутентификация перед проверкой,-w <PASSWORD>
пароль указанного принципала (в кавычках, если содержит спецсимволы); является небезопасным, при отсутствии параметра инструмент запросит его интерактивно,-a
автоматически запускает на ведомом узле вторую фазу проверки: по SSH заходит на ведущий узел и выполняет ipa-replica-conncheck --replica <REPLICA> для диагностики связи ведущий → ведомый.
Блок кода title Вывод 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. Сделать это можно при помощи команды, на ведомом узле:
Command nc -vuz ipasrv.testdomain.test 88 464Раскрыть title Справка Информация title Справка Команда сканирует указанные UDP-порты (88 и 464) на хосте ipasrv.testdomain.test, не передавая реальных данных и выводит подробную информацию о статусе каждого порта (открыт/закрыт). Поставляется с пакетом netcat-openbsd.
Используются следующие параметры:-v
включает подробный режим,-u
заставляет использовать UDP вместо TCP при соединении с портами,-z
включает режим сканирования без передачи данных: netcat лишь пытается установить соединение и сразу его закрывает, что полезно при проверке портов.
Блок кода title Вывод 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. Для выполнения диагностики:
- На любом узле вывести базовый список узлов при помощи команды:
Command sudo ipa-replica-manage list
Раскрыть title Справка Информация title Справка Отображает все узлы (ведущие и ведомые) в текущей топологии, проверяя отсутствие «призрачных» или пропавших узлов. Позволяет убедиться, что каждый сервер имеет корректную роль.
Блок кода title Вывод ipasrv.testdomain.test: master ipacln.testdomain.test: master
- На любом узле вывести подробный статус соглашений репликации для конкретного узла, например:
Command sudo ipa-replica-manage list ipasrv.testdomain.test -vРаскрыть title Справка Информация title Справка Command ipa-replica-manage list <HOST> -v
Команда выводит детальную информацию о всех соглашениях репликации для указанного узла: статус и метки времени последних инициализаций и обновлений реплик.
Используются следующие параметры:
- <HOST>
FQDN узла для которого будет выводиться подробный статус соглашений, -v
включает подробный режим.
Пояснение вывода команды:
- last init status
код результата последней инициализации реплики (0 = успешно, иначе ошибка), - last init ended
время завершения инициализации, - last update status
код результата последнего инкрементального обновления (0 = успешно, иначе ошибка), - last update ended
время завершения обновления (если никогда не выполнялось успешно после инициализации → 1970-01-01 00:00:00+00:00).
Блок кода title Вывод 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
- <HOST>
- На любом узле вывести значения счётчиков изменений (RUV) при помощи команды:
Command sudo ipa-replica-manage list-ruvРаскрыть title Справка Информация title Справка Команда позволяет получить значения счётчиков изменений (RUV) для всех реплик как в доменной части, так и (при наличии DogTag) в службе сертификатов. По сравнению с простым выводом топологии она даёт представление о точке синхронизации каждой реплики, что помогает оперативно выявлять узлы, отстающие по приёму изменений. Если счётчик одного узла существенно меньше, чем у остальных, значит он не подтянул последние операции (создание/удаление/изменение записей) из домена или CA.
Блок кода title Вывод без подключенного DogTag Replica Update Vectors: ipasrv.testdomain.test:389: 4 ipacln.testdomain.test:389: 3 Certificate Server Replica Update Vectors: No CS-RUVs found.Блок кода title Вывод c подключенным DogTag Replica 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) при помощи команды:
Command sudo ipa-replica-manage dnarange-showРаскрыть title Справка Информация title Справка Команда выводит назначенные UID/GID-диапазоны (DNA) для каждого сервера; для реплик без созданных пользователей выводит «No range set». Помогает убедиться, что новые реплики получили корректный диапазон при создании первой записи; отсутствие диапазона у «визуально активной» реплики указывает, что на ней ещё не создавались пользователи или группы.
Блок кода title Вывод ipasrv.testdomain.test: 1188400002-1188500499 ipacln.testdomain.test: 1188500504-1188599999
- На любом узле вывести базовый список узлов при помощи команды:
- Для диагностики доступности узлов, участвующих в репликации сертификатов DogTag CA в составе пакета freeipa-server предоставляется инструмент ipa-careplica-manage. Для выполнения диагностики:
- На любом узле вывести базовый список узлов участвующих в репликации сертификатов DogTag CA при помощи команды:
Command sudo ipa-csreplica-manage listРаскрыть title Справка Информация title Справка Отображает все узлы в текущей топологии, участвующие в репликации сертификатов DogTag CA, проверяя отсутствие «призрачных» или пропавших узлов. Позволяет убедиться, что каждый сервер имеет корректную роль.
Блок кода title Вывод ipasrv.testdomain.test: master ipacln.testdomain.test: master
- На любом узле вывести подробный статус соглашений репликации сертификатов DogTag CA для конкретного узла, например:
Command sudo ipa-csreplica-manage list ipasrv.testdomain.test -vРаскрыть title Справка Информация title Справка Command ipa-careplica-manage list <HOST> -v
Команда выводит детальную информацию о всех соглашениях репликации сертификатов DogTag CA для указанного узла: статус и метки времени последних инициализаций и обновлений реплик.
Используются следующие параметры:
- <HOST>
FQDN узла для которого будет выводиться подробный статус соглашений сертификатов DogTag CA, -v
включает подробный режим.
Пояснение вывода команды:
- last init status
код результата последней инициализации реплики (0 = успешно, иначе ошибка), - last init ended
время завершения инициализации, - last update status
код результата последнего инкрементального обновления (0 = успешно, иначе ошибка), - last update ended
время завершения обновления (если никогда не выполнялось успешно после инициализации → 1970-01-01 00:00:00+00:00).
Блок кода title Вывод 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
- <HOST>
- На любом узле вывести базовый список узлов участвующих в репликации сертификатов DogTag CA при помощи команды:
- Для диагностики доступности узлов в текущей топологии, а также для диагностики актуальности репликации узлов в составе пакета freeipa-server предоставляется инструмент ipa-replica-manage. Для выполнения диагностики:
Проверка суффиксов репликации
- Для диагностики наличия и корректности LDAP-суффиксов репликации в составе пакета freeipa-server предоставляется инструмент ipa с командами topologysuffix-find, ipa topologysuffix-show, ipa topologysuffix-verify. Для выполнения диагностики:
- На любом узле выполнить обзор суффиксов при помощи команды:
Command sudo ipa topologysuffix-find --allРаскрыть title Справка Информация title Справка Показывает топологические суффиксы LDAP domain и ca (только при наличии центра сертификации DogTag), которые участвуют в репликации, вместе с полным набором их атрибутов и метаданных. Помогает понять, почему нужные данные не реплицируются между серверами. Также сразу видно отсутствие или некорректность суффиксов в топологии, что указывает на проблемы конфигурации репликации.
Пояснение вывода команды:
dn
полный DN записи в LDAP,Имя суффикса
значение атрибута cn, задающее понятное имя суффикса,DN управляемого суффикса LDAP
показывает базовый DN LDAP-суффикса,nsDS5ReplicaStripAttrs
список атрибутов, исключаемых из репликации,nsDS5ReplicatedAttributeList
список атрибутов, которые будут реплицироваться, за исключением тех, что перечислены после ключевого слова EXCLUDE,nsDS5ReplicatedAttributeListTotal
список всех атрибутов, которые будут реплицированы полностью, за исключением тех, что перечислены после ключевого слова EXCLUDE,objectClass
указывает, к каким объектным классам относится запись.
Блок кода title Вывод без подключенного 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 ---------------------------------
Блок кода title Вывод с подключенным 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, при помощи команды:
Command sudo ipa topologysuffix-verify domainРаскрыть title Справка Информация title Справка Command ipa topologysuffix-verify <SUFFIX>Команда выполняет проверку репликационной топологии для указанного LDAP-суффикса, анализируя объекты «topology suffix» и связанные с ними «topology segment» и убеждаясь, что между всеми серверами настроены двунаправленные соглашения репликации. Если обнаруживается хоть один сегмент с односторонней связью или разрыв репликации, команда выводит сообщение об ошибке, что позволяет быстро выявить и устранить сбои в репликации. При отсутствии каких-либо проблем команда завершится без ошибок, подтверждая целостность конфигурации.
Используется следующий параметр:
- <SUFFIX>
Имя суффикса репликации. Например domain или ca.
- <SUFFIX>
Блок кода title Вывод ================================================================= Топология репликации суффикса "domain" соответствует требованиям. =================================================================
- На любом узле выполнить обзор суффиксов при помощи команды:
- Для диагностики наличия и корректности LDAP-суффиксов репликации в составе пакета freeipa-server предоставляется инструмент ipa с командами topologysuffix-find, ipa topologysuffix-show, ipa topologysuffix-verify. Для выполнения диагностики:
...