При попытке пробросить порты для доступа к серверу 1С из внешней сети системные администраторы часто сталкиваются с ситуацией: внешнее подключение по telnet на проброшенный порт успешно проходит, однако клиент 1С (тонкий или толстый клиент, а также Конфигуратор) выдает ошибку и ссылается на внутренний IP-адрес локальной сети и другой порт (например, 1560). Проанализируем, почему возникает эта ошибка и какими способами можно организовать стабильный и безопасный удаленный доступ к базе данных.
Чтобы понять причину ошибки, разберем двухэтапную архитектуру взаимодействия клиента и кластера серверов 1С:
rmngr), который по умолчанию работает на TCP-порту 1541 (агент сервера работает на порту 1540).rphost) и передает клиенту прямо внутри прикладного протокола сетевые реквизиты для дальнейшей работы — IP-адрес (или сетевое имя) сервера и конкретный динамический порт из диапазона 1560–1591.Выясним причину сбоя при использовании обычного NAT (DNAT на роутере):
Если на сетевом маршрутизаторе настроить проброс внешнего порта (например, 50035) на порт 1541 внутреннего IP-адреса (например, 192.168.30.29), произойдет следующее:
192.168.30.29) и номер выделенного рабочего процесса (например, 1560) и отправляет эти данные клиенту внутри прикладного пакета 1С.192.168.30.29 на порт 1560. Из внешней сети этот адрес недоступен, в результате чего клиент выдает ошибку тайм-аута подключения.Подключение через виртуальную частную сеть (VPN) является наиболее надежным, безопасным и простым в обслуживании решением. При использовании VPN удаленный компьютер клиента становится полноправным участником локальной сети (или изолированного сегмента сети с доступом к серверу 1С).
Преимущества использования VPN:
1540-1591) в открытый интернет, что защищает инфраструктуру от внешних атак.Если необходимо организовать прямое подключение тонкого клиента или Конфигуратора без VPN, стандартный проброс одного порта не сработает. Потребуется применить схему с использованием единого полного доменного имени (FQDN) и пробросом всего диапазона портов «порт-в-порт».
Разберем по шагам порядок настройки этой схемы:
1c.company.com) на уровне операционной системы.1c.company.com ведет на внешний публичный («белый») IP-адрес вашего роутера./etc/hosts на самом сервере 1С) должен резолвить имя 1c.company.com во внутренний IP-адрес (192.168.30.29).1540 TCP — агент серверов 1С;1541 TCP — менеджер кластера серверов;1560–1591 TCP — диапазон рабочих процессов (rphost).1c.company.com.При такой схеме менеджер кластера будет возвращать клиенту имя 1c.company.com. Из внешней сети удаленный клиент успешно отрезолвит это имя во внешний IP-адрес роутера и подключится к выделенному рабочему процессу по открытому порту из диапазона 1560–1591.
Для работы обычных пользователей в режиме тонкого клиента или через браузер оптимальным решением является публикация информационной базы на веб-сервере (Apache или Microsoft IIS).
В этом случае всё взаимодействие между клиентом и веб-сервером происходит по стандартным веб-протоколам HTTP/HTTPS (порты 80 и 443), а сам веб-сервер подключается к кластеру 1С внутри локальной сети.
Ограничения веб-сервера:
Конфигуратор через подключение по HTTP/HTTPS технически невозможно. Разработчикам и администраторам всё равно потребуется VPN или RDP/SSH доступ.В операционных системах Linux (например, CentOS) для работы удаленных специалистов можно применить туннелирование TCP-портов через зашифрованное SSH-соединение.
Разберем пример создания локального туннеля для портов кластера 1С с помощью SSH-клиента на стороне удаленного пользователя:
ssh -L 1541:127.0.0.1:1541 -L 1560:127.0.0.1:1560 -N user@ext-ip.company.com
В данном случае клиент подключается по SSH к серверу, после чего локальные порты компьютера перенаправляются в безопасный туннель. Данный метод позволяет защитить подключение без разворачивания полноценного VPN-сервера.
Проанализировав варианты, выделим следующие рекомендации: