WireGuard mesh-сети: Tailscale, Netmaker и Netbird — что выбрать

Проблема: VPN для распределённой команды

Компания «КлаудСофт» — 35 разработчиков, 4 офиса (Москва, Питер, Казань, Новосибирск), 12 удалёнщиков. Инфраструктура: 20 серверов в 3 дата-центрах + 4 офисных сети. Текущий VPN — OpenVPN на центральном сервере в Москве.

Проблемы OpenVPN:

  • Звёздная топология: весь трафик через московский сервер. Разработчик в Новосибирске пингует сервер в новосибирском ДЦ через Москву — latency x3
  • Единая точка отказа: упал VPN-сервер → 35 человек без доступа к инфраструктуре
  • Производительность: OpenVPN — userspace, ~300 Mbps максимум на 1 ядре
  • Управление сертификатами: easy-rsa, ручной выпуск для каждого сотрудника

WireGuard mesh-сеть решает все проблемы: peer-to-peer трафик (без центрального сервера), производительность на уровне ядра (~3-5 Gbps), автоматическое управление ключами.

КритерийOpenVPNWireGuard mesh
ТопологияЗвезда (hub-spoke)Full mesh (P2P)
Пропускная способность~300 Mbps~3-5 Gbps
Latency overhead+5-15ms+0.5-1ms
Кодовая база~100,000 строк~4,000 строк
Работает в ядреНет (userspace)Да
NAT traversalСложноВстроен

Tailscale: самый простой вариант

Tailscale — SaaS-решение поверх WireGuard. Координационный сервер управляет ключами, а трафик идёт напрямую между пирами (P2P). Если P2P невозможен — через DERP relay.

# Установка на Linux
curl -fsSL https://tailscale.com/install.sh | sh

# Подключение
tailscale up --login-server https://controlplane.tailscale.com

# Статус
tailscale status
# 100.64.0.1   moscow-srv01    linux    active; direct
# 100.64.0.2   spb-srv01       linux    active; direct
# 100.64.0.3   dev-laptop-01   macos    active; relay "msk"

# Пинг через mesh-сеть
tailscale ping spb-srv01
# pong from spb-srv01 (100.64.0.2) via 1.2.3.4:41641 in 8ms

Ключевые возможности:

  • MagicDNS: обращайтесь по имени ssh moscow-srv01 вместо IP
  • ACL: JSON-политики — кто к чему имеет доступ
  • Exit nodes: маршрутизация всего трафика через выбранный узел
  • Subnet routing: доступ к локальным сетям офисов без установки Tailscale на каждое устройство
  • SSH: встроенный SSH через Tailscale без открытого порта 22
// ACL для «КлаудСофт»
{
  "acls": [
    {"action": "accept", "src": ["group:devs"], "dst": ["tag:dev-servers:*"]},
    {"action": "accept", "src": ["group:ops"], "dst": ["*:*"]},
    {"action": "accept", "src": ["group:devs"], "dst": ["tag:prod-servers:443,8080"]}
  ],
  "groups": {
    "group:devs": ["user1@company.ru", "user2@company.ru"],
    "group:ops": ["admin@company.ru"]
  }
}
Минус Tailscale: координационный сервер — SaaS. Ваши ключи и метаданные (кто к кому подключается) хранятся у Tailscale. Для решения — self-hosted альтернатива Headscale (open-source координатор, совместимый с клиентами Tailscale).

Netmaker: self-hosted с полным контролем

Netmaker — полностью self-hosted WireGuard mesh. Координационный сервер (netmaker-server) + агенты (netclient) на каждом узле. Веб-интерфейс для управления.

# Установка сервера Netmaker (Docker)
wget -qO docker-compose.yml \
  https://raw.githubusercontent.com/gravitl/netmaker/master/compose/docker-compose.yml

# Настройка .env
cat > .env <<EOF
NM_DOMAIN=vpn.cloudsoft.ru
SERVER_HOST=185.100.50.1
MASTER_KEY=$(openssl rand -hex 32)
MQ_PASSWORD=$(openssl rand -hex 16)
TURN_PASSWORD=$(openssl rand -hex 16)
EOF

docker compose up -d

# Создание сети
nmctl network create --name corporate --address-range 10.10.0.0/16

# Создание enrollment key для клиентов
nmctl enrollment-key create --networks corporate --tags servers

# Установка клиента на ноды
curl -sL 'https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/netclient-install.sh' | \
  KEY=eyJhbGc... sh -

Преимущества Netmaker:

  • Полный контроль: все данные на вашем сервере
  • Kernel WireGuard: нативная производительность (Tailscale использует userspace WG по умолчанию)
  • Egress/Ingress gateways: маршрутизация внешних сетей
  • Relay nodes: для узлов за строгим NAT
  • DNS: встроенный CoreDNS для имён внутри сети

Netbird: золотая середина

Netbird — открытая платформа, совмещающая простоту Tailscale с self-hosted возможностями. Использует WireGuard + ICE (WebRTC) для NAT traversal.

# Self-hosted установка (Docker)
curl -sSLO https://github.com/netbirdio/netbird/releases/latest/download/getting-started-with-zitadel.sh
bash getting-started-with-zitadel.sh

# Установка клиента
curl -fsSL https://pkgs.netbird.io/install.sh | sh

# Подключение
netbird up --management-url https://vpn.cloudsoft.ru:443

# Статус
netbird status
# Peers:
#   moscow-srv01: Connected (direct), latency 2ms
#   spb-srv01: Connected (direct), latency 8ms

Уникальная фича — Network Routes и DNS-маршрутизация:

# Через веб-интерфейс или API:
# 1. Создать маршрут: 192.168.10.0/24 через moscow-gw
# 2. Создать DNS-зону: *.internal.cloudsoft.ru → 10.10.0.0/16
# 3. Настроить ACL: группа «developers» → серверы с тегом «dev»

# Результат: разработчик из дома обращается к
# db.internal.cloudsoft.ru — трафик идёт через mesh напрямую
КритерийTailscaleNetmakerNetbird
ЛицензияProprietary (клиент BSD)SSPLBSD-3
Self-hostedHeadscale (сторонний)Да (native)Да (native)
NAT traversalDERP relayTURN relayICE (WebRTC)
WireGuard modeUserspace (по умолчанию)KernelKernel
SSO интеграцияGoogle, Microsoft, OktaOAuth2 (любой)Zitadel, Okta, Azure AD
Веб-интерфейсДа (SaaS)Да (self-hosted)Да (self-hosted)
Бесплатный план100 устройствБез ограниченийБез ограничений

Выбор «КлаудСофт» и результаты

Команда выбрала Netbird: open-source, self-hosted, отличный NAT traversal через ICE, простая настройка ACL через веб-интерфейс, интеграция с Keycloak (который уже использовался для SSO).

Развёртывание на 35 устройств + 20 серверов заняло 2 дня:

  1. День 1: установка Netbird server, настройка SSO через Keycloak, создание групп и ACL
  2. День 2: раскатка netbird-клиентов через Ansible, тестирование connectivity
МетрикаOpenVPN (было)Netbird (стало)
Latency Новосибирск→НСК ДЦ85ms (через Москву)3ms (P2P)
Пропускная способность280 Mbps3.2 Gbps
Время подключения нового сотрудника30 мин (сертификат)2 мин (SSO)
Единая точка отказаДа (VPN-сервер)Нет (P2P mesh)
Управление доступомСертификаты + iptablesГруппы + ACL в UI
Рекомендация: Для маленькой команды (до 20 устройств) начните с Tailscale — бесплатно и работает за 5 минут. Для компании с требованиями к self-hosted и compliance — Netbird. Если нужна максимальная производительность kernel WireGuard — Netmaker.

Часто задаваемые вопросы

Да. WireGuard использует современную криптографию: Curve25519 для обмена ключами, ChaCha20 для шифрования, Poly1305 для аутентификации. Кодовая база — 4000 строк (легко аудируется). WireGuard включён в ядро Linux с версии 5.6 и прошёл множество аудитов безопасности.

Когда прямое P2P-соединение невозможно (строгий NAT, корпоративный файрвол), трафик идёт через relay-сервер. DERP — протокол Tailscale, TURN — стандартный протокол (Netmaker), ICE — механизм WebRTC для автоматического выбора лучшего пути (Netbird). В 80% случаев relay не нужен — устанавливается прямое P2P.

Да, и это часто проще. Вместо IPsec-туннелей между офисами настройте mesh-сеть с subnet routing: каждый офис объявляет свою локальную сеть через mesh-шлюз. Трафик шифруется WireGuard и идёт напрямую между офисами.

Да, Headscale — независимый open-source проект, совместимый с клиентами Tailscale. Клиенты Tailscale распространяются под BSD-лицензией. Tailscale не блокирует использование Headscale, но и не поддерживает его официально.

WireGuard добавляет ~0.5-1ms latency и ~3% overhead по пропускной способности. На практике пользователи не замечают разницы. Kernel WireGuard обрабатывает трафик на скоростях 3-5 Gbps на современном CPU. Userspace-реализация (Tailscale по умолчанию) — ~1-2 Gbps.

Нужна помощь с внедрением?

Настроим, оптимизируем и возьмём на поддержку вашу инфраструктуру. 15+ лет опыта, 8 серверов Dell Xeon в дата-центре МТС.

📞 Связаться с нами

Комментарии 0

Оставить комментарий

9 + 3 =