Решение типовых проблем Avanpost Directory Service

7.3. Решение типовых проблем Avanpost DS и интегрируемых сервисов

Навигатор по разделу:

1. Avanpost DS

Проблема


1.1. Не запускается служба "ads".

Команда для просмотра логов
journalctl -xef -t ads

В логах присутствуют сообщения вида:

ds01.avanpost.local ads[5319]: config is valid
ds01.avanpost.local ads[5319]: Error initing new server: Error Creating Dir: "/opt/avanpost/ads/ds-log" error: mkdir /opt/avanpost/ads/ds-log: permission denied

Решение


По логам видно, что служба "ads" не может открыть директорию "/opt/avanpost/ads/ds-log" из-за нехватки прав.

Требуется проверить, какие права выданы на директорию "/opt/avanpost/ads/" с помощью команды:

ls -la /opt/avanpost/ads/

 

Видно, что права на директорию и все хранящиеся в ней файлы выданы пользователю "unknown". Владельцем директории "/opt/avanpost/" должен быть пользователь "ads".

Решение: выдать права на директорию "/opt/avanpost/" пользователю "ads" с помощью команды:

sudo chown -R ads:ads /opt/avanpost


Проблема


1.2. Не запускается служба "ads".

Команда для просмотра логов
journalctl -xef -t ads

В логах присутствуют сообщения вида:

ds01.avanpost.local ads[37956]: config is valid
ds01.avanpost.local ads[37956]: badger INFO: All 1 tables opened in 0s
ds01.avanpost.local ads[37956]: badger INFO: Discard stats nextEmptySlot: 0
ds01.avanpost.local ads[37956]: badger INFO: Set nextTxnTs to 16
ds01.avanpost.local ads[37956]: badger INFO: Deleting empty file: /opt/avanpost/ads/ds-log/000015.vlog
ds01.avanpost.local ads[37956]: Restored USN 14 14
ds01.avanpost.local ads[37956]: Start DS in Public mode
ds01.avanpost.local ads[37956]: set site name: default
ds01.avanpost.local ads[37956]: Replication grpc listening on 0.0.0.0:41005
ds01.avanpost.local ads[37956]: Starting grpc active replication ...
ds01.avanpost.local ads[37956]: Ctl grpc listening on 0.0.0.0:48910
ds01.avanpost.local ads[37956]: Internal grpc listening on :25489
ds01.avanpost.local ads[37956]: Start writing repl metadata...
ds01.avanpost.local ads[37956]: Error initing new server: initKDCServer err: NewKDCApp err: NewKDCServer err: could not create TCP listener: listen tcp 0.0.0.0:88: bind: permission denied

Решение


По логам видно, что после обновления Avanpost DS, служба "ads" не может открыть порты ниже 1024.

Решение: разрешить службе "ads" открывать поты ниже 1024:

sudo setcap CAP_NET_BIND_SERVICE=+eip /opt/avanpost/ads/cmd/ads/ads


Проблема


1.3. После первого запуска службы "ads" в веб-интерфейсе администратора Avanpost DS отображаются не все разделы.

Решение


Из-за того что служба "ads" не смогла открыть нужные порты, работа сервиса ограничена. Вследствие чего не все разделы веб-консоли отображаются. 

Решение: выключить службу "ads", удалить директории "/opt/avanpost/ads/ds-log" и "/opt/avanpost/ads/data" (это приведет к возврату службы "ads" к заводским настройкам), затем запустить службу "ads".

sudo systemctl stop ads
sudo rm -rf /opt/avanpost/ads/ds-log
sudo rm -rf /opt/avanpost/ads/data
sudo systemctl start ads

Пример лога при корректном запуске службы "ads":



Проблема


1.4. При попытке ввода в домен рабочей станции через dscli, выдается ошибка.

При попытке ввода рабочей станции в домен выдается ошибка вида:

[root@cl01 avanpost]# sudo /opt/avanpost/tools/dscli/dscli join -domain avanpost.local -login
admin's password *************
2025/07/17 16:32:45 Error: Handle err: (*cli.JoinCliCommand).Run err: no available cli servers 

При этом DNS записи о домене резолвятся на рабочей станции и пароль был введен верный.

Решение


Решение: в конфигурационном файле "/etc/authselect/nsswitch.conf" в строке "hosts:" переместить параметр "dns" на третье место.

