Как настроить подключение клиента 1С к серверу 1С на виртуальной машине VirtualBox?

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

Развертывание тестовой лаборатории, в которой серверная часть 1С работает на виртуальной машине, а клиентское приложение и СУБД находятся на физическом хосте — классический сценарий для разработчиков и системных администраторов. Однако при первой же попытке подключения пользователи часто сталкиваются с проблемой: виртуальная машина пингуется, общая папка работает, но клиент 1С категорически отказывается видеть сервер 1С, выдавая ошибку соединения. В этой статье мы подробно разберем, почему возникает эта проблема, как правильно настроить сетевые интерфейсы в VirtualBox, решить проблему разрешения имен и настроить брандмауэры обеих систем для стабильной работы.

Поймем причину проблемы: почему режим NAT не подходит для 1С?

При создании новой виртуальной машины в VirtualBox по умолчанию активируется сетевой режим NAT (Network Address Translation). В этом режиме виртуальная машина находится за встроенным маршрутизатором VirtualBox и получает IP-адрес из внутренней подсети (обычно 10.0.2.x). Гостевая операционная система может свободно выходить во внешнюю сеть и «видеть» ваш физический компьютер (хост-машину), но внешняя сеть, включая ваш хост, не может напрямую достучаться до виртуальной машины.

Попытки пробросить порты (Port Forwarding) в режиме NAT для сервера 1С практически обречены на неудачу. Дело в том, что платформа 1С:Предприятие использует динамический диапазон портов. Клиентское приложение сначала обращается к менеджеру кластера, а тот перенаправляет запрос на один из свободных рабочих процессов rphost, порт которого назначается динамически. Настроить проброс всего динамического диапазона портов через встроенный NAT крайне сложно и неэффективно. Поэтому мы сразу откажемся от NAT в пользу более подходящих сетевых режимов.

Шаг 1. Выбор и настройка правильного сетевого адаптера в VirtualBox

Проанализируем два основных сетевых режима, которые позволят связать хост-машину и виртуальный сервер 1С в единую сеть.

  1. Виртуальный адаптер хоста (Host-Only Adapter): Это идеальный выбор, если вы настраиваете локальный тестовый контур на одном физическом компьютере и доступ к серверу 1С с других физических устройств в вашей локальной сети не требуется. В этом режиме создается изолированная сеть между вашим ПК и виртуальной машиной. Хост-машина в такой сети всегда получает фиксированный IP-адрес 192.168.56.1, а гостевая операционная система — адрес вида 192.168.56.x.
  2. Сетевой мост (Bridged Adapter): Этот режим необходим, если виртуальный сервер 1С должен быть доступен не только с вашего компьютера, но и со всех остальных рабочих станций в вашей физической локальной сети. Виртуальная машина становится полноценным участником вашей сети и получает IP-адрес от вашего физического роутера (например, 192.168.1.150).

Рассмотрим, как переключить сетевой адаптер на примере режима Host-Only:

  1. Полностью выключим виртуальную машину.
  2. Откроем настройки виртуальной машины в VirtualBox и перейдем в раздел «Сеть».
  3. На вкладке «Адаптер 1» в поле «Тип подключения» выберем «Виртуальный адаптер хоста».
  4. В поле «Имя» укажем стандартный адаптер VirtualBox Host-Only Ethernet Adapter.
  5. Запустим виртуальную машину и проверим полученный IP-адрес в гостевой ОС с помощью команды ipconfig в командной строке. Адрес должен быть из диапазона 192.168.56.x.

Шаг 2. Решение главной проблемы подключения — Разрешение имен (DNS)

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

Когда клиентское приложение 1С на хост-машине пытается подключиться к серверу 1С по IP-адресу (например, к 192.168.56.101), менеджер кластера 1С rmngr принимает этот запрос. Однако в ответ он отправляет клиенту не свой IP-адрес, а сетевое имя (имя компьютера) виртуальной машины (например, win7-1c-srv). Получив это имя, клиент 1С пытается перенаправить рабочую сессию на адрес win7-1c-srv. Поскольку в нашей тестовой сети нет выделенного DNS-сервера, операционная система хоста понятия не имеет, какому IP-адресу соответствует имя win7-1c-srv, и подключение обрывается.

Чтобы решить эту проблему, настроим локальное разрешение имен с помощью файла hosts. Разберем этот процесс по шагам:

  1. На виртуальной машине узнаем точное сетевое имя компьютера (в свойствах системы) и его IP-адрес (например, 192.168.56.101).
  2. На хост-машине (где запущен клиент 1С) откроем текстовый редактор Блокнот обязательно от имени Администратора.
  3. В Блокноте откроем файл по пути: C:\Windows\System32\drivers\etc\hosts (при поиске файла выберите режим отображения «Все файлы (*.*)»).
  4. В самый конец файла добавим строку сопоставления IP-адреса и сетевого имени нашей виртуальной машины:

192.168.56.101 win7-1c-srv

  1. Сохраним файл. Теперь при обращении к имени win7-1c-srv операционная система хоста будет мгновенно перенаправлять пакеты на IP-адрес 192.168.56.101.
  2. Проделаем аналогичную операцию внутри виртуальной машины: откроем локальный файл hosts в гостевой ОС и пропишем туда IP-адрес и имя хост-машины, чтобы сервер 1С мог без задержек отвечать клиенту.

Шаг 3. Точечная настройка брандмауэра (Firewall)

