При развертывании сервера 1С на операционной системе Ubuntu 18.04 в связке с СУБД PostgreSQL системные администраторы часто сталкиваются с ошибкой «11001 (0x00002AF9): Этот хост неизвестен». Эта проблема возникает на этапе создания новой информационной базы через консоль администрирования 1С или при попытке первого подключения. Ошибка указывает на то, что клиентская часть 1С (на Windows) не может разрешить сетевое имя сервера в IP-адрес или сервер 1С некорректно идентифицирует себя внутри сети. В качестве альтернативы стандартной оснастке можно использовать кроссплатформенную консоль администрирования серверов 1С через ras.
В этой статье мы подробно разберем, как устранить данную проблему, проанализируем настройки сетевых интерфейсов, конфигурацию PostgreSQL и системные локали Linux.
Ошибка с кодом 11001 генерируется сокетами Windows. Когда вы указываете в консоли администрирования адрес сервера (например, ubuntu), клиентское приложение пытается найти этот адрес в DNS или локальном файле hosts. Если поиск не дает результата, возникает исключение. Однако ситуация осложняется механизмом работы кластера 1С: консоль может успешно подключиться к менеджеру кластера по IP, но при создании базы менеджер передает клиенту свое внутреннее имя (hostname), которое клиент разрешить уже не может. Проанализируем шаги по исправлению этой ситуации.
Прежде всего, убедимся, что рабочая станция, с которой запускается консоль администрирования, «знает» сервер. Попробуем выполнить команду ping в командной строке Windows:
ping ubuntu
Если в ответ мы получаем «При проверке связи не удалось обнаружить узел», значит, необходимо отредактировать файл hosts на Windows-машине. Рассмотрим этот процесс подробнее:
C:\Windows\System32\drivers\etc\hosts.
192.168.1.239 ubuntu
Важно: После сохранения файла обязательно убедимся, что ping ubuntu начал возвращать ответ от нужного IP-адреса. Если пинг по имени не идет, дальнейшая настройка 1С бессмысленна.
Для корректной работы серверных процессов 1С (ragent, rmngr, rphost) критически важно, чтобы сам Linux-сервер понимал свое имя. Рассмотрим настройку файла /etc/hosts на сервере Ubuntu.
Часто по умолчанию в Ubuntu имя хоста привязано к петлевому интерфейсу (loopback) 127.0.1.1. Для 1С это может стать проблемой. Отредактируем файл:
sudo nano /etc/hosts
Проанализируем содержимое. Нам нужно добавить (или изменить) строку так, чтобы имя ubuntu указывало на реальный сетевой IP-адрес сервера:
127.0.0.1 localhost
192.168.1.239 ubuntu
После этого проверим командой hostname -i. Она должна возвращать 192.168.1.239, а не 127.0.0.1. Если сервер 1С будет считать себя «localhost», он передаст это имя клиенту, и клиент попытается найти базу на самом себе (на Windows-машине), что приведет к ошибке.
Если сетевые имена разрешаются корректно, но база все равно не создается, проблема может крыться в настройках доступа СУБД PostgreSQL. Разберем два основных файла конфигурации.
Параметр listen_addresses:
Посмотрим на файл /etc/postgresql/10/main/postgresql.conf (путь может зависеть от версии). Найдем строку listen_addresses. По умолчанию PostgreSQL слушает только localhost. Для работы с 1С установим значение:
listen_addresses = '*'
Настройка pg_hba.conf:
Этот файл отвечает за авторизацию. Если 1С пытается создать базу, она подключается к PostgreSQL от имени суперпользователя (обычно postgres). Выясним, разрешены ли такие подключения. В файле /etc/postgresql/10/main/pg_hba.conf добавим (или переместим выше) строку для внутренней сети:
host all all 192.168.1.0/24 md5
Или, если сервер 1С и PostgreSQL находятся на одной виртуальной машине, убедимся, что для 127.0.0.1 не используется метод peer, так как 1С работает через сетевой протокол TCP/IP, а не через сокеты Unix.
Одной из скрытых причин неудачного создания базы на Linux является отсутствие русской локали ru_RU.UTF-8. PostgreSQL при создании базы ориентируется на настройки системы, и если 1С запрашивает создание базы с определенным порядком сортировки, а в системе нет соответствующей локали — возникнет ошибка.
Проанализируем текущие локали командой:
locale -a
Если в списке нет ru_RU.utf8, выполним следующие действия по шагам:
sudo locale-gen ru_RU.UTF-8sudo update-locale LANG=ru_RU.UTF-8Без этого 1С может выдавать невнятные ошибки при попытке инициализации таблиц базы данных.
Убедимся, что брандмауэр (firewall) не блокирует взаимодействие. Для работы 1С требуются порты 1540 (агент), 1541 (менеджер), 1560-1591 (рабочие процессы) и 5432 (PostgreSQL). Проверим их состояние командой:
netstat -plnt
Важный момент: Проверьте, под каким пользователем запущен сервер 1С. Обычно это usr1cv8. У этого пользователя должны быть права на запись в каталог с данными (обычно /home/usr1cv8/.1cv8/). Если вы используете Ubuntu 18.04, также стоит проверить состояние AppArmor, который может блокировать запись процессов 1С в нетипичные каталоги.
Подводя итог, алгоритм исправления ошибки «хост неизвестен» выглядит так:
hosts на Windows и на Ubuntu.hosts.listen_addresses = '*').ru_RU.UTF-8.systemctl restart srv1cv8-8.3.12.1714 и systemctl restart postgresql.Соблюдение этих шагов позволяет полностью устранить сетевые препятствия и успешно создать информационную базу 1С на платформе Linux. Для решения других типовых проблем настройки полезно иметь под рукой справочник по типовым задачам администрирования Windows, Linux и 1С.