Открыть файл /etc/authselect/nsswitch.conf для редактирования
sudo nano /etc/authselect/nsswitch.conf



Проблема


1.5. Утрачен доступ к учетной записи администратора Avanpost DS.

Решение


Решение: восстановить Avanpost DS из резервной копии по инструкции: "7.11. Резервное копирование Avanpost DS и восстановление из копии".



Проблема


1.6. Смена пароля пользователя с флагом "Требовать смену пароля при следующем входе".

Решение


Решение 1: подключиться по SSH на рабочую станцию в домене Avanpost DS под требуемым пользователем и сменить пароль.

Решение 2: сменить пароль пользователя в GUI на рабочей станции в домене Avanpost DS.



Проблема


1.7. Ошибка входа при попытке аутентификации под пользователем в домене Avanpost DS на рабочей станции под управлением ОС Astra.

Для диагностики требуется на контроллере домена, к которому обращается рабочая станция, выполнить команду (сразу после попытки аутентификации под пользователем на рабочей станции): 

journalctl -xef

В логе присутствует сообщение вида:

авг 29 12:03:08 avanpost.local: pam_su(su-l:account): Permission denied because the current task label: 0:63:0:0.0 is out of available to the user labels. User test.test has min MAC label: 0:0, max MAC label: 0:0 and MIC level: 0

Решение


Решение: выключить мандатный контроль на рабочей станции.



2. PowerDNS

Диагностика авторизации pdns по протоколу Kerberos

1. Сервис pdns запустился без ошибок:

sudo journalctl -xef -t pdns_server
фев 11 12:51:42 ds02.avanpost.local pdns[11921]: GSSAPI client step 1
фев 11 12:51:42 ds02.avanpost.local pdns[11921]: GSSAPI client step 1
фев 11 12:51:42 ds02.avanpost.local pdns[11921]: GSSAPI client step 1

2. В разделе "Журнал" веб-интерфейса Avanpost DS нет ошибок вида  "TGT ***" пользователя "srv_pdns".

Проблема


2.1. При настройке второго и последующих контроллеров домена, не запускается служба "pdns".

Решение


Дело в том, что служба "pdns" стартует только при подключении к ldap. Но второй и все последующие контроллеры домена Avanpost DS при первом запуске ждут репликации с первичным контроллером домена. После репликации вторичный контроллер становится "полноценным" и работает в штатном режиме, служба "pdns" на нем запустится. 

 Решение: запуск первичной репликации на втором (и последующих) контроллере домена с помощью команды по шаблону:

Шаблон команды
/opt/avanpost/ads/cli/cli add-instance --host [IP-АДРЕС НОВОГО] --name [FQDN2] --endpoint [FQDN1]:48910 --user [ADMIN_USER] --password [ADMIN_PASSWORD]

Заменить [ADMIN_USER] и [ADMIN_PASSWORD] на реквизиты учетной записи пользователя с правами добавления контроллеров, по умолчанию это Administrator:Avanp0st

Заменить [IP-АДРЕС НОВОГО] IP-Адрес нового контроллера.

Заменить [FQDN1] на hostname первичного(основного) контроллера.

Заменить [FQDN2] на hostname нового контроллера.

Пример команды
/opt/avanpost/ads/cli/cli add-instance --host 192.168.1.11 --name ds02.avanpost.local --endpoint ds01.avanpost.local:48910 --user ADMIN_USER --password ADMIN_PASSWORD

Примечание:

"pdns-recursor" каждого вторичного контроллера домена должен смотреть сам на себя и на первичный контроллер домена. Эта настройка производится в "recursor.conf":

RedOS
sudo nano /etc/pdns-recursor/recursor.conf
forward-zones=avanpost.local=127.0.0.1:5300;192.168.1.11:53
local-address=0.0.0.0:53
dnssec=off # No RRSIG, current state is Bogus
Astra
sudo nano /etc/powerdns/recursor.conf
forward-zones=avanpost.local=127.0.0.1:5300,192.168.1.11:53
local-address=0.0.0.0:53
dnssec=off # No RRSIG, current state is Bogus
Alt
sudo nano /etc/pdns-recursor/recursor.conf
forward-zones=avanpost.local=127.0.0.1:5300,192.168.1.11:53
local-address=0.0.0.0:53
dnssec=off # No RRSIG, current state is Bogus


Проблема


2.2. Не работает DNS.

В некоторых случаях dns сервер не отдает SRV записи. Для диагностики можно использовать команду dig. Рекомендуется использовать последовательно 2 команды для проверки pdns и pdns-recursora по шаблону:

pdns шаблон команды
dig @127.0.0.1 -p 5300 srv _ldap._tcp.[Домен2ур].[Домен1ур]
#если вывод команды некорректный, то проблема в конфиге pdns
pdns-recursor шаблон команды
dig @127.0.0.1 -p 53 srv _ldap._tcp.[Домен2ур].[Домен1ур]
#если вывод команды некорректный, то проблема в конфиге pdns-recursor

Заменить [Домен1ур] на свой домен первого уровня.

Заменить [Домен2ур] на свой домен второго уровня.

pdns пример команды
dig @127.0.0.1 -p 5300 srv _ldap._tcp.avanpost.local
#если вывод команды некорректный, то проблема в конфиге pdns
pdns-recursor пример команды
dig @127.0.0.1 -p 53 srv _ldap._tcp.avanpost.local
#если вывод команды некорректный, то проблема в конфиге pdns-recursor

При нормальной работе в выводе команд обязательно должны быть записи типа "SRV".

Пример корректного вывода команды
...
;; ANSWER SECTION:
_ldap._tcp.avanpost.local. 1500  IN  SRV  0 0 389 ds01.avanpost.local.
_ldap._tcp.avanpost.local. 1500  IN  SRV  0 0 389 ds02.avanpost.local.
...

Проверить работу Обратной зоны DNS:

pdns пример команды
dig -x @127.0.0.1 -p 5300
pdns-recursor пример команды
dig -x @127.0.0.1 -p 53

Решение


Решение 1: Настроить конфигурационный файл служб "pdns" и "pdns-recursor" по инструкции "4.4. Настройка PowerDNS на контроллере Avanpost DS" (шаги 2 и 3).


Может быть и другая причина — Networkmanager, он удаляет файл "/etc/resolve.conf" и создает его заново со своими атрибутами. Из-за этого команда dig обращается не к PDNS серверу, а к внешнему DNS (например, DNS Google: 8.8.8.8)

Решение 2: Отключить Networkmanager и указать в файле "/etc/resolv.conf" в качестве DNS сервера "127.0.0.1". Для этого необходимо выполнить команды:

sudo systemctl stop NetworkManager && sudo systemctl disable NetworkManager
sudo rm -rf /etc/resolv.conf
sudo touch /etc/resolv.conf && sudo nano /etc/resolv.conf
Пример /etc/resolv.conf
# Generated by NetworkManager
search localdomain avanpost.local
nameserver 127.0.0.1
nameserver 1.1.1.1


Проблема


2.3. Сервис pdns не запускается и выдает ошибку вида "Failed to initialize krb5 context"

Команда для проверки
sudo journalctl -xe -t pdns_server
Пример ошибки
PDNSException while filling the zone cache: [LDAP GSSAPI] Failed to initialize krb5 context

Решение


Решение: Проверить, что утилита "ktutils" приглашает к вводу команд, а не выдаёт ошибку при вызове. 

Пример корректной работы ktutil
[root@ds01 ~]# ktutil
ktutil:  

Если утилита отрабатывает некорректно, то необходимо перепроверить файл "/etc/krb5.conf".



Проблема


2.4. Сервис pdns не запускается и выдает ошибку вида "gssapi ldap/localhost@AVANPOST.LOCAL"

Команда для проверки
sudo journalctl -xef -t pdns_server
Пример ошибки
gssapi ldap/localhost@AVANPOST.LOCAL

Решение


Решение: Убрать localhost из "/etc/hosts" и указать FQDN контроллера домена:

Убрать из /etc/hosts
[::1] localhost
127.0.0.1 localhost **
Добавить в /etc/hosts
[::1] [Домен3ур].[Домен2ур].[Домен1ур]
127.0.0.1 [Домен3ур].[Домен2ур].[Домен1ур]
Пример /etc/hosts
[::1] ds01.avanpost.local
127.0.0.1 ds01.avanpost.local

Проблема


2.5. Сервис pdns не запускается при dns_control: true в Avanpost DS. 

Пример ошибки
ds01.avanpost.local pdns_server[56191]: This is a standalone pdns
ds01.avanpost.local pdns_server[56191]: Listening on controlsocket in '/run/pdns/pdns.controlsocket'
ds01.avanpost.local pdns_server[56191]: UDP server bound to 127.0.0.1:5300
ds01.avanpost.local pdns_server[56191]: TCP server bound to 127.0.0.1:5300
ds01.avanpost.local pdns_server[56191]: PowerDNS Authoritative Server 4.9.2 (C) PowerDNS.COM BV
ds01.avanpost.local pdns_server[56191]: Using 64-bits mode. Built using gcc 12.4.1 20240730 (RED SOFT 12.4.0-1) on Dec  6 2024 00:00:00 by mockbuild@localhost.
ds01.avanpost.local pdns_server[56191]: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
ds01.avanpost.local pdns_server[56191]: Polled security status of version 4.9.2 at startup, no known issues reported: OK
ds01.avanpost.local pdns_server[56191]: Caught an exception instantiating a backend (ldap): [LDAP GSSAPI] Failed to initialize krb5 context
ds01.avanpost.local pdns_server[56191]: Cleaning up
ds01.avanpost.local pdns_server[56191]: PDNSException while filling the zone cache: [LDAP GSSAPI] Failed to initialize krb5 context

Решение


Проблема может быть в правах на конфигурационный файл "/etc/krb5.conf" и файл /etc/krb5.keytab.

Решение: Если права доступа к конфигурационному файлу "/etc/krb5.conf" не 644, то требуется выполнить команду для восстановления прав:

sudo chmod 644 /etc/krb5.conf && \
sudo chmod 644 /etc/krb5.keytab




Проблема


2.6. Сервис pdns не запускается на контроллере домена с включенным SELinux при dns_control: true в Avanpost DS.

Для диагностики требуется:

  1. Проверить корректность заполнения конфигурационных файлов "pdns.conf" и "recursor.conf".
  2. Выполнить команду:
    ls -la /etc/pdns/

    В выдаче должен присутствовать файл "srv_pdns.keytab".

  3. Выполнить команду:
    ls -la /var/lib/pdns/

    В выдаче должен отсутствовать файл "srv_pdns.tkt".

  4. Выполнить команду:
    journalctl -xef -t pdns_server

    В логе присутствуют сообщения вида:

    сен 03 14:15:26 ds01.avanpost.local pdns_server[696057]: Sep 03 14:15:26 Polled security status of version 4.9.2 at startup, no known issues reported: OK
    сен 03 14:15:26 ds01.avanpost.local pdns_server[696057]: Sep 03 14:15:26 [LDAP GSSAPI] krb5 error when creating the temporary cache file: Credentials cache permissions incorrect
    сен 03 14:15:26 ds01.avanpost.local pdns_server[696057]: Sep 03 14:15:26 [LDAP GSSAPI] Failed to acquire a TGT
    сен 03 14:15:26 ds01.avanpost.local pdns_server[696057]: Sep 03 14:15:26 [LdapBackend] Ldap connection to server failed: Failed to bind to LDAP server: Local error
    сен 03 14:15:26 ds01.avanpost.local pdns_server[696057]: Sep 03 14:15:26 Caught an exception instantiating a backend (ldap): Unable to connect to ldap server
    сен 03 14:15:26 ds01.avanpost.local pdns_server[696057]: Sep 03 14:15:26 Cleaning up
    сен 03 14:15:26 ds01.avanpost.local pdns_server[696057]: Sep 03 14:15:26 PDNSException while filling the zone cache: Unable to connect to ldap server

Решение


Для устранения проблемы требуется выполнить шаги:

  1. Временно отключить SELinux (если он включен). Для этого требуется выполнить команду:
    sudo setenforce 0
  2. Выполнить экспорт текущих разрешений в модуль "pdns_t". Для этого требуется выполнить команду:
    sudo audit2allow -b -r -t pdns_t -M pdns_t
  3. Применить созданный модуль "pdns_t". Для этого требуется выполнить команду:

    sudo semodule -i pdns_t.pp
  4. Включить SELinux. Для этого требуется выполнить команду:
    sudo setenforce 1
  5. Перезапустить сервис "pdns". Для этого требуется выполнить команду:
    sudo systemctl restart pdns


Обсуждение