Отключение брандмауэра Windows на время тестирования — отличный способ быстро локализовать проблему (как и поступил автор темы в сообщении 13). Однако в постоянной практике отключать защиту крайне не рекомендуется. Вместо этого настроим правила входящих подключений для конкретных портов, которые использует сервер 1С.

Выделим ключевые порты, которые должны быть открыты на виртуальной машине с сервером 1С:

Создадим правило в брандмауэре Windows на виртуальной машине:

  1. Откроем «Монитор брандмауэра защитника Windows в режиме повышенной безопасности».
  2. Перейдем в «Правила для входящих подключений» и нажмем «Создать правило».
  3. Выберем тип правила «Для портов», протокол TCP.
  4. В строке «Определенные локальные порты» укажем: 1540, 1541, 1560-1591.
  5. Разрешим подключение и применим правило для всех профилей сети.

Шаг 4. Настройка связи с СУБД MS SQL на хост-машине

Если СУБД установлена на хост-машине, а сервер 1С развернут внутри VirtualBox, нам необходимо разрешить СУБД принимать внешние сетевые подключения. По умолчанию Microsoft SQL Server часто настроен на работу только через протокол Shared Memory (локальная общая память), что делает его недоступным из виртуальной сети VirtualBox.

Разберем, как включить сетевой доступ к MS SQL Server:

  1. На хост-машине запустим утилиту SQL Server Configuration Manager.
  2. Перейдем в раздел SQL Server Network Configuration -> Protocols for MSSQLSERVER (или имя вашего экземпляра СУБД).
  3. Найдем протокол TCP/IP, кликнем по нему правой кнопкой мыши и выберем Enabled (Включено).
  4. Откроем свойства протокола TCP/IP, перейдем на вкладку IP Addresses, прокрутим до раздела IPAll и убедимся, что в поле TCP Port указан стандартный порт 1433.
  5. Перезапустим службу SQL Server через оснастку служб Windows, чтобы изменения вступили в силу.
  6. В брандмауэре хост-машины создадим входящее правило для порта TCP 1433, чтобы виртуальная машина могла достучаться до базы данных.

Важное примечание: При создании информационной базы 1С в консоли администрирования (которая будет запущена на виртуальной машине) в поле «Сервер баз данных» нельзя указывать localhost или 127.0.0.1. Необходимо указывать IP-адрес хост-машины в виртуальной сети (в нашем случае 192.168.56.1) или сетевое имя хоста, предварительно прописанное в файле hosts виртуальной машины.

Шаг 5. Нюансы лицензирования 1С в виртуальной среде

Использование виртуализации накладывает серьезные ограничения на работу защитных механизмов платформы 1С. Проанализируем два важных аспекта:

Программные лицензии (файлы программной защиты .lic):

Программная лицензия жестко привязывается к ключевым параметрам аппаратной конфигурации компьютера. Одним из таких параметров является MAC-адрес сетевой карты. Если вы активируете лицензию на виртуальной машине, когда она находится в режиме NAT, а затем переключите сетевой адаптер в режим Сетевого моста или Host-Only, VirtualBox изменит MAC-адрес виртуальной сетевой платы. Платформа 1С мгновенно определит это как изменение ключевых параметров компьютера, и активированная лицензия заблокируется, потребовав использования резервного пин-кода. Поэтому строго соблюдайте правило: сначала полностью настройте сеть в VirtualBox, зафиксируйте MAC-адрес в настройках ВМ и только после этого приступайте к активации программных лицензий.

Аппаратные USB-ключи HASP:

По умолчанию виртуальная машина «не видит» USB-порты вашего физического компьютера. Чтобы пробросить аппаратный ключ защиты внутрь VirtualBox, выполните следующие шаги:

  1. Установите на хост-компьютер пакет расширений VirtualBox Extension Pack (версия пакета должна строго соответствовать версии установленного у вас VirtualBox).
  2. В настройках выключенной виртуальной машины перейдите в раздел USB.
  3. Включите контроллер USB (рекомендуется выбрать USB 2.0 или USB 3.0 в зависимости от порта на вашем ПК).
  4. Нажмите на иконку с зеленым плюсом («Добавить новый USB-фильтр») и выберите из списка ваш USB-ключ HASP. Теперь при запуске виртуальной машины ключ будет автоматически перенаправляться внутрь гостевой ОС.

Шаг 6. Производительность: почему разделение 1С и SQL снижает скорость?

В сообщениях форума справедливо отмечается, что разнесение сервера 1С и СУБД по разным операционным системам (даже в пределах одного физического компьютера) ведет к падению производительности. При локальной установке «все на одном хосте» сервер 1С и MS SQL Server используют для обмена данными высокоскоростной протокол взаимодействия через оперативную память — Shared Memory. Как только сервер 1С уходит на виртуальную машину, а SQL остается на хосте, обмен данными начинает происходить по сетевому протоколу TCP/IP через стек виртуального сетевого адаптера.

Такой сетевой оверхед (сетевые задержки и микролаги при передаче пакетов) может снизить скорость выполнения тяжелых запросов и проведения документов на 15–30%. Для целей разработки, отладки кода и обучения раздельная схема вполне применима. Однако для продуктивных баз с реальными пользователями крайне рекомендуется устанавливать сервер 1С и СУБД в пределах одного сервера (или одной виртуальной машины), чтобы задействовать все преимущества протокола Shared Memory.

← На главную