Рассмотрим типовую инфраструктурную ситуацию: в магазине работают несколько компьютеров, подключенных через локальный коммутатор или роутер к сетевой онлайн-кассе АТОЛ (например, АТОЛ 55Ф). База 1С:Управление торговлей размещена на удаленном веб-сервере, и пользователи работают через тонкий клиент. До подключения к защищенной корпоративной сети всё функционирует штатно: драйвер ККТ видит устройство по IP-адресу, чеки успешно фискализируются. Однако при активации VPN-подключения рабочие станции теряют связь с кассой. Выясним причину этой неполадки и разберем по шагам варианты ее устранения.
Проанализируем сетевую конфигурацию операционной системы Windows. Когда на компьютере запускается VPN-клиент, туннельный адаптер по умолчанию пытается перенаправить весь исходящий трафик через себя. Это происходит потому, что в настройках подключения активен параметр «Использовать основной шлюз в удаленной сети» (Use default gateway on remote network), либо виртуальный адаптер получает более высокий приоритет (более низкую метрику маршрута), чем локальная сетевая карта Ethernet.
В результате компьютер считает шлюз VPN приоритетным направлением для всех пакетов. Любые обращения к локальному IP-адресу кассы АТОЛ операционная система отправляет не в физический провод локальной сети магазина, а внутрь VPN-туннеля на удаленный сервер, где устройства с таким адресом не существует. Связь с кассой прерывается.
Разберем самый распространенный способ возврата доступности кассы — отключение маршрутизации всего трафика через туннель. Нам необходимо, чтобы через VPN шли только запросы к серверу 1С, а обращения к подсети магазина оставались в локальном интерфейсе.
Для встроенных подключений Windows (PPTP, L2TP, SSTP, IKEv2) выполним следующие действия:
IP версии 4 (TCP/IPv4) и нажмем кнопку «Свойства».Если мы предпочитаем администрирование через PowerShell, аналогичное действие выполним одной командой:
Set-VpnConnection -Name "Имя_Подключения" -SplitTunneling $True
Если после снятия этой галочки пропадает доступ к самому серверу 1С, добавим статический маршрут до удаленной подсети или конкретного IP-адреса сервера вручную через командную строку Windows (cmd), запущенную от имени администратора:
route add IP_СЕРВЕРА_1С mask 255.255.255.255 IP_ШЛЮЗА_VPN -p
Параметр -p делает маршрут постоянным, сохраняя его даже после перезагрузки компьютера.
Если в организации используются сторонние клиенты, настроим конфигурацию туннеля:
.ovpn. Если там присутствует директива redirect-gateway def1, закомментируем или удалим её. Чтобы исключить получение маршрутов по умолчанию от сервера, добавим параметр route-nopull, а далее пропишем маршрут только до 1С: route IP_сервера 255.255.255.255.AllowedIPs нельзя указывать 0.0.0.0/0. Укажем строго адрес или подсеть удаленного сервера (например, 10.8.0.1/32).Посмотрим на частую ошибку планирования сети: если на роутере в магазине используется стандартная подсеть (например, 192.168.0.0/24 или 192.168.1.0/24), и точно такая же адресация настроена в центральном офисе или выдается VPN-сервером, таблица маршрутизации Windows входит в конфликт. Компьютер не может однозначно определить, в какой именно интерфейс слать пакеты.
В этом случае сменим адресное пространство локальной сети магазина на роутере на нестандартный диапазон, например 192.168.88.0/24 или 10.50.1.0/24, после чего зададим кассе АТОЛ новый постоянный IP-адрес из этой подсети.
Разберем ситуацию, когда раздельное туннелирование включено, но трафик все равно пытается уйти в VPN-адаптер из-за системных метрик. Назначим физической сетевой карте приоритет перед виртуальной:
TCP/IPv4 физического Ethernet-адаптера, нажмем «Дополнительно» и снимем галочку «Автоматическое назначение метрики». В поле «Метрика интерфейса» укажем значение 10.50. Чем меньше число, тем выше приоритет адаптера при выборе маршрута.Также учтем, что при поднятии VPN операционная система может переключить локальный адаптер в профиль «Общедоступная сеть». Встроенный брандмауэр Windows в этом режиме блокирует нестандартные входящие и исходящие локальные соединения. Для сетевых касс АТОЛ штатным является порт 5555. Откроем входящие и исходящие правила брандмауэра и создадим разрешающее правило для протокола TCP по порту 5555 для всех профилей сети.
Вместо того чтобы настраивать VPN-клиент на каждом из трех компьютеров магазина и регулярно бороться со сбитыми маршрутами, рассмотрим правильный архитектурный подход: поднятие постоянного туннеля типа Site-to-Site непосредственно между роутером магазина и сервером предприятия.
Проанализируем еще одну проблему, с которой сталкиваются при описанной схеме. Сетевая плата кассы АТОЛ (например, АТОЛ 55Ф) держит только одно монопольное TCP-соединение по порту 5555. Если один компьютер захватил порт через драйвер ККТ, остальные две машины при попытке пробить чек будут получать ошибку «Порт занят другим приложением».
Чтобы организовать одновременную работу трех тонких клиентов 1С с одним физическим фискальным регистратором, используем компонент Web-сервер ККТ, входящий в состав ДТО 10. Служба устанавливается на один из компьютеров магазина, подключается к кассе монопольно и выстраивает очередь печати чеков. Остальные рабочие места в базе 1С:УТ 11 подключаются к оборудованию через механизм совместного использования торгового оборудования или отправляют задания на локальный адрес Web-сервера ККТ, исключая прямые аппаратные конфликты.