ADG Оставить заявку
Блог Инфраструктура 4 мин чтения

OpenVPN 2.0: головной офис и два склада в одной сети за один день

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

Контекст момента

выходит OpenVPN 2.0 с поддержкой site-to-site - бюджетная замена аппаратным VPN-концентраторам между филиалами

На прошлой неделе вышел OpenVPN 2.0. Главная новость для нас - нормальный режим site-to-site: не клиент к серверу, а сеть к сети. Это меняет разговор с клиентами, у которых несколько точек. Аппаратный VPN-концентратор между офисами стоит приличных денег и ещё приличных денег в настройке. OpenVPN стоит ноль.

Подвернулся показательный кейс. Компания - торговля, три точки: головной офис и два склада на другом конце города. На каждом складе ADSL-подключение, сканеры штрихкодов, которые работают с базой. До нас схема выглядела так: каждый склад лезет к базе напрямую через интернет по RDP. Настройки безопасности - в лучшем случае сложный пароль. Мы такое не любим.

Что сделали

Подняли OpenVPN-сервер на головном офисе под Linux. Каждый склад - клиент, который при старте поднимает туннель до сервера. Итого: три точки в одной внутренней сети /24, маршрутизация между ними через сервер в центре.

Схема получилась такой:

Склад 1 (ADSL) ---[туннель]--->  |            |
                                  | OpenVPN-   |---> LAN головного офиса
Склад 2 (ADSL) ---[туннель]--->  | сервер     |
                                  |  офис      |

Аутентификация - сертификаты, которые мы сгенерировали через easy-rsa, встроенный в дистрибутив OpenVPN. Не самый быстрый процесс в первый раз, но зато без лишних зависимостей и всё под контролем. TLS-ключ дополнительно защищает хендшейк от DoS - параметр tls-auth в конфиге.

На складах поставили маленькие Linux-машины специально под туннель. Могли бы поднять на Windows - OpenVPN там тоже работает через TAP-драйвер, - но с Linux-ом конфиг проще держать и перезапускать при разрыве. Скрипт в /etc/network/if-up.d/ поднимает туннель автоматически при появлении интернета.

Весь процесс - от разворачивания сервера до работающих туннелей на обоих складах - занял один рабочий день. Лицензий ноль, железо не покупали, использовали то что было.

Что получили

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

Сравнивая с тем, что мы делали в прошлом году через IPSec и аппаратные роутеры: OpenVPN проще в отладке. Когда IPSec не поднимается - иди разбирайся в phase1/phase2, несоответствие хэшей или группы DH, и всё это черный ящик. OpenVPN пишет в лог по-человечески: вот сертификат, вот рукопожатие, вот маршруты. Если что-то не так - видно сразу.

Где программный туннель проседает

Честный разговор. Три наблюдения за неделю работы.

Первое - задержки выше, чем на железе. ADSL плюс шифрование в пользовательском пространстве Linux - это не нулевая нагрузка. Пинг между складом и офисом в среднем 15-25 мс, в часы пик ADSL-провайдера уходит к 60-80 мс. Для 1С это пока терпимо, но если бы там была VoIP-телефония - разговор был бы другим.

Второе - ADSL рвётся. Не часто, но рвётся. OpenVPN при обрыве не поднимается сам мгновенно - нужен ping и ping-restart в конфиге, иначе туннель висит в зомби-состоянии и трафик не идёт. Настроили keepalive 10 60 - раз в 10 секунд пинг, при 60 секундах тишины рестарт. Работает, но первые разрывы поймали именно потому что этого не было.

Третье - MTU. Классика жанра для любого туннеля. Пакеты внутри туннеля оборачиваются в дополнительные заголовки и вылезают за стандартный MTU провайдера. Симптом противный: большие файлы не копируются, а мелкие идут нормально, и пользователи уверены что «какая-то мистика». Лечится tun-mtu 1400 и fragment 1300 на сервере и клиентах. После этого мистика прошла.

Что дальше

Пока схема работает на двух складах, смотрим. Если через месяц всё стабильно - предложим клиенту добавить мониторинг туннелей через Nagios: пинг до внутреннего адреса склада раз в минуту, и при обрыве SMS раньше чем позвонит кладовщик. Это уже следующий шаг, не сегодняшний.

OpenVPN 2.0 - вполне рабочий инструмент для связи нескольких офисов малого бизнеса. Не для всех случаев: если нужна гарантированная задержка под голос или видео - это другой разговор. Но для базы, файлов и сканеров - справляется.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.