Double VPN на WireGuard: Захист та анонімність

У даній статті розглянемо, як налаштувати Double VPN за допомогою WireGuard, використовуючи два сервери для створення тунелю. Такий підхід може бути корисним у ситуаціях, коли потрібно додатково захистити з’єднання або розділити функціонал серверів (наприклад, перший сервер для входу в VPN, а другий для виходу в інтернет).

Раніше ми писали, як налаштувати VPN за допомогою WireGuard (оф. сайт: https://www.wireguard.com/) і WireHole для запобігання DNS витоку.

Задача: Побудувати Double VPN

Необхідно налаштувати клієнта так, щоб увесь його інтернет-трафік спочатку проходив через сервер 1, а потім через сервер 2, звідки і буде виходити в інтернет.

Двойной VPN

Переваги використання ланцюжка серверів

  1. Додаткова безпека: Використання декількох серверів збільшує складність для потенційних атакуючих, оскільки трафік проходитиме через проміжні вузли.
  2. Розподіл навантаження: Розділення функцій між серверами може підвищити ефективність. Один сервер може використовуватися для авторизації та входу в VPN, а інший — для виходу в інтернет.
  3. Анонімність: Ускладнюється відстеження трафіку, оскільки кінцевий сервер не знає, хто спочатку підключався до VPN.
  4. Географічна гнучкість: Можливість підключення через сервери в різних регіонах дозволяє вибирати різні географічні локації для виходу в інтернет.

Недоліки такого підходу

  1. Складність налаштування: У порівнянні з звичайним налаштуванням WireGuard, налаштування ланцюжка з декількох серверів вимагає більше зусиль та знань з маршрутизації та мережевої конфігурації.
  2. Підвищена затримка (латентність): Кожен додатковий сервер додає затримку, що може негативно впливати на швидкість з’єднання.
  3. Складність діагностики: При виникненні проблем з підключенням, їх діагностика стає складнішою, оскільки трафік проходить через декілька вузлів.
  4. Вимоги до ресурсів: Для роботи потрібно два (або більше) сервери, що збільшує витрати на інфраструктуру.

Кроки по налаштуванню

Крок 1: Встановлення WireGuard

Перш за все встановимо WireGuard на кожному з серверів і на клієнті. Наприклад, на Ubuntu/Debian команда для встановлення виглядає так:

sudo apt update sudo apt install wireguard

Крок 2: Генерація ключів

WireGuard використовує пари ключів для шифрування. На кожному сервері та клієнті згенеруйте пару ключів:

wg genkey | tee privatekey | wg pubkey > publickey

Збережіть приватні та публічні ключі — вони знадобляться при налаштуванні конфігурації.

Крок 3: Налаштування сервера 2 (Кінцева точка)

Сервер 2 буде кінцевою точкою тунелю та надсилатиме трафік в інтернет.

  1. Створюємо файл конфігурації /etc/wireguard/wg0.conf на сервері 2:
    [Interface]
    PrivateKey = <Приватний ключ сервера 2>
    Address = 10.0.2.1/24  # Локальний IP для тунелю
    ListenPort = 51820      # Порт для WireGuard
    
    [Peer]
    PublicKey = <Публічний ключ сервера 1>
    AllowedIPs = 10.0.1.0/24  # Мережа між клієнтом і сервером 1
  2. Вмикаємо WireGuard на сервері 2:
    sudo wg-quick up wg0

Крок 4: Налаштування сервера 1 (Проміжний)

Сервер 1 передаватиме трафік від клієнта на сервер 2.

  1. Створюємо файл конфігурації /etc/wireguard/wg0.conf:
    [Interface]
    PrivateKey = <Приватний ключ сервера 1>
    Address = 10.0.1.1/24    # Локальний IP для тунелю
    ListenPort = 51820       # Порт для WireGuard
    
    [Peer]
    PublicKey = <Публічний ключ клієнта>
    AllowedIPs = 10.0.1.2/32  # IP клієнта
    
    [Peer]
    PublicKey = <Публічний ключ сервера 2>
    Endpoint = <IP сервера 2>:51820  # Адреса сервера 2
    AllowedIPs = 0.0.0.0/0  # Весь трафік через сервер 2
    PersistentKeepalive = 25
    
  2. Вмикаємо VPN на сервері 1:
    sudo wg-quick up wg0

Крок 5: Налаштування клієнта

На клієнті створюємо файл конфігурації wg0.conf:

[Interface]
PrivateKey = <Приватний ключ клієнта>
Address = 10.0.1.2/24  # IP клієнта

[Peer]
PublicKey = <Публічний ключ сервера 1>
Endpoint = <IP сервера 1>:51820
AllowedIPs = 0.0.0.0/0  # Весь трафік через сервер 1
PersistentKeepalive = 25

Запускаємо VPN на клієнті:

sudo wg-quick up wg0

Крок 6: Увімкнення IP Forwarding

Щоб сервери могли пересилати трафік, необхідно увімкнути IP Forwarding:

  1. На кожному сервері додаємо рядок у файл /etc/sysctl.conf:
    net.ipv4.ip_forward = 1
  2. Застосовуємо зміни:
    sudo sysctl -p

Крок 7: Налаштування NAT на сервері 2

Щоб сервер 2 міг надсилати трафік в інтернет, налаштуємо NAT:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Де eth0 — інтерфейс, з’єднаний з інтернетом. Не забудьте зберегти правила iptables, щоб вони зберігалися після перезавантаження.

Перевірка підключення

Після налаштування конфігурації на клієнтах та серверах, переконайтеся, що тунелі налаштовані правильно. Перевірте, чи проходить трафік через обидва сервери і виходить в інтернет.

Для цього використовуйте команду wg на кожному сервері, щоб переконатися, що клієнт підключено правильно, а також перевірте маршрутизацію на клієнті:

ip route

Висновок

Використання ланцюжка з декількох серверів (Double VPN) для WireGuard може забезпечити додатковий захист та покращити гнучкість роботи з VPN. Проте, воно вимагає більш складного налаштування, уважного підходу до маршрутизації та налаштування NAT. Такий підхід підійде для тих, хто потребує додаткової безпеки або хоче налаштувати багатошарову інфраструктуру для своїх підключень.

Оцініть статтю