Свой multi-hop VPN: цепочка из двух WireGuard серверов

Сложность: Продвинутая 12 мин чтения Обновлено: 22.07.2026 7
Свой multi-hop VPN: цепочка из двух WireGuard серверов
Пропустите трафик через два своих сервера, соединив два WireGuard VPS в приватную multi-hop цепочку - самую приватную схему двойного прыжка.

Multi-hop VPN пропускает ваш трафик через два сервера в двух разных странах, поэтому ни одна машина не знает одновременно и кто вы, и что вы делаете. Коммерческие VPN предлагают это как "Double VPN" или "Secure Core", но самая приватная версия - собранная вами самими из двух серверов, которыми управляете только вы. Этот гайд соединяет в цепочку два сервера WireGuard - входной (entry) сервер, к которому вы подключаетесь, и выходной (exit) сервер, откуда трафик уходит в интернет, - так ваш реальный IP скрыт за двумя прыжками, которые никто другой не сможет логировать.

Перед началом: это продвинутый гайд. Если вы ещё не поднимали одиночный WireGuard-сервер, сначала пройдите наш гайд по WireGuard на VPS - здесь предполагается, что этот процесс вам знаком. Понадобятся два VPS, желательно от разных провайдеров в разных странах, оба на свежем Ubuntu или Debian, с root-доступом.

Как работает цепочка

Ваше устройство подключается только к входному серверу. Входной сервер не отправляет ваш трафик напрямую в интернет - вместо этого он прогоняет всё через второй WireGuard-туннель на выходной сервер, который уже выходит в интернет. Путь такой: вы → вход → выход → интернет. Входной сервер видит ваш реальный IP, но никогда - пункт назначения; выходной видит пункт назначения, но всегда видит только входной сервер. Сайты видят IP выходного сервера. Выходному серверу дадим диапазон 10.8.0.0/24, а входному 10.7.0.0/24 для ваших устройств.

Шаг 1: Настройка выходного сервера

Выходной сервер - это просто обычный WireGuard-сервер. На выходном VPS установите WireGuard и сгенерируйте ключи:

apt update && apt install -y wireguard
wg genkey | tee /etc/wireguard/exit.key | wg pubkey > /etc/wireguard/exit.pub
cat /etc/wireguard/exit.key   # this is EXIT_PRIVATE_KEY
cat /etc/wireguard/exit.pub   # this is EXIT_PUBLIC_KEY

Найдите публичный сетевой интерфейс (обычно eth0) командой ip route show default. Затем создайте /etc/wireguard/wg0.conf на выходном сервере:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = EXIT_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# The entry server (we add its key in Step 4)
PublicKey = ENTRY_LINK_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Замените eth0, если ваш интерфейс отличается. Пока оставьте ENTRY_LINK_PUBLIC_KEY как заглушку - мы сгенерируем его на Шаге 4.

Шаг 2: Включите форвардинг и запустите выход

Включите IP-форвардинг навсегда, затем запустите WireGuard на выходном сервере:

echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wg.conf
sysctl -p /etc/sysctl.d/99-wg.conf
ufw allow 51820/udp
systemctl enable --now wg-quick@wg0

Запомните публичный IP выходного сервера - назовём его EXIT_IP.

Шаг 3: Настройка входного сервера (ваша сторона)

На входном VPS установите WireGuard и сгенерируйте две пары ключей - одну для туннеля к вашим устройствам (wg0) и одну для линка к выходу (wg1):

apt update && apt install -y wireguard
wg genkey | tee /etc/wireguard/entry0.key | wg pubkey > /etc/wireguard/entry0.pub   # faces your devices
wg genkey | tee /etc/wireguard/entry1.key | wg pubkey > /etc/wireguard/entry1.pub   # link to exit

Публичный ключ из entry1.pub - это ENTRY_LINK_PUBLIC_KEY, который вы оставили заглушкой на выходном сервере на Шаге 1. Вернитесь и вставьте его в wg0.conf выходного сервера, затем выполните systemctl restart wg-quick@wg0 на выходном сервере.

Шаг 4: Создайте линк вход-выход (wg1)

На входном сервере создайте /etc/wireguard/wg1.conf. Это делает входной сервер клиентом выходного:

[Interface]
Address = 10.8.0.2/24
PrivateKey = ENTRY_LINK_PRIVATE_KEY
# Do NOT route the whole server through the exit - that would cut your own SSH.
# Send only your client subnet (10.7.0.0/24) through the exit, via a separate table.
Table = off
PostUp = ip rule add from 10.7.0.0/24 table 120; ip route add default dev wg1 table 120
PostDown = ip rule del from 10.7.0.0/24 table 120; ip route del default dev wg1 table 120

[Peer]
# The exit server
PublicKey = EXIT_PUBLIC_KEY
Endpoint = EXIT_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

ENTRY_LINK_PRIVATE_KEY - это содержимое entry1.key. Это самый важный шаг, который нужно сделать правильно. Обычный AllowedIPs = 0.0.0.0/0 заставил бы WireGuard направить собственный трафик входного сервера - включая вашу SSH-сессию - через выход, что оборвёт ваш доступ к серверу. Table = off это предотвращает, а правила policy routing заворачивают через выход только вашу клиентскую подсеть, оставляя сам сервер доступным как обычно.

Шаг 5: Создайте входной туннель для ваших устройств (wg0)

Всё ещё на входном сервере, создайте /etc/wireguard/wg0.conf. Это туннель, к которому подключается ваш телефон или ноутбук, а правила маршрутизации проталкивают этот трафик в wg1:

[Interface]
Address = 10.7.0.1/24
ListenPort = 51820
PrivateKey = ENTRY_DEVICE_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -o wg1 -j ACCEPT; iptables -A FORWARD -i wg1 -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o wg1 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o wg1 -j ACCEPT; iptables -D FORWARD -i wg1 -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o wg1 -j MASQUERADE

[Peer]
# Your device (we add its key in Step 6)
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.7.0.2/32

ENTRY_DEVICE_PRIVATE_KEY - это содержимое entry0.key. Маскарадинг на wg1 прячет ваше устройство за входным сервером, поэтому выход всегда видит только вход.

Шаг 6: Создайте конфиг устройства и подключитесь

Сгенерируйте пару ключей для устройства (на своём компьютере или на входном сервере), затем соберите клиентский конфиг. Вставьте публичный ключ устройства в wg0.conf входного сервера там, где CLIENT_PUBLIC_KEY. Конфиг вашего устройства выглядит так:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.7.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = ENTRY_DEVICE_PUBLIC_KEY
Endpoint = ENTRY_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Здесь ENTRY_DEVICE_PUBLIC_KEY - из entry0.pub, а ENTRY_IP - публичный IP входного сервера, единственного сервера, с которым вообще общается ваше устройство.

Шаг 7: Запустите вход и проверьте цепочку

На входном сервере включите форвардинг и запустите оба туннеля по порядку (сначала линк, потом туннель устройства):

echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wg.conf
sysctl -p /etc/sysctl.d/99-wg.conf
ufw allow 51820/udp
systemctl enable --now wg-quick@wg1
systemctl enable --now wg-quick@wg0

Теперь импортируйте клиентский конфиг в приложение WireGuard на устройстве и подключитесь. Чтобы убедиться, что цепочка работает, проверьте свой IP - он должен показывать страну выходного сервера, а не входного:

curl https://api.ipify.org

Если вернулся IP выходного сервера - ваш трафик прыгает через оба сервера. Прогоните тест на утечки на нашей странице сетевых инструментов, чтобы убедиться, что нет утечек DNS или WebRTC.

Частые ошибки: если после подключения нет интернета - проверьте, что IP-форвардинг включён (sysctl net.ipv4.ip_forward должен вернуть 1) на обоих серверах, что на выходном сервере есть ключ входного в блоке [Peer], и что оба фаервола пропускают UDP 51820. Если IP показывает страну входа вместо выхода - правило MASQUERADE -o wg1 на входе не загрузилось, перезапустите wg0 на входном сервере.

Стоит ли оно того?

Свой multi-hop - самая приватная схема из существующих: два сервера, которыми владеете вы, в двух странах, без провайдера-посредника, ведущего логи. Компромиссы - скорость (два прыжка добавляют задержку) и цена (два VPS вместо одного). Для повседневного сёрфинга одного сервера достаточно; собирайте цепочку, когда ваша модель угроз действительно этого требует. И помните: multi-hop защищает вашу приватность, но не меняет закон той страны, где вы живёте.

Теги: multihop double vpn wireguard self-hosted advanced