Устанавливаем Mesh-сеть на основе Tailscale VPN
Добрый день. В этой статье мы установим VPN Tailscale, который основан на WireGuard и предоставляет дополнительные функции для пользователей. В отличие от WireGuard, Tailscale не является полностью бесплатным. Вы можете им пользоваться без оплаты и привязки карты, с ограничениями до 3 пользователей и 100 устройств. Что в целом достаточно для некоммерческого применения.
Содержание статьи
В чем преимущества и недостатки Tailscale над WireGuard ?
Основное отличие и преимущество Tailscale — это децентрализованная Mesh-сеть.
Mesh-сеть (по версии chat GPT) — это тип сетевой топологии, в которой устройства подключены друг к другу таким образом, что каждое устройство может быть связано с несколькими другими устройствами в сети. Эта концепция напоминает структуру паутины или сети сетей, где данные могут передаваться через промежуточные узлы для достижения целевого устройства.
Если проще, можно подключаться ноут через сервер, смартфон через сервер и наоборот, например смартфон через ноут. Tailscale создает прямой канал между устройствами.
Основные факты:
- Tailscale использует WireGuard для создания зашифрованных туннелей между узлами.
- Она поддерживает как сети типа «центр-конечная точка», так и сети «сетка».
- Tailscale использует централизованный сервер координации для обмена ключами и согласования.
- Она поддерживает обход NAT с использованием передовых методов, основанных на стандартах STUN и ICE.
- Tailscale использует зашифрованные ретрансляторы TCP, называемые серверами DERP, для ситуаций, когда UDP заблокирован.
- Она обеспечивает контрольные списки доступа (ACL) и политики безопасности для повышения уровня защиты.
Другие преимущества Tailscale — это веб-консоль для управления устройствами, гибкое управлением DNS и устройствами, обход NAT.
Из недостатков - сложная процедура настройки клиентов программ, ограничения на количество аккаунтов и устройств. И главный недостаток - появляется еще одна сторона в вопросе VPN.
Выбор хостинга для VPN
Racknerd
Американский хостер предлагает отличные тарифы для VPN, но только при условие аренды акционных серверов (ссылка на акцию). Тарифы без акций — напротив, сильно дорогие. Я пользуюсь уже несколько лет данным хостингом и покупаю именно акционные тарифы. Для РФ есть возможность оплаты через крипту, как бы сейчас это не проблема завести кошелек на Huobi или Kucoin.
Железо используют среднее (для промо-тарифов), но его хватает с избытком для VPN. Большой плюс — можно заранее пинговать сервера, выбрать IP адрес и его расположение. Сам хостинг зарекомендовал себя очень надежным, к саппортам ни разу не обращался.
Speedtest показывает скорость Download 420 — 760Mbit/s, Upload 750 — 790 Mbit/s и Packet loss: 0 % — что является отличным результатом. Хотя просадки по скорости трафика бывают. Минимальная сумма для пополнения счета — 10 — 20 $ за 1 год.
Aeza
Хостер предлагает очень хорошие тарифы с оплатой от 1-го часа и расположением в Европе и СНГ. Хорошее железо, простая и удобная панель управления. Не находятся в юрисдикции РФ, при этом и никаких персональных данных не просят. Часто анонсирует промо-тарифы на хорошие сервера по 105 рублей.
Speedtest показывают скорость Download 678 — 735 Mbit/s, Upload 632 — 668 Mbit/s и Packet Loss: 3 % — отличный результат! Кроме пожалуй Packet Loss, с ним я столкнулся практически на всех локациях Aeza.
Минимальная стоимость сервера под VPN — 391 и 105 рублей за промо тариф. Минимальная сумма для пополнения счета — от 105 рублей. При регистрации по ссылке, у вас будет wellcome бонус +15% к первому пополнению счета, за первые 24 часа.
Установка Tailscale
Заходим на наш сервер через SSH или веб-консоль, копируем команды и вставляем в консоль:
apt update && apt upgrade -y
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
apt update && apt install tailscale
tailscale up
В консоли появится ссылка на Tailscale, кликаем на нее, переходим по ней в браузере и авторизуемся (или связываем свой аккаунт) с Tailscale.
tailscale ip -4
Настройка маршрутизатора подсети
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
Перенаправление трафика через сервер
tailscale up --advertise-exit-node
Далее идет важный этап, не пропускаем его!
Затем на сайте Tailscale, в списке машин — нажать на три точки напротив той, через которую будет идти весь трафик (подсказка, название нашего сервера), Edit Routte Settings → активировать переключатель Use as exit node.
В Windows, на иконке Tailscale правой клавишей мыши, в появшемся списке выбрать Exit node и выбрать машину через которую будет идти весь трафик (подсказка, название нашего сервера).
В Android, справа вверху нажать три точки, далее Use exit node и выбрать машину через которую будет идти весь трафик.
И напоследок парочку фичей:
Переходим в консоли Tailscale (ссылка) на вкладку DNS, выбираем DNS от Cloudflare, Google или Quad9. Или вводим свой, например от Adguard. И ниже активируем HTTPS Certificates.
Базовая защита сервера
Защитим сервер брутфорса (взлом через перебор паролей):
apt install fail2ban -y && apt install ufw -y && apt install nano -y
touch /etc/fail2ban/jail.local && nano /etc/fail2ban/jail.local
Откроется редактор, вставим в него код:
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200
Нажимаем ctlr + x, далее y + enter, чтобы сохранить.
Настраиваем фаервол и отключаем пинг
ufw allow 22/tcp && ufw limit 22/tcp && ufw allow 443/tcp && ufw default deny incoming && ufw default allow outgoing && service ufw start && ufw enable
Подтверждаем включение фаервола, Y и Enter.
Отключим двухсторонний пинг, чтобы затруднить обнаружение туннеля
nano /etc/ufw/before.rules
Меняем концовку следующего выражения с ACCEPT на DROP:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
Нажимаем ctlr + x, далее y + enter, чтобы сохранить.
И напоследок:
apt update && apt upgrade -y && apt autoclean -y && apt clean -y && apt autoremove -y && reboot


Дмитрий, спасибо за отличную статью. О tailscale я узнал только вчера и попробовал использовать его для того, чтобы опубликовать сайт, находящийся на домашнем сервере (на сером ip) в интернете. Документация tailscale говорит, что все настроено правильно, а доступа нет. Вы не в курсе в чем может быть проблема?