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

Піднімаємо 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

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

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

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

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

  • Neural Network [guide] 1

    Все починається із першого нейрону. Алгоритм лінійної регресії для одного нейрону, та принципи його використання.

    Теми цього довгочиту:

    It
  • Java. Чому локи потрібно тримати якомога менший час?

    Коротший час блокувань може збільшити загальну пропускну здатність системи, оскільки більше потоків може отримати доступ до синхронізованих секцій протягом певного часу.

    Теми цього довгочиту:

    Java

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

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

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

  • Neural Network [guide] 1

    Все починається із першого нейрону. Алгоритм лінійної регресії для одного нейрону, та принципи його використання.

    Теми цього довгочиту:

    It
  • Java. Чому локи потрібно тримати якомога менший час?

    Коротший час блокувань може збільшити загальну пропускну здатність системи, оскільки більше потоків може отримати доступ до синхронізованих секцій протягом певного часу.

    Теми цього довгочиту:

    Java