Публікація містить рекламні матеріали.

Піднімаємо Exit Node на Linux сервері за допомогою Tailscale VPN.

Зміст

Що таке Tailscale?

Android Apps by Tailscale Inc. on Google Play

Tailscale — сервіс для обʼєднання декількох девайсів в VPN на протоколі WireGuard. Tailscale дуже легко налаштовується якщо треба обʼєднати декілька ПК/ноутів на різних ОС, і доволі легко (порівнюючи з OpenVPN) якщо треба додати сервер.

Що таке Exit Node і навіщо він нам?

“Exit Node” — вихідний вузол. Якщо підключитися до девайсу в якого увімкнений режим “Exit Node” то увесь ваш інтернет трафік буде йти через нього.

Тож, беремо гарний хостінг з потрібною вам geo-локацією (для швидкості/отримання IP адреси конкретної країни) і у вас власний VPN зі статичною IP адресою за 4-6 євро на місяць.

В моєму випадку, треба було мати сервер зі статичним IP який був би внесений в декілька whitelist-ів, щоб декілька девайсів могли робити запити через його IP.

Команди для налаштування сервера на Linux в якості Exit Node.

1. Встановіть Tailscale на сервер

(запустіть у терміналі сервера або через SSH)

curl -fsSL https://tailscale.com/install.sh | sh

2. Додайте ключ авторизації, згенерований в панелі керування Tailscale

Tailscale-клієнти для інших девайсів зазвичай мають UI в якому ви можете авторизуватися через Google або GitHub, а ось для сервера потрібно заздалегідь створити ключ в кабінеті Tailscale. Також, якщо плануєте довго користуватися сервером, раджу в тому самому кабінеті відключити cплив терміну дії ключа автентифікації (Machines → оберіть свій сервер → Options → Disable key expiry

(запустіть у терміналі сервера або через SSH)

tailscale up --authkey=<YOUR_GENERATED_KEY>

3. Переконайтеся, що переадресація портів IPv4 та IPv6 увімкнена

(запустіть у терміналі сервера або через SSH)

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

4. Позначте сервер як Exit Node

(запустіть у терміналі сервера або через SSH)

tailscale up --advertise-exit-node

5. Увімкніть Exit Node

Зайдіть в Панель керування Tailscale → Machines → оберіть свій сервер → Options → Edit route settings... → поставте прапорець "Use as exit node"

6. (Необовʼязково) Оптимізуйте пропускну здатність UDP

(запустіть у терміналі сервера або через SSH)

NETDEV=$(ip route show 0/0 | cut -f5 -d' ')
sudo ethtool -K $NETDEV rx-udp-gro-forwarding on rx-gro-list off

Зміни, внесені за допомогою ethtool, не зберігаються постійно і будуть втрачені після вимкнення севера. У дистрибутивах Linux, які використовують networkd-dispatcher (факт використання можна перевірити за допомогою systemctl is-enabled networkd-dispatcher), скопіюйте та виконайте наступні команди, щоб створити скрипт, який налаштовуватиме ці параметри при кожному завантаженні.

printf '#!/bin/sh\n\nethtool -K %s rx-udp-gro-forwarding on rx-gro-list off \n' "$(ip route show 0/0 | cut -f5 -d" ")" | sudo tee /etc/networkd-dispatcher/routable.d/50-tailscale
sudo chmod 755 /etc/networkd-dispatcher/routable.d/50-tailscale

Перевірте створений скрипт, щоб переконатися, що він успішно працює на вашому сервері:

sudo /etc/networkd-dispatcher/routable.d/50-tailscale
test $? -eq 0 || echo 'An error occured!'

Все. Сервер готовий до підключень!


Далі можете вже гратися і, наприклад:

  • створити скрипт який буде підіймати та підготовлювати сервер автоматично через API (як от у Hetzner), щоб економити гроші та платити тільки за use-time;

  • замість “Exit Node” налаштувати маршрутизацію, щоб тільки частина трафіку йшла через вузол

  • спробувати Taildrop (наразі в альфа тестуванні), щоб обмінюватися файлами

  • …і ще багато чого. Короче, ви вже зрозуміли, продукт класний!

P.S. Критика цього допису вітається!

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Маріо Лобстер
Маріо Лобстер@mario_lobster

І що ви мені зробите?

76Прочитань
1Автори
1Читачі
На Друкарні з 24 грудня

Більше від автора

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається