Как настроить Tailscale на Ubuntu и создать VPN между двумя машинами

Tailscale — лёгкий, децентрализованный VPN, который позволяет объединить несколько устройств в одну логическую сеть без проброса портов. В этой статье показано, как установить Tailscale на Ubuntu, подключить две машины, открыть доступ другим пользователям, настроить выходный узел (exit node) и подключить к нему клиентов. В конце — чек-листы, обходные случаи, безопасность и отладка.
Содержание
- Почему выбирать Tailscale
- Получение и установка Tailscale на Ubuntu
- Создание первой сети Tailscale и привязка машины
- Добавление второй машины в сеть
- Предоставление доступа к машине другим пользователям
- Создание VPN через выходной узел (Exit Node)
- Подключение клиента к выходному узлу
- Рекомендации по безопасности и конфиденциальности
- Когда Tailscale не подойдёт
- Альтернативные подходы и сравнение
- Полезные проверки, чек-листы и примеры команд
- Часто задаваемые вопросы
- Краткое резюме
Почему выбирать Tailscale
Tailscale использует протокол WireGuard для шифрования и устанавливает одноранговые соединения между устройствами. Он не требует центрального маршрутизатора для прокидывания трафика: клиенты часто соединяются напрямую через NAT traversal (STUN/ICE-like механизмы), что даёт меньшую задержку по сравнению с классическими VPN с централизацией трафика.
Кратко о плюсах:
- Простота: минимум действий для подключения устройства к сети.
- Без проброса портов: не нужен публичный IP или сложная настройка роутера.
- Шифрование на уровне WireGuard.
- Бесплатен для личного использования (до 100 устройств на личную сеть).
Определение: NAT traversal — набор техник, позволяющих установить прямое соединение между двумя узлами, находящимися за NAT.

Важно: Tailscale облегчает создание защищённых каналов, но вы всё равно должны контролировать доступ к сервисам на машинах.
Получение и установка Tailscale на Ubuntu
Ниже приведён пошаговый список команд, проверенных для Ubuntu (в примерах используется релиз “jammy”). Выполняйте команды от имени пользователя с правами sudo.
- Установите curl, если он отсутствует:
sudo apt update
sudo apt install -y curl- Получите GPG-ключ и запишите его в keyrings (корректная команда):
sudo curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null- Добавьте репозиторий Tailscale в списки apt:
sudo curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
- Обновите пакеты и установите Tailscale:
sudo apt update && sudo apt -y upgrade
sudo apt install -y tailscaleСовет: всегда проверяйте URL репозитория на официальном сайте tailscale.com, если у вас другое имя релиза (например, focal, bionic и т.д.).
Создание первой Tailscale-сети и привязка машины
- Включите сервис демона tailscaled и запустите его сразу:
sudo systemctl enable --now tailscaled.service- Подключите машину к вашей Tailscale-сети:
sudo tailscale up- В терминале появится ссылка. Откройте её в браузере и выполните вход в систему (SSO: Google, GitHub, Microsoft и т.п.). Затем подтвердите привязку устройства (нажатие Connect/Подключить).

- Рекомендуется использовать systemd-resolved для корректной работы DNS через Tailscale. Включите и запустите systemd-resolved:
sudo systemctl enable --now systemd-resolved.service- Создайте символическую ссылку /etc/resolv.conf на stub-resolv.conf, чтобы systemd-resolved управлял резолвом:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf- Перезапустите сетевые службы, чтобы применить изменения:
sudo systemctl restart systemd-resolved.service
sudo systemctl restart NetworkManager.service
sudo systemctl restart tailscaled.serviceСовет: если у вас сервер без NetworkManager, достаточно перезапустить systemd-resolved и tailscaled.
Добавление второй машины в сеть
На второй машине повторите шаги установки. После установки выполните:
sudo tailscale upВ браузере подтвердите привязку. Убедитесь, что на второй машине также включён systemd-resolved и что /etc/resolv.conf указывает на stub-resolv.conf.

После успешного подключения введите на одной из машин:
sudo tailscale statusВы увидите список устройств с их Tailscale IP (обычно диапазон 100.x.x.x).
Предоставление доступа к машине другим пользователям (Sharing)
По умолчанию одна личная сеть привязана к аккаунту. Если нужно поделиться доступом к конкретному устройству с участниками вне вашей организации, используйте механизм invite links в админ-консоли.
- Перейдите в веб-интерфейс Tailscale и откройте Admin console (Консоль администратора).

- Найдите устройство, которое хотите экспортировать, и нажмите Share (Поделиться) или кнопку с тремя точками рядом с ним, затем выберите Generate & copy invite link (Создать и скопировать ссылку-приглашение).

Примечание: ссылка по умолчанию одноразовая и истечёт после использования. Включите переключатель “Multi-use invite link” (Многократное использование), если хотите, чтобы ссылка работала для нескольких пользователей.
- Отправьте приглашение внешнему пользователю. При переходе по ссылке ему нужно будет войти и принять приглашение.

- После принятия у вас в сети появится новый узел. Проверьте связь командой ping по Tailscale IP:
ping 100.117.185.109
Совет: при проблемах с доступом проверьте UFW/iptables на обеих сторонах и откройте необходимые порты для внутреннего трафика или временно отключите firewall для диагностики.
Создание VPN через выходной узел (Exit Node)
Exit Node — это машина, которая принимает трафик от других узлов Tailscale и отправляет его в интернет от своего имени. Это удобно, если нужно выйти в интернет через конкретный IP (например, чтобы получить доступ к ресурсам, ограниченным по геолокации) или централизовать фильтрацию трафика.
Шаги для настройки Exit Node на Ubuntu:
- Разрешите пересылку пакетов IPv4 и IPv6 и запишите настройки в sysctl:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf- Перезапустите tailscale и объявите узел как рекламирующий exit-node:
sudo tailscale up --advertise-exit-node- В веб-консоли Admin Console выберите устройство, нажмите кнопку с тремя точками и откройте Edit route settings (Правка маршрутов). Включите Use as exit node (Использовать как выходной узел).


После включения вы получите подтверждение, что узел доступен как exit node.
Подключение клиента к выходному узлу
На клиенте выполните следующие действия:
- Найдите адрес exit node:
sudo tailscale status
- Подключитесь к exit node, использовав флаг –use-exit-node и указав его IP:
sudo tailscale up --use-exit-node=100.86.19.20- Проверьте внешний IP:
curl ifconfig.me/ipВы должны увидеть IP, соответствующий интернет-выходу exit node.

Важно: exit node пропускает весь исходящий трафик клиента через себя. Убедитесь, что пропускная способность и политика безопасности exit node подходят для такой роли.
Рекомендации по безопасности и конфиденциальности
- Минимизируйте список сервисов, доступных по Tailscale. Откройте только те порты, которые необходимы.
- Используйте ACL (Access Controls) в админ-консоли Tailscale для разграничения прав доступа между устройствами и пользователями.
- Регулярно обновляйте пакеты и Tailscale-клиент.
- Для серверов, которые выступают как exit node, включите логирование и мониторинг (например, fail2ban, auditd).
- Проверяйте, какие DNS-серверы настроены через /etc/resolv.conf, чтобы избежать утечек DNS.
Конфиденциальность: при использовании exit node весь исходящий трафик будет проходить через машину-хостера. Не используйте чужие exit nodes для конфиденциальных операций без доверия к владельцу.
Когда Tailscale не подойдёт — примеры и ограничения
- Не подходит, если вам нужен полностью автономный корпоративный VPN с централизованным пропусканием всего трафика через собственные ЦОДы (хотя Tailscale можно интегрировать с такими сценариями при правильной архитектуре).
- Ограничение числа устройств: бесплатный план — до 100 устройств для личных сетей.
- Если требуется поддержка устаревших платформ или очень специфичных сетевых конфигураций, Tailscale может потребовать дополнительных настроек или не поддерживать их.
- Некоторые корпоративные политики запрещают использование внешних SSO или сторонних облачных сервисов для управления доступом.
Альтернативные подходы
- OpenVPN: классический self-hosted VPN с полной централизованной маршрутизацией.
- WireGuard вручную: быстрый и лёгкий, но требует ручной настройки ключей и маршрутов для каждого узла.
- ZeroTier: похожая P2P-сеть, с разными моделью управления и особенностями маршрутизации.
Когда выбирать альтернативу:
- Нужна тонкая настройка маршрутизации и контроль трафика в ЦОД — OpenVPN или собственный WireGuard.
- Требуется гибкая виртуальная сеть с GUI для mesh-сетей — можно рассмотреть ZeroTier.
Методика проверки и чек-листы
Минимальная проверка работоспособности после установки:
- На каждом узле выполните sudo tailscale status и убедитесь, что узлы видят друг друга.
- Проверьте ping на Tailscale IP с обеих сторон.
- Проверка DNS: выполните nslookup/example.com и убедитесь, что разрешение происходит корректно.
- Для exit node: curl ifconfig.me/ip до и после подключения клиента.
Чек-лист администратора (быстрый):
- tailscaled запущен и автозапуск включён
- /etc/resolv.conf указывает на /run/systemd/resolve/stub-resolv.conf
- ACL в админ-консоли настроены
- Exit node только для доверенных машин
- Логи и мониторинг включены
Чек-лист пользователя:
- Установлен tailscale
- Вход в SSO выполнен
- Устройство отображается в admin console
- Тестовый ping проходит
Критерии приёмки:
- Устройства видят друг друга через tailscale status
- Доступ к целевым сервисам (SSH, HTTP) подтверждён
- Exit node корректно меняет внешний IP клиента
Отладка — частые проблемы и решения
Проблема: устройство не появляется в списке в админ-консоли
- Решение: перезапустите tailscaled, проверьте лог sudo journalctl -u tailscaled -f, повторно выполните tailscale up.
Проблема: пакеты не проходят через exit node
- Решение: проверьте net.ipv4.ip_forward и net.ipv6.conf.all.forwarding, проверьте iptables/ufw на exit node, перезапустите tailscaled.
Проблема: DNS не разрешается
- Решение: проверьте /etc/resolv.conf и systemd-resolved, возможно нужно включить MagicDNS или указать корректный DNS в настройках Tailscale.
Безопасность, соответствие и конфиденциальность (GDPR)
- Tailscale использует внешние OAuth/SSO-поставщики для аутентификации. Убедитесь, что выбранный способ соответствует политике безопасности вашей организации.
- Для обработки персональных данных оцените, кто имеет доступ к админ-консоли и журналам.
- Если требуется локальная политика хранения логов — настраивайте и агрегируйте логи на собственные серверы.
Рольные чек-листы (быстрая ориентация)
Роль: системный администратор
- Настроить ACL
- Включить мониторинг
- Настроить exit node и NAT правилa
Роль: разработчик
- Убедиться, что Dev-машина подключена
- Настроить проброс портов локально через tailscale по потребности
Роль: внешний подрядчик
- Получить invite link
- Подтвердить доступ и проверить соединение
Полезные шаблоны и команды (cheat sheet)
Установить и запустить tailscale:
sudo apt update && sudo apt install -y curl
# добавить репозиторий (пример для jammy)
sudo curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
sudo curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt update && sudo apt install -y tailscale
sudo systemctl enable --now tailscaled.service
sudo tailscale upСделать узел exit-node:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale up --advertise-exit-nodeПодключиться к exit-node на клиенте:
sudo tailscale up --use-exit-node=100.x.x.x
curl ifconfig.me/ipЧасто задаваемые вопросы
Есть ли ограничение по количеству машин и пропускной способности?
Да. Бесплатный личный план поддерживает до 100 устройств в сети. Это ограничение на количество устройств, а не на полосу пропускания между ними.
Можно ли изменить email в аккаунте Tailscale?
Нет. Если вы используете внешний SSO (Google/GitHub), смена email в рамках этого аккаунта невозможна. Решение — создать новый аккаунт через другой SSO и пригласить устройства заново.
Другой пользователь не может подключиться после приглашения — что делать?
Частая причина — межсетевой экран (firewall) или политики корпоративной сети. Попробуйте временно открыть необходимые порты (или autorize службу tailscaled) и проверьте логи на обеих сторонах.
Краткое резюме
Tailscale — удобный инструмент для быстрого создания защищённой mesh-сети между устройствами. Он избавляет от необходимости пробрасывать порты или иметь публичный IP. Для большинства личных и многих корпоративных сценариев Tailscale ускоряет настройку и упрощает управление доступом. Используйте exit nodes для централизованного выхода в интернет и ACL для контроля доступа.
Image credit: Aris Munandar via Unsplash (Фоновая фотография) and Wikimedia Commons (Логотип). Скриншоты и изменения — Ramces Red.
Похожие материалы
Как исправить «This PC can’t run Windows 11» в VMware
Как удалить аккаунт Gmail и восстановить его
Исправление ошибки VMware VMCIDev VMX
Hysolate — безопасная песочница для Windows 11