Проблема подключения к серверу 1С:Предприятия, работающему под управлением операционной системы Linux, часто ставит в тупик даже опытных администраторов. Типичная ситуация: вы настраиваете подключение по понятному адресу или IP, но система выдает ошибку, в которой фигурирует совершенно другое, «самопроизвольно» возникшее имя сервера. Давайте подробно разберем, почему это происходит и как привести систему в рабочее состояние.
Для начала проанализируем ситуацию, почему в сообщении об ошибке появляется имя srv.buh.org.ru, хотя в настройках базы указано srv.org.ru. Это происходит из-за особенностей архитектуры 1С. Когда клиентское приложение инициирует соединение, оно обращается к менеджеру кластера (процесс ragent или rmngr) по адресу, указанному в стартере.
Однако после успешной авторизации сервер передает клиенту список доступных рабочих процессов. Важный нюанс заключается в том, что сервер передает свое имя так, как он сам «видит» себя в операционной системе Linux. Если в настройках ОС Linux хост называется srv.buh.org.ru, сервер 1С принудительно заставит клиента обращаться именно по этому адресу. Если компьютер пользователя (клиент) не может разрешить (resolve) это доменное имя в IP-адрес через DNS или локальный файл hosts, возникает ошибка «Сервер не отвечает».
Первым делом нам необходимо выяснить, какое именно имя сервер считает «своим». Для этого подключимся к серверу по SSH и выполним стандартные команды диагностики:
Рассмотрим команду для получения краткого имени хоста:
hostname
И команду для получения полного доменного имени (FQDN):
hostname -f
Если результат выполнения этих команд возвращает то самое «проблемное» имя (например, srv.buh.org.ru), значит, корень проблемы найден. Нам нужно привести настройки операционной системы к единому стандарту, который будет понятен и серверу, и всем клиентским рабочим станциям.
Разберем, как правильно сконфигурировать системные файлы Linux. Для корректной работы 1С крайне важно, чтобы внешний IP-адрес сервера был явно сопоставлен с его именем внутри файла /etc/hosts.
Отредактируем файл /etc/hosts. Обязательно убедитесь, что запись с вашим реальным IP-адресом идет выше или является приоритетной по отношению к 127.0.0.1 для основного имени сервера. Пример правильной настройки:
127.0.0.1 localhost
192.168.1.10 srv.org.ru srv
Здесь 192.168.1.10 — это статический IP вашего сервера. После внесения изменений необходимо обновить имя хоста в файле /etc/hostname, записав туда srv или srv.org.ru, и перезапустить сетевую службу или весь сервер для применения изменений.
Иногда простого изменения системных настроек недостаточно, так как 1С кэширует сведения о рабочих серверах в своем реестре. Если часть пользователей (например, те самые 8 человек) могут зайти, а остальные — нет, это может означать, что разные рабочие процессы используют устаревшие данные из файлов .lst.
Выполним процедуру очистки кэша сервера по шагам:
systemctl stop srv1cv83/home/usr1cv8/.1cv8/1C/1cv8/conf или /var/lib/1cv8/.1cv8/1C/1cv8/conf1CV8Reg.lst. Внимание! Перед редактированием обязательно сделайте резервную копию этого файла.srv.buh.org.ru. Заменим их на правильное имя srv.org.ru или на IP-адрес.snmp и другие временные данные в каталоге srvinfo (но не сам реестр 1CV8Reg.lst, если вы не хотите пересоздавать кластер с нуля).systemctl start srv1cv83Если вы не можете оперативно изменить настройки на сервере или в DNS-зоне предприятия, можно применить «быстрое решение» на стороне пользователей. Проанализируем ситуацию: клиент получает имя srv.buh.org.ru и не знает, куда обращаться.
Мы можем принудительно прописать соответствие на каждой рабочей станции в файле C:\Windows\System32\drivers\etc\hosts:
192.168.1.10 srv.buh.org.ru
192.168.1.10 srv.org.ru
Это заставит Windows мгновенно находить сервер, игнорируя запросы к DNS-серверу. Однако помните, что это решение сложно масштабировать на большое количество пользователей, поэтому приоритетным является исправление настроек на стороне Linux-сервера.
Рассмотрим еще два важных момента, которые могут влиять на подключение. Во-первых, это протокол IPv6. На многих дистрибутивах Linux (Ubuntu, Debian, CentOS) IPv6 включен по умолчанию. 1С может пытаться сопоставить имя сервера с локальным адресом ::1, что вызывает сбои при ответе клиенту, работающему только по IPv4. Если ваша сеть не использует IPv6, рекомендуется отключить его в параметрах ядра sysctl.
Во-вторых, обратите внимание на количество рабочих процессов в консоли администрирования 1С. Если проблема возникает только после того, как на сервер зашло определенное количество людей (как в примере автора — 8 человек), возможно, один рабочий процесс настроен корректно, а при попытке запуска второго процесса (или при распределении нагрузки на другой rworker) передается неверное имя хоста. Тщательно проверьте свойства каждого рабочего сервера в консоли администрирования (раздел «Рабочие серверы»). Поле «Сетевое имя» там должно строго соответствовать тому, что разрешается (resolve) на клиентах.
Резюме: Основная задача — добиться того, чтобы команда hostname -f на сервере выдавала то же самое имя, которое прописано в настройках подключения у пользователей, и чтобы это имя гарантированно преобразовывалось в IP-адрес на стороне клиента.