Настройка Tailscale mesh-VPN для серверной инфраструктуры

Управление доступом к десяткам серверов через SSH-туннели и бастионные хосты отнимает время и создаёт риски. Мы настраиваем mesh-VPN на базе Tailscale, объединяя всю инфраструктуру в единую защищённую сеть. Наша команда реализует проект под ключ — от проектирования ACL до внедрения и последующей поддержки.
Часто задаваемые вопросы

Mesh-VPN После того как вы разворачиваете 30-й сервер в очередном облаке, а доступ к базам данных приходится прокладывать через бастионные хосты и SSH-туннели (каждый добавляет 2–3 часа ручной настройки), возникает вопрос: не пора ли построить единую mesh-сеть? Классические VPN-решения (OpenVPN, WireGuard) требуют ручного управления ключами, выделенных серверов и сложной конфигурации. Tailscale решает эти проблемы за 10 минут, но production-ready настройка — наша специализация. Мы — команда DevOps-инженеров с пятилетним опытом, более 100 внедрений Tailscale в инфраструктурах от 10 до 500 узлов. Узнайте, как Tailscale может упростить вашу инфраструктуру — свяжитесь с нами для аудита.

Почему Tailscale лучше традиционных VPN?

Tailscale в 3 раза быстрее в настройке, а экономия на инфраструктуре достигает 70% за счёт отказа от выделенных VPN-серверов. В отличие от OpenVPN, не нужно управлять сертификатами и конфигурациями точек — всё автоматизировано. Согласно WireGuard — Wikipedia, peer-to-peer mesh минимизирует задержки благодаря прямым соединениям. Время добавления нового узла снижается с 30 минут до 2 минут.

Архитектура и ACL

Tailscale строит peer-to-peer mesh поверх WireGuard. Каждый узел получает адрес из диапазона 100.64.0.0/10 (CGNAT). Центральный сервер координации — control plane от Tailscale Inc. — только согласовывает ключи через порт 3478 (STUN), трафик между нодами идёт напрямую или через DERP-relay (порт 443), если прямой путь недоступен.

Политики доступа описываются в tailnet policy file (HuJSON формат). Пример реальной конфигурации для инфраструктуры с тремя средами:

Пример ACL для multi-team
{
  "groups": {
    "group:devs": ["user:[email protected]", "user:[email protected]"],
    "group:ops": ["user:[email protected]"],
    "group:servers-prod": ["tag:prod"],
    "group:servers-staging": ["tag:staging"]
  },
  "tagOwners": {
    "tag:prod": ["group:ops"],
    "tag:staging": ["group:devs", "group:ops"],
    "tag:monitoring": ["group:ops"]
  },
  "acls": [
    {
      "action": "accept",
      "src": ["group:ops"],
      "dst": ["tag:prod:*", "tag:staging:*"]
    },
    {
      "action": "accept",
      "src": ["group:devs"],
      "dst": ["tag:staging:22", "tag:staging:443"]
    },
    {
      "action": "accept",
      "src": ["tag:monitoring"],
      "dst": ["tag:prod:9100", "tag:staging:9100"]
    }
  ],
  "ssh": [
    {
      "action": "accept",
      "src": ["group:ops"],
      "dst": ["tag:prod"],
      "users": ["root", "ubuntu"]
    }
  ]
}

Теги назначаются при регистрации ноды и не могут быть изменены самим устройством — это ключевой элемент zero-trust модели. Сервер не может сам себе поднять права.

Subnet Routers и Exit Nodes

Два сценария, где Tailscale особенно полезен: доступ к ресурсам в VPC без установки агента на каждую машину (subnet router) и выход трафика через корпоративный IP (exit node).

Subnet router поднимается на одном инстансе в VPC:

# На сервере-роутере
tailscale up --advertise-routes=10.0.0.0/16 --accept-dns=false
# В консоли Tailscale — подтверждаем маршруты
# Или через API:
curl -X POST "https://api.tailscale.com/api/v2/device/${DEVICE_ID}/routes" \
  -H "Authorization: Bearer ${API_KEY}" \
  -d '{"routes": ["10.0.0.0/16"]}'

После этого все клиенты tailnet видят ресурсы в 10.0.0.0/16 через этот узел — без настройки каждого инстанса в VPC. Exit node настраивается аналогично с флагом --advertise-exit-node.

Что такое Headscale и когда он нужен?

Если политика безопасности запрещает использование внешнего control plane или нужна полная изоляция сети, используем Headscale — open-source реализацию сервера координации Tailscale.

# headscale config.yaml (основные параметры)
server_url: https://headscale.internal.company.com
listen_addr: 0.0.0.0:8080
metrics_listen_addr: 0.0.0.0:9090
database:
  type: postgres
  postgres:
    host: 127.0.0.1
    port: 5432
    name: headscale
    user: headscale
    pass: "${DB_PASSWORD}"
derp:
  server:
    enabled: true
    region_id: 999
    region_code: "custom"
    region_name: "Self-hosted"
    stun_listen_addr: 0.0.0.0:3478
ip_prefixes:
  - 100.64.0.0/10

Клиенты подключаются с явным указанием login server:

tailscale up --login-server=https://headscale.internal.company.com 

Headscale не поддерживает все функции оригинального Tailscale (например, Tailscale SSH в полном объёме), но для базовой mesh-сети и subnet routing — полностью функционален.

Как автоматизировать управление Tailscale через Terraform?

В инфраструктуре с Terraform управление тейлнет-ресурсами описывается через провайдер tailscale/tailscale:

resource "tailscale_acl" "main" {
  acl = jsonencode({
    acls = [
      {
        action = "accept"
        src    = ["group:ops"]
        dst    = ["tag:prod:*"]
      }
    ]
  })
}

resource "tailscale_device_tags" "web_server" {
  device_id = data.tailscale_device.web.id
  tags      = ["tag:prod", "tag:web"]
}

Это позволяет хранить политики доступа в git и применять изменения через CI/CD — никаких ручных кликов в веб-консоли.

Цены Tailscale: бесплатно до 3 пользователей, далее от $4/месяц за пользователя. Экономия на инфраструктуре может достигать 70% по сравнению с традиционными VPN. Наши devops-услуги включают полную настройку Tailscale как часть бесшовного VPN-решения. Мы автоматизируем развёртывание Tailscale с помощью Terraform и настраиваем tailnet-политики под ваши нужды.

Сравнение Tailscale и Headscale

Параметр Tailscale (SaaS) Headscale (self-hosted)
Control plane Tailscale Inc. Ваш сервер
Цена Бесплатно до 3 пользователей, далее платно Бесплатно (open-source)
Tailscale SSH Полная поддержка Ограниченная
Управление ACL Через веб-консоль или API Только через API/config
DERP-релеи Встроенные глобальные Собственные STUN/релеи

Сроки выполнения

Конфигурация Срок
Базовая установка на серверах + ACL 0.5–1 день
Subnet router + exit node 1 день
Headscale self-hosted + миграция 2–3 дня
Terraform-управление + CI/CD интеграция 1–2 дня

Что входит в работу

  • Аудит текущей сетевой инфраструктуры и требований безопасности.
  • Проектирование tailnet: разбивка на теги, группы, ACL.
  • Установка и настройка Tailscale на всех узлах (серверы, контейнеры, рабочие станции).
  • Настройка subnet router и/или exit node по необходимости.
  • Развёртывание Headscale (если требуется self-hosted).
  • Интеграция с Terraform и CI/CD для автоматизации управления.
  • Документация по политикам доступа и процедурам.
  • Обучение команды основам администрирования tailnet.
  • 30 дней пост-поддержки после внедрения.

Получите консультацию по внедрению Tailscale — напишите нам. Мы оценим вашу инфраструктуру и предложим оптимальную конфигурацию.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139