Добрый день. В этой статье мы установим 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
Предлагаю вам на выбор 4 хостинга, которые можно использовать для VPN, исходя из своей субъективной оценки. Три ссылки реферальные, так вы сможете и отблагодарить меня, без всяких усилий, если статья вам оказалось полезной.
Установка 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
Классная статья, спасибо!
Есть вопрос! После того как я перешел «…на вкладку DNS, выбираем DNS от Cloudflare, Google или Quad9…», не нужно включить тумблер override local DNS?
Спасибо!
Добрый день, спасибо большое за отзыв )) Я использую, как я понимаю, тогда все запросы идут через HTTPS выбранного провайдера, например Cloudflare.
Спасибо!
Дмитрий, спасибо за отличную статью. О tailscale я узнал только вчера и попробовал использовать его для того, чтобы опубликовать сайт, находящийся на домашнем сервере (на сером ip) в интернете. Документация tailscale говорит, что все настроено правильно, а доступа нет. Вы не в курсе в чем может быть проблема?
Добрый день. Не очень понял — опубликовать сайт на сером IP, это как ?
Статья обновлена