Mesh-VPN — из тех инструментов, что тихо упрощают всё: ноутбук, домашний сервер, телефон и VPS видят друг друга по приватным адресам, где бы ни находились. Подвох облачных mesh-VPN — сервер координации: компания хранит карту всех ваших устройств. Headscale — открытая замена этому серверу управления. Запускаете его на маленьком VPS, продолжаете пользоваться обычными приложениями — и карта ваша.
Как всё связано
- Headscale (на вашем VPS) раздаёт адреса, распространяет публичные ключи и применяет ваши ACL.
- Клиенты — стандартные приложения Tailscale, настроенные на ваш сервер.
- Трафик идёт от устройства к устройству по WireGuard. Сервер управления его не передаёт.
Последний пункт — причина, почему хватает крошечного тарифа: VPS отвечает только на небольшие запросы координации.
Что понадобится
- Nano-IP ($8/мес) — 2 vCPU и 1 ГБ RAM, это намного больше, чем нужно Headscale.
- Выделенный IPv4 и домен, например
hs.example.com. Устройства обращаются к серверу управления по HTTPS, значит VPS должен принимать входящий 443 — NAT-тарифы этого не умеют (подробнее).
Установка (Debian 12 / Ubuntu 24.04)
Скачайте свежий .deb со страницы релизов Headscale на GitHub — подставьте последнюю версию:
HS_VER=0.26.1
wget -O headscale.deb \
"https://github.com/juanfont/headscale/releases/download/v${HS_VER}/headscale_${HS_VER}_linux_amd64.deb"
apt install -y ./headscale.deb caddy
Отредактируйте /etc/headscale/config.yaml — важны две строки:
server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
Поставьте Caddy впереди ради HTTPS:
cat > /etc/caddy/Caddyfile <<'EOF'
hs.example.com {
reverse_proxy 127.0.0.1:8080
}
EOF
systemctl enable --now headscale
systemctl reload caddy
Пользователь и первое устройство
headscale users create alice
headscale users list # note the user's ID
headscale preauthkeys create --user 1 --expiration 24h
Старые релизы принимают в --user имя пользователя, а не ID; что ждёт ваша версия, покажет headscale preauthkeys create --help.
На Linux-устройстве:
tailscale up --login-server https://hs.example.com --authkey YOUR_KEY
В приложениях Tailscale для телефонов и компьютеров свой сервер управления задаётся в настройках. Выполните headscale nodes list на VPS — устройство должно появиться в списке.
Ретрансляторы и обход NAT
Большинство устройств соединяются напрямую. Когда двое не могут (жёсткие мобильные сети, двойной NAT), трафик идёт через ретранслятор DERP. Из коробки Headscale использует публичные ретрансляторы Tailscale — они видят только зашифрованные пакеты. Если не хотите ничего внешнего на пути, включите встроенный ретранслятор в config.yaml (derp.server.enabled: true) и откройте UDP 3478. Ретранслируемый трафик тогда пойдёт через канал вашего VPS.
Честные ограничения
Официальной веб-панели нет: пользователи, ключи и маршруты — это команды CLI (со второго раза привыкаешь). Новые функции облачного сервиса попадают в Headscale позже, а то и вовсе не попадают. И сервер управления теперь ваша забота: если он лежит, существующие соединения продолжают работать, но новые устройства не подключатся и ключи не обновятся. Делайте бэкап — всё состояние лежит в /var/lib/headscale.
Для домашней лаборатории, семьи или небольшой команды, которой нужна карта устройств вне чужих серверов, это одно из лучших применений VPS за $8.
Связанное
- Свой WireGuard VPN — чистый WireGuard, если нужен один туннель
- VPS для VPN
- VPS для удалённого доступа к Home Assistant
Комментарии
Пока нет комментариев. Будьте первым.