Настройка цепочки VPN-серверов с WireGuard: Защита и анонимность

Безопасность в сети

В данной статье рассмотрим, как настроить VPN с помощью WireGuard, используя два сервера для создания туннеля. Такой подход может быть полезен в ситуациях, когда необходимо дополнительно защитить соединение или разделить функционал серверов (например, первый сервер для входа в VPN, а второй для выхода в интернет).

Ранее мы писали как настроить VPN с помощью WireGuard (оф. сайт: https://www.wireguard.com/) и WireHole для предотвращения утечки DNS leak.

Задача: Построить Двойной 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

Заключение

Использование цепочки из нескольких серверов (Двойной VPN) для WireGuard может обеспечить дополнительную защиту и улучшить гибкость работы с VPN. Однако оно требует более сложной настройки, внимательного подхода к маршрутизации и настройки NAT. Такой подход подойдет для тех, кто нуждается в дополнительной безопасности или хочет настроить многослойную инфраструктуру для своих подключений.

Оцените статью