Безпека в мережі

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

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. Такий підхід підійде для тих, хто потребує додаткової безпеки або хоче налаштувати багатошарову інфраструктуру для своїх підключень.