Как обойтись без правки файла "Hosts" на Windows для 1С-сервера при работе из разных подсетей

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Каждый системный администратор, обслуживающий клиент-серверные базы «1С:Предприятия», рано или поздно сталкивается с классической проблемой: пользователи из удаленных офисов, подключенные через VPN, или сотрудники из соседних подсетей (VLAN) не могут подключиться к базе. При этом возникает характерная ошибка: «server_addr=Server-1C descr=11001 (0x00002AF9): Этот хост неизвестен».

Самое удивительное, что тонкие клиенты на macOS и Linux в этой же сети работают без нареканий, а утилита nslookup на рабочих станциях Windows успешно сопоставляет имя сервера с его IP-адресом. Традиционным «костылем» в данном случае является ручная пропись соответствия адреса и имени в файле hosts на каждом клиентском компьютере Windows. Однако при штате в десятки и сотни машин этот метод превращается в административный кошмар.

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

---

Выясняем причину: особенности сетевого резолва Windows и алгоритм работы 1С

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

1. Ограничения широковещательных запросов в Windows

Когда Windows-клиент пытается разрешить короткое (односложное, или single-label) имя хоста (например, просто Server-1C), система по умолчанию использует следующую цепочку протоколов:

  1. Проверка локального файла hosts.
  2. Локальный DNS-кэш.
  3. Запрос к DNS-серверу (если настроены соответствующие правила).
  4. LLMNR (Link-Local Multicast Name Resolution) — отправка многоадресных запросов в локальную сеть.
  5. NetBIOS over TCP/IP (NBT) — широковещательный запрос (Broadcast) в локальный сегмент.

Если сервер 1С и клиент находятся в одной подсети, NetBIOS или LLMNR успешно находят сервер по его короткому имени. Но если клиент подключается из другой подсети через маршрутизатор (роутер, VPN-шлюз), широковещательный трафик (Broadcast/Multicast) физически блокируется маршрутизатором. Запрос не доходит до сервера.

2. Различия в поведении Windows и Unix-подобных систем (Linux, macOS)

Резолверы в Linux и macOS при запросе короткого имени сразу отправляют стандартный одноадресный (unicast) DNS-запрос на DNS-сервер, указанный в настройках подключения (например, на ваш роутер). Роутер, зная статическую запись, мгновенно возвращает IP-адрес.
Windows в целях безопасности по умолчанию считает, что короткие односложные имена без точек не должны отправляться во внешние DNS-серверы, и пытается разрешить их локально с помощью заблокированных маршрутизатором LLMNR/NetBIOS. В итоге имя остается неразрешенным.

3. Специфика алгоритма подключения платформы 1С

Рассмотрим, как именно клиентское приложение 1С подключается к серверу баз данных:

  1. Клиент считывает строку подключения из списка баз (там может быть указан IP-адрес, например, 10.3.10.10).
  2. Клиент успешно обращается по этому IP-адресу к менеджеру кластера 1С.
  3. Менеджер кластера определяет, какой рабочий процесс на каком рабочем сервере должен обслуживать этого клиента.
  4. Менеджер кластера возвращает клиенту имя рабочего сервера в том виде, в котором этот сервер зарегистрирован в консоли администрирования 1С (как правило, это локальное имя компьютера Windows, полученное при установке, например, Server-1C).
  5. Клиент получает это короткое имя Server-1C и пытается установить с ним новое соединение. Здесь и происходит сбой, так как Windows-клиент из другой подсети не может разрешить короткое NetBIOS-имя.

Таким образом, даже если вы пропишете в адресе базы IP-адрес, сервер 1С все равно принудительно заставит клиента обращаться к нему по сетевому имени хоста.

---

Решение №1: Использование FQDN-имени (DNS + настройка кластера 1С)

Самый правильный и надежный способ решить проблему — использовать полное доменное имя (FQDN) с суффиксом (например, .local или корпоративным доменом) и зарегистрировать его в кластере 1С. Разберем этот процесс по шагам.

Шаг 1. Настройка DNS-сервера на маршрутизаторе или локальном сервере

Нам необходимо сделать так, чтобы имя сервера имело доменную часть. Например, вместо короткого имени 1c-pc мы будем использовать 1c-pc.local.
Перейдем в настройки вашего DNS-сервера (это может быть встроенный DNS в роутере Cisco, Mikrotik или корпоративный DNS-сервер Windows/Linux) и создадим статическую запись (A-запись):


Имя хоста (FQDN): 1c-pc.local
IP-адрес: 10.3.10.10 (IP-адрес вашего сервера 1С)

Если вы используете маршрутизатор под управлением Cisco IOS, команда в консоли будет выглядеть следующим образом:

ip host 1c-pc.local 10.3.10.10

Шаг 2. Настройка DNS-суффиксов на клиентах (через DHCP)

Чтобы Windows понимала, куда направлять запросы коротких имен, настроим автоматическую передачу DNS-суффиксов.
На вашем DHCP-сервере, который раздает IP-адреса клиентам в подсетях и VPN-пулах, настройте передачу следующих параметров (DHCP Options):

Благодаря этому Windows-клиент, получив настройки сети по DHCP, при попытке обратиться к короткому имени 1c-pc автоматически преобразует запрос в 1c-pc.local и отправит его на ваш DNS-сервер. Запрос будет успешно разрешен.

Шаг 3. Регистрация FQDN-имени в консоли администрирования 1С

Теперь нам нужно заставить сервер 1С возвращать клиентам правильное имя с суффиксом .local.

  1. Откроем консоль «Администрирование серверов 1С Предприятия».
  2. Перейдем в ветку Кластеры -> Локальный кластер -> Рабочие серверы.
  3. По умолчанию там присутствует один сервер с коротким именем (например, 1С-PC). Платформа не позволит нам просто отредактировать его или удалить, так как он назначен Центральным сервером кластера.
  4. Создадим новый рабочий сервер. Нажмем правой кнопкой мыши на раздел Рабочие серверы -> Создать -> Рабочий сервер.
  5. В поле «Сетевое имя» укажем наше новое FQDN-имя: 1c-pc.local (также можно указать прямой IP-адрес сервера 10.3.10.10). Порт оставляем стандартным (1540).
  6. Сохраним настройки.

После этого в списке у вас будет два рабочих сервера: один со старым коротким именем, другой — с новым FQDN-именем или IP-адресом. Клиенты, подключающиеся по адресу 1c-pc.local, теперь будут успешно проходить авторизацию и не потеряют связь с рабочими процессами. Для массовой смены адресов подключения в списках баз пользователей домена можно применить скрипт централизованной замены имени сервера в файле ibases.v8i через GPO.

---

Решение №2: Изменение параметров центрального сервера через конфигурационные файлы (перевод на IP)

Если вы хотите полностью перевести кластер 1С на работу по IP-адресам без использования имен и не можете удалить старый центральный сервер через графическую консоль, мы можем отредактировать конфигурационные файлы кластера напрямую. Рассмотрим этот системный метод.

Важно: Перед выполнением этих действий обязательно остановите службу сервера 1С и сделайте резервную копию каталога с настройками кластера!

Разом разберем шаги по изменению конфигурации:

  1. Остановим службу «Агент сервера 1С:Предприятия 8.3» через утилиту services.msc.
  2. Перейдем в каталог хранения настроек кластера. По умолчанию в Windows это папка:
    C:\Program Files\1cv8\srvinfo (или C:\ProgramData\1C\1cv8).
  3. Создадим резервную копию папки srvinfo, скопировав ее в безопасное место.
  4. Откроем текстовым редактором (настоятельно рекомендуем Notepad++ для корректного сохранения кодировки UTF-8) файл 1cv8wsrv.lst, расположенный в корне каталога srvinfo.
  5. Найдем строку с именем нашего сервера и заменим его на IP-адрес или FQDN. Например, заменим:
    
    {1,
    {"1C-PC","Локальный кластер",1541,"",0,0}
    }
    
    на:
    
    {1,
    {"10.3.10.10","Локальный кластер",1541,"",0,0}
    }
    
  6. Перейдем в подкаталог зарегистрированного кластера (обычно он называется по GUID кластера или имеет вид reg_1541) и откроем файл 1CV8Clst.lst.
  7. С помощью автозамены (сочетание клавиш Ctrl + H) найдем все упоминания старого короткого имени сервера (например, 1C-PC) и заменим их на IP-адрес 10.3.10.10 или полное имя 1c-pc.local.
  8. Сохраним изменения во всех файлах.
  9. Запустим службу «Агент сервера 1С:Предприятия 8.3».

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

---

Решение №3: Автоматизация настройки кластера через утилиту командной строки RAC

Если вы не хотите вручную править файлы конфигурации .lst и при этом графическая консоль не позволяет вам переименовать или удалить центральный сервер, воспользуемся штатной консольной утилитой rac, которая поставляется вместе с платформой 1С.

Для этого нам понадобится запущенная служба администрирования ras (Remote Administration Server). Если она не запущена, запустим ее из командной строки:

"C:\Program Files\1cv8\8.3.XX.YYYY\bin\ras.exe" cluster --port=1545

(Где 8.3.XX.YYYY — версия вашей текущей платформы 1С)

Теперь с помощью утилиты rac мы можем подключиться к кластеру, просмотреть список рабочих серверов и изменить их параметры. Разберем пример сценария:

  1. Откроем командную строку от имени администратора.
  2. Получим список зарегистрированных серверов в кластере:
    
    "C:\Program Files\1cv8\8.3.XX.YYYY\bin\rac.exe" server --cluster=ИДЕНТИФИКАТОР_КЛАСТЕРА localhost:1545 list
    
  3. Используя полученный идентификатор рабочего сервера (ID), обновим его сетевое имя на IP-адрес или FQDN-имя:
    
    "C:\Program Files\1cv8\8.3.XX.YYYY\bin\rac.exe" server --cluster=ИДЕНТИФИКАТОР_КЛАСТЕРА localhost:1545 update --agent-host=10.3.10.10 ID_РАБОЧЕГО_СЕРВЕРА
    

Этот способ является наиболее безопасным и «чистым» с точки зрения методологии 1С, так как изменения вносятся через программный интерфейс администрирования API, что исключает случайное повреждение структуры файлов разметки параметров кластера. Для удобного управления параметрами серверов через службу ras без использования командной строки подойдёт графическая консоль администрирования серверов 1С на базе ras.

---

Резюме и рекомендации

Мы детально проанализировали проблему доступности сервера 1С в распределенных корпоративных сетях и пришли к выводу, что ручная правка файлов hosts на рабочих станциях — это следствие некорректной первоначальной настройки кластера и сетевых служб.

Для построения надежной и масштабируемой ИТ-инфраструктуры рекомендуем придерживаться следующих правил:

← На главную