Timeouts with authd on CentOS 7

В настоящее время я пытаюсь усовершенствовать свою почтовую систему, разрешив серверам, получившим от меня почту в течение последних десяти секунд, выполнять поиск по идентификатору. В то время как необходимые правила iptables работают безупречно, я сталкиваюсь с проблемами с установленным пакетом authd.

Вызов in.authd из командной строки дает желаемые результаты:

# in.authd -t60 --xerror --os -E 993,53558
993 , 53558 : USERID : OTHER :[U2FsdGVkX19EFvZ6dxXLJJl2oKKW/PVOKmX5ER0WWWs=]

Однако при попытке сделать то же самое через сетевой сокет я получаю задержку до 10 секунд, за которой следует ошибка:

# time echo 993, 53558 | nc localhost 113
993 , 53558 : ERROR :NO-USER

real    0m5.036s
user    0m0.003s
sys 0m0.007s

Эта задержка заставила меня предположить, что возникли проблемы с правами, что привело к таймауту. Если посмотреть на исходный код authd, это может произойти, если чтение из /proc/net/tcp* завершится неудачно или если поиск в этих файлах будет повторяться. Но:

Unix Permissions

Ident User

# finger ident
Login: ident                    Name: 
Directory: /                            Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

Group Memberships

# id ident
uid=98(ident) gid=98(ident) groups=98(ident)

В свете этого, вызов in.authd от имени пользователя ident работает как ожидалось:

# sudo -u ident in.authd -t60 --xerror --os -E 993,53558
993 , 53558 : USERID : OTHER :[U2FsdGVkX1/CxIcvTsEmTnhLSGjnwZ/X9TCwQ4ovZXk=]

File Permissions

# ls -alZ /proc/net/tcp*
-r--r--r--. root root system_u:object_r:proc_net_t:s0  /proc/net/tcp
-r--r--r--. root root system_u:object_r:proc_net_t:s0  /proc/net/tcp6

SELinux

Здесь нет ничего подозрительного:

# grep ident /var/log/audit/audit.log | audit2why
Nothing to do
# grep auth /var/log/audit/audit.log | audit2why
Nothing to do

У меня нет идей. Это также происходит, когда я разрешаю in.authd запускаться от имени root. journalctl не слишком полезен, так как он просто регистрирует переход рассматриваемого устройства в состояние отказа:

# journalctl -ln5 --unit=auth@*
systemd[1]: Started Authd Ident Protocol Requests Server ([::1]:55841).
systemd[1]: Starting Authd Ident Protocol Requests Server ([::1]:55841)...
systemd[1]: auth@7-::1:113-::1:55841.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Unit auth@7-::1:113-::1:55841.service entered failed state.
systemd[1]: auth@7-::1:113-::1:55841.service failed.

Перевод in.authd в режим "отладки" (если это можно так назвать) не дает никакой дополнительной информации. Мне не хватает принудительного указания имени пользователя через --username, поскольку меня больше волнует задержка, чем правильность вывода. Конечно, в наше время массового хостинга виртуальных пользователей, возвращаемые значения вряд ли будут корректными, но мне очень нравится идея возвращать что-то значимое. Любая помощь будет принята с благодарностью.

0
09.03.2016, 16:31
1 ответ

Пусть другие не попадутся в ту же ловушку. На самом деле все нормально. Из раздела тестирования документации authd:

Выполните « telnet localhost auth » и введите два порта, разделенные запятой. Два выбранных порта должны иметь внешний адрес localhost или 127.0.0.1, а также соответствующий локальный адрес. В противном случае будет возвращена ошибка NO-USER.

0
28.01.2020, 04:52

Теги

Похожие вопросы