Нажать кнопку «Подключиться» просто. Гораздо интереснее то, что происходит после этого.

Клиент должен найти сервер, установить соединение, пройти необходимые этапы согласования, настроить сеть, маршруты и DNS, следить за состоянием сессии и корректно всё вернуть обратно после отключения.

А если что-то пошло не так — объяснить, где именно возникла проблема.

Именно для этой части появился YETI³ Engine.

Connector — это интерфейс. Engine — то, что находится под ним

YETI³ Connector — приложение, которое видит пользователь.

Профили подключения. Статус. Кнопка Connect. Трафик. Журнал событий. Ошибки.

Но сам интерфейс не должен знать все подробности того, как устроена конкретная сетевая сессия.

Этой работой занимается YETI³ Engine.

YETI³ Connector → YETI³ Engine → корпоративная инфраструктура.

Connector отвечает за взаимодействие с человеком.

Engine — за жизненный цикл сетевого подключения.

Мне хотелось разделить эти уровни с самого начала.

Интерфейс можно менять. Можно переставлять кнопки, переделывать экран статистики или вообще создавать другой клиент.

А сетевой слой при этом должен оставаться предсказуемым.

Зачем вообще понадобился отдельный движок

Самый простой способ написать VPN-клиент — собрать всю логику внутри одного приложения.

На первых этапах это даже удобно.

Потом появляются таймауты.

Повторные подключения.

Состояния сессии.

Ошибки транспорта.

Маршрутизация.

DNS.

Различия между конфигурациями серверов.

Диагностика.

И довольно быстро становится трудно понять, где заканчивается пользовательский интерфейс и начинается собственно сеть.

Поэтому YETI³ Engine существует как отдельный слой.

Engine не должен рисовать окна. Его задача — получить параметры соединения, провести сессию через необходимые состояния и вернуть приложению понятный результат.

Первый практический сценарий — SSTP

Первым реальным сценарием для YETI³ Connector стал SSTP.

Этот протокол до сих пор встречается в корпоративной инфраструктуре, где уже существуют настроенные серверы и действующие правила доступа.

И далеко не всегда есть смысл перестраивать всю инфраструктуру только потому, что сотруднику необходимо подключиться с Mac.

В таком случае задача довольно понятная.

Есть сервер организации.

Есть разрешённый пользователю доступ.

Есть параметры подключения.

Нужен нормальный клиент для macOS.

Но мне не хотелось превращать весь проект в один большой SSTP-клиент.

Протокол — это часть системы. Не вся система.

Поэтому работа с соединением находится на уровне Engine, а Connector остаётся клиентским приложением поверх него.

«VPN не работает» — это ещё не диагноз

Наверное, одна из самых знакомых фраз для любого системного администратора:

«У меня VPN не работает».

Но за ней могут скрываться совершенно разные ситуации.

  • сервер недоступен;
  • соединение не установилось;
  • ошибка появилась на одном из этапов согласования;
  • туннель поднялся, но маршрут до внутренней сети отсутствует;
  • DNS не разрешает корпоративное имя;
  • сессия устанавливается и сразу завершается;
  • подключение работает, но недоступен конкретный внутренний ресурс.

Для пользователя всё это действительно выглядит одинаково.

Кнопка нажата, а нужный ресурс не открывается.

Для инженера это совершенно разные проблемы.

Поэтому одна из важных идей YETI³ Engine — соединение должно быть наблюдаемым.

Подключение не должно быть чёрным ящиком

Мне не хотелось ограничиваться индикатором красного или зелёного цвета.

Если происходит сетевая сессия, полезно понимать, что происходит внутри неё.

Поэтому Connector может показывать информацию, которую получает от сетевого слоя:

  • состояние соединения;
  • этапы подключения;
  • продолжительность сессии;
  • полученный и переданный трафик;
  • события соединения;
  • ошибки.

Для обычного пользователя это ответ на вопрос «подключено или нет».

Для администратора — уже начало диагностики.

Хороший корпоративный клиент должен не только подключать. Он должен уметь объяснить, что происходит.

Для кого делается YETI³ Engine

YETI³ Engine и инструменты на его базе в первую очередь рассчитаны на технических специалистов, которые работают с собственной корпоративной инфраструктурой.

Это не только системные администраторы.

Мне интересны несколько групп пользователей.

  • системные администраторы, которым приходится подключать рабочие станции к внутренней сети;
  • сетевые администраторы, которые отвечают за маршрутизацию, удалённый доступ и серверную часть;
  • DevOps и SRE-инженеры, которым нужен доступ к внутренним сервисам, стендам и инфраструктуре;
  • разработчики, работающие с корпоративными API, базами данных, Git-серверами и тестовыми окружениями;
  • инженеры инфраструктуры и информационной безопасности, которым важна прозрачность сетевой сессии и возможность диагностики;
  • интеграторы, которые разворачивают и сопровождают инфраструктуру заказчиков.

То есть это проект прежде всего для людей, которые хотя бы иногда хотят знать, что произошло между нажатием Connect и появлением корпоративной сети.

Можно участвовать

YETI³ Engine сейчас интересен мне не только как готовый программный компонент.

Это ещё и проект, который можно проверять на реальной инфраструктуре.

Поэтому разработчики, администраторы, DevOps-инженеры и другие технические специалисты могут участвовать в тестировании.

Особенно интересны реальные корпоративные конфигурации.

Разные серверы.

Разные сетевые схемы.

Необычная маршрутизация.

Пограничные случаи.

Ошибки, которые невозможно придумать в лаборатории, но которые прекрасно возникают в настоящей сети в понедельник утром.

Участие в тестировании и использование YETI³ Engine и YETI³ Connector на текущем этапе доступны бесплатно.

Если вы администрируете инфраструктуру организации, разрабатываете внутренние сервисы или просто регулярно сталкиваетесь с корпоративными подключениями на macOS, проект можно попробовать на своей рабочей конфигурации и поделиться результатами.

Но это не публичный VPN

Здесь есть важная граница.

YETI³ Engine и YETI³ Connector не являются публичным VPN-сервисом для физических лиц.

У проекта другая модель.

Есть организация или индивидуальный предприниматель.

Есть собственная или разрешённая им инфраструктура.

Есть техническая задача подключения к этой инфраструктуре.

И есть сотрудники или привлечённые специалисты, которым такое подключение необходимо для работы.

Сервисы YETI³ этого направления предназначены для юридических лиц и индивидуальных предпринимателей.

Технические специалисты — разработчики, администраторы, DevOps/SRE и интеграторы — пользуются ими в рамках соответствующей организации или профессиональной инфраструктуры.

Публичная регистрация физических лиц как пользователей массового VPN-сервиса не является задачей проекта.

Не средство обхода ограничений

Есть ещё одна вещь, которую я хочу обозначить прямо.

YETI³ Engine разрабатывается как инструмент для корпоративных сетей.

Он не позиционируется как анонимайзер, средство изменения географии пользователя или сервис обхода установленных ограничений доступа.

Организация сама управляет своей инфраструктурой, своими серверами, пользователями и политиками доступа.

YETI³ предоставляет программный инструмент для технического подключения.

Задача проекта — соединить пользователя с разрешённой ему корпоративной инфраструктурой, а не подменять собой публичный сервис доступа в интернет.

Использование сервиса предполагается для законных профессиональных и корпоративных задач с соблюдением применимого законодательства.

Бесплатно — не значит без обратной связи

На текущем этапе за использование Connector и участие в тестировании Engine платить не нужно.

Но есть вещь, которая сейчас гораздо полезнее оплаты.

Реальная эксплуатация.

Работает ли клиент с вашей инфраструктурой?

Понятно ли отображается состояние соединения?

Хватает ли информации в журнале?

Что происходит после сна Mac?

Как ведёт себя подключение при смене сети?

Каких данных не хватает администратору для диагностики?

Какие сценарии регулярно встречаются именно у вас?

Такая обратная связь позволяет развивать сетевой движок не вокруг искусственных примеров, а вокруг настоящих задач.

Почему Engine отделён от Connector

Сегодня самый очевидный клиент YETI³ Engine — это YETI³ Connector.

Но именно поэтому движок и вынесен отдельно.

Интерфейс — это один способ использовать сетевую технологию.

Со временем могут появляться другие клиенты, другие способы управления и другие корпоративные сценарии.

А базовые вещи остаются примерно теми же:

  • жизненный цикл соединения;
  • состояние сессии;
  • сетевые параметры;
  • маршрутизация;
  • диагностика;
  • статистика;
  • обработка ошибок.

Именно этот слой я и рассматриваю как Engine.

Connector может меняться. Сетевой фундамент должен оставаться понятным.

Ещё один инструмент YETI³

Мне нравится идея небольших инструментов с чётко определённой ответственностью.

Cleaner не пытается управлять всем Mac.

Connector не должен становиться комбайном для управления всей корпоративной инфраструктурой.

Engine не должен знать, где в интерфейсе находится кнопка подключения.

Каждый компонент решает свою задачу.

Так систему проще понимать.

Проще диагностировать.

И, что особенно важно для сетевых инструментов, проще доверять её поведению.

Попробовать YETI³ Connector и Engine

Если вы разработчик, системный или сетевой администратор, DevOps/SRE-инженер, специалист по инфраструктуре или интегратор и работаете с корпоративными сетями, можно принять участие в тестировании.

На текущем этапе участие и использование доступны бесплатно для технических специалистов организаций и ИП.

YETI³ Connector:

connector.yeti3.ru

YETI³ Engine:

engine.yeti3.ru

Если у вас есть реальная корпоративная инфраструктура, необычная конфигурация или просто сценарий, на котором хочется проверить работу клиента, — это как раз тот случай, когда обратная связь особенно полезна.


YETI³ Engine. Сеть может быть сложной внутри. Но она не должна быть чёрным ящиком снаружи.

Пример проекта: YETI3 Connector

Удалённый сотрудник должен понимать, какой профиль использовать и что делать при отказе соединения. Connector объединяет конфигурации подключений и диагностику в клиенте для macOS.

Практический сценарий и пример проекта

Начните с выданной организацией конфигурации и проверьте права на её использование. Разделите ошибку профиля, сетевую доступность и доступ к конкретному корпоративному сервису. Успешный запуск приложения не подтверждает соединение с рабочей системой.

Главная YETI³ Connector
Публичный экран YETI3 Connector из обзора проекта. Дата съёмки и остальные экраны указаны в источнике.

Рассмотреть обзор и реальные экраны проекта · Открыть пример

Как подготовить свою задачу к расчёту

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

В обращении можно указать название этого примера, нужный результат и желаемый срок. После обсуждения согласуются состав работ, полная стоимость, порядок оплаты и критерии приёмки. Фиксированная цена и дата выполнения для вашего проекта пока не определены.

Обсудить задачу с цифровой мастерской · Выбрать другой цифровой сценарий