В одном из лучших руководств администраторов «UNIX and Linux System Administration
Handbook, © 2018 Pearson Education lnc.» описывается такой метод настройки систем: «Копируй, вставляй, молись».
Какой бы ни была подробной инструкция и на какой бы типовой системе она не составлялась, всегда что-то может пойти не так.
В этой публикации рассмотрим, как искать и устранять ошибки авторизации ОС сервером 1С на базе linux. Тех, кто заинтересовался, прошу под кат…



 



Дай человеку рыбу и он будет сыт один день.
Дай человеку леща и он пойдет на работу.
вероятно не © Лао-цзы





Отладка, как для программистов, так и для системных администраторов, занимает значительно большую часть времени, чем самая тщательная первичная настройка систем.
Все течет, все меняется. Темные силы электричества готовы обрушить работу любого проекта, особенно если он никогда и не работал.
Поэтому сразу надо понимать как, где и с помощью чего, искать баги.




Все счастливые семьи похожи друг на друга,
а каждая несчастливая семья несчастлива по-своему.
© Л.Н. Толстой



В схеме с доменной авторизацией 1С будет почти по Толстому, на стороне клиента ошибки будут выглядеть одинаково — окно ввода пароля при попытке открыть базу 1С (как следствие, письмо от пользователя: "Не могу войти в 1С, пробовал все пароли, ни один не подходит"), но под капотом, мы имеем несколько точек отказа, которые могут случиться все или по отдельности, в огромном количестве комбинаций зависящих как от настроек, так и от версии платформы и ранга домена.



Исходные данные остаются прежними, в смешанном домене windows (linux & windows рабочие станции) сервер 1С на базе РедОС.



Описаны в публикации "В облако на работу: Все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Рецепты от Капитана",


поэтому уберу подробности под спойлер




 



  • Контроллер домена, сервер Windows 2012 R2, домен AD уровня Windows 2012. dc.test.loc
  • Рабочая станция Windows 10. win-cln01.test.loc
  • Рабочая станция РедОС 8. red8-cln01.test.loc
  • Сервер 1С РедОС 8 настроенный. red8-srv.test.loc
  • Сервер 1С РедОС 8 настраиваемый. red-srv.test.loc
  • Postgres 16 от PostgresPro
  • 1С Предприятие 64-х 8.3.24.1467
  • все в домене test.loc. 
    Пользователь, от которого работает сервер 1С usr1cv83, пароли у всех 123456.
    Все эти значения произвольные и должны в скриптах быть заменены на ваши.
    Имя домена *.local не рекомендуют коллеги РедОС.
  • все по железу 4ГБ RAM 50ГБ SSD 2 Ядра CPU
  • все развернуто в облаке из оригинальных iso образов производителей для чистоты эксперимента.


Те, кто больше любит видео, могут и сейчас посмотреть его вместо чтения статьи, желательно и то, и другое.
Видео

Аксиома: Контроллер домена, сеть и рабочие станции настроены и работают штатно.
Хорошие новости: Сеть настроенную по инструкции из упомянутой выше публикации достаточно сложно поломать. Когда я для написания этой публикации пробовал воспроизвести встречавшиеся в моей практике ошибки, часть из них повторить не удалось, часть удалось, но действиями, которые трудно представить в реальной жизни и требующих административных прав, например ручной установкой времени на станции клиента.

Свежая платформа 1С также более лояльно относится например к различиям в KVNO.
Грешил сначала на то, что работаю под лицензиями разработчика, но потом добрые люди дали на выходные штатную лицензию и все осталось точно так же.



Раз уж вспомнились добрые люди… Если у кого будет возможность на несколько дней (выходные) дать лицензии уровня КОРП или попросить временные у 1С, то получится написать статью об отказоустойчивом кластере.
Лицензии разработчика не дают его собрать. 
Конфиденциальность гарантирую или наоборот, могу упомянуть в разделе "Благодарности"
 



Методика расследования:



Не буду употреблять иностранных слов и заменю модное "дихотомия" на "танцуем от печки".
(тем более, что дихотомия, это зачастую не тот процесс, за который его выдают искатели ошибок).



В любом случае, первое с чем надо определиться, это задать себе и ответить на несколько вопросов:



  • ошибка возникает у всех пользователей и во всех базах всех серверов 1С (если вы при этом еще видите бегущих сисадминов с горящими вырезано цензурой глазами, то возможно весь домен устал и надо просто подождать) или у одного (нескольких).
  • ошибка возникает во всех типах клиентов 1С сервера 1С или только в веб. За исключением одного случая, если авторизация не работает в тонком клиенте, в веб она тоже не заработает
  • ошибка возникает во всех базах, размещенных на сервере 1С, или в одной (нескольких)
  • немаловажный вопрос: работало ли все изначально и сломалось или не работало никогда


Первые действия в расследовании, это выполнить в консоли:



  1. timedatectl status (или та система с помощью которой вы синхронизируете время с контроллером домена) проверяем что работает
  2. nslookup dc.test.loc проверяем что видится контроллер домена
  3. id usr1cv83 проверяем что отрабатываются запросы в домене
  4. kinit usr1cv83 получаем тикет Kerberos интерактивно
  5. klist -e -k -t /1c/usr1cv83.keytab и hostname сверяемся, что файл существует, корректен и имена служб в нем выданы для настраиваемого сервера
  6. kinit -k -t /1c/usr1cv83.keytab usr1cv83@TEST.LOC получаем тикет Kerberos используя файл keytab



Все эти команды должны отработать без ошибок, при наличии сообщений об ошибках здесь, двигаться дальше и переходить к настройкам 1С нет смысла.



Если при первом взгляде все выглядит пристойно, углубиться в расследование помогут журналы:



  • технологический журнал 1С с мониторингом событий CONN и EXCP, можно отдельно посмотреть VRSREQUEST и VRSRESPONSE, но в случае веб-клиента, по сути это будет дубль логов apache.
    logcfg.xml

     <?xml version="1.0" encoding="UTF-8"?>
    <config xmlns="http://v8.1c.ru/v8/tech-log">
     <log location="\1c\tg" history="2">
      <event> 
       <eq property="Name" value="CONN"/>
      </event>
      <event> 
       <eq property="Name" value="EXCP"/>
      </event>
      <property name="all"/>
     </log>
    </config>





регистрации apache, если расследуется ошибка на веб-клиенте. Настроен по умолчанию и находится в /var/log/httpd. Если запросы идут по протоколу http, то это файлы access_log error_log и ssl_access_log ssl_error_log если используется https.






Ошибки связанные с единичными пользователями



  • Ошибка в имени пользователя или некорректно составленное имя пользователя домена.


Если имя пользователя обычно выбирают из выпадающего списка и в нем ошибиться трудно, то имени домена будет два как минимум короткое TEST и длинное TEST.LOC в нашем случае. Я видел варианты настройки систем, где они не взаимозаменяемы. В технологическом журнале 1С вы увидите с каким именем пытается авторизоваться пользователь.



  • Расхождение во времени с контроллером домена на клиенте


В технологическом журнале будет выглядеть clock skew too great (или похожие со словом clock/время)
Если настроен веб-сервер, то надо пробовать веб-клиент, в нем ошибки не будет.



  • Не работает авторизация в браузере


Браузеры, кроме Edge, нуждаются в дополнительной настройке для доменной авторизации.
Проще всего проверить попробовав подключиться клиентом 1С в режиме веб-клиента.



Ошибки связанные со всеми пользователями и во всех типах клиентов ведут на сервер 1С (веб-сервер)



  • Расхождение во времени с контроллером домена или его недоступность на сервере 1С.


Это первые две вещи, которые стоит проверить, попав в консоль сервера, до просмотра всех журналов.
В стабильном продуктовом контуре их вероятность не велика, но в тестовом наиболее вероятна.



  • Не отключенный/не настроенный Selinux


Порождает загадочные ошибки, поэтому тоже до просмотра журналов желательно отключить Selinux, хотя бы и в тестовых целях.



  • Некорректный/отсутствующий/недоступный файл keytab


В технологическом журнале будет выглядеть как "Ошибка доступа к файлу" или "Unsupported key table format"
Если настроен веб-сервер, то аналогично в логах ahache.
Если файл присутствует, мы же его видели на шаге предпроверки, то надо проверить права доступа и владельца.



  • Отсутствие в файл keytab записи для службы 1С (службы веб-сервера)


В технологическом журнале будет выглядеть как "Не найдена запись в файле для ..."
Если настроен веб-сервер, то аналогично в логах ahache.
Как вариант, запись в файле может присутствовать, но не будет для нее записи SPN.
Также на шаге предпроверки мы эту ошибку должны были поймать.



Ошибки связанные со всеми пользователями, только в веб клиенте



  • Ошибки возникают в одной (нескольких) базах, в других все работает.


Очевидно, это связано с файлом публикации информационной базы. Как вариант поменять строку соединения в рабочем файле публикации или наоборот из рабочей публикации скопировать в нерабочую строки относящиеся к авторизации kerberos.



  • Знаменитая ошибка 402 Payment Required


Связана с тем, что в свойствах учетных записей пользователя под которым запускается служба 1С и для компьютера на котором она работает не настроено делегирование kerberos.



  • Некорректный/отсутствующий/недоступный файл keytab или смена KVNO пользователя


Веб-сервер, в этом отношении более категоричен, чем актуальные редакции платформы 1С, для него смена KVNO это повод отказать в доступе.



Конечно вариаций ошибок может быть и больше.
Напишите пожалуйста в комментариях, какие встречались вам.



По поводу предложений настроить вам сеть под ключ.
Спасибо всем, кто отписался. По моему убеждению настраивать/пробовать настроить сеть должен тот, кто будет в ней жить.
А вот если у вас что-то не получается/не получилось или есть задачи категории 1С: Эксперта, которые можно выполнять за пределами рабочего времени, то вы знаете где меня искать.



Благодарности:



Благодарю компанию ©Serverspace за предоставленное оборудование, без поддержки собрать такой пингвинариум мне было бы негде.



Итог и планы на будущее:



Так вот не торопясь мы после настройки персонального рабочего места на РедОС 7.3, посмотрели РедОС 8 и почти полностью собрали рабочую сеть 1С на отечественной ОС подходящую для работы среднего размера компании.
С веб-серверами, доменной авторизацией и прочая прочая...
Осталось настроить регулярное архивирование, чтобы не потерять нажитое, к нему и перейдем в следующей публикации, если все пойдет по плану.
Если найдутся серверные лицензии 1С, то есть достаточно свежее решение по построению отказоустройчивого кластера. Гораздо красивее, чем предлагаемое в ИТС (по крайней мере по скорости).
В итоге получится мини-курс Импортозамещение ОС в контексте 1С Предприятие. Жалко что коллеги из Яндекса не взялись помочь оформить его именно как курс.



В благословенные времена, когда семинары проходили не онлайн, а в конференц-холлах, обязательно на галерке сидел технически продвинутый человек, который рвал на себе волосы показывая пальцем в докладчика и тихим шепотом советуя так не делать.
Причем иногда количество волос на голове этого человека намекало, на скольки конференциях он уже побывал.





Статья продолжает серию публикаций:





Серия "Рецепты от Капитана" на всякий случай



Комментарии (0)