From 1065ed31d561dc1956e202249c7c2d63913a83ff Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Thu, 17 Nov 2022 00:16:51 +0300 Subject: [PATCH] add habr article --- article/habr/trickster-vpn.txt | 814 +++++++++++++++++++++++++++++++ article/habr/wireguard-1200.jpeg | Bin 0 -> 149721 bytes 2 files changed, 814 insertions(+) create mode 100644 article/habr/trickster-vpn.txt create mode 100644 article/habr/wireguard-1200.jpeg diff --git a/article/habr/trickster-vpn.txt b/article/habr/trickster-vpn.txt new file mode 100644 index 0000000..5434a36 --- /dev/null +++ b/article/habr/trickster-vpn.txt @@ -0,0 +1,814 @@ +Забавная ситуация: сайтов и сервисов, доступных только через VPN, все больше, но при этом многие российские компании закрывают доступ из-за границы. В результате приходится целыми днями теребить ползунки «вкл-выкл», что утомительно. Я расскажу, как с помощью магии маршрутов и WireGuard, решить эту проблему и сделать «умный» VPN, который не надо отключать. + +Если ты пользуешься VPN, то и сам наверняка сталкиваешься с блокировками зарубежного трафика. К примеру, могут не открываться pochta.ru, leroymerlin.ru, rt.ru, avito.ru. + +Получается мем. + +![](https://static.xakep.ru/images/cecbcf8faba9e4fe3e8a504ffb0982e6/27765/2.jpg) + +Каждый с этим борется как может. Например, на устройствах Apple [родными средствами](https://superg.ru/kak-nastroit-avtomaticheskoe-vklyuchenie-vpn-na-iphone/) можно настроить автоматизацию, которая будет запускать VPN, когда открываешь определенные приложения (например, Twitter), а когда выходишь из них — выключать обратно. Но это костыль, а хочется все сделать красиво, да еще и прокачать навык работы с сетью. + +Поэтому мы сейчас попробуем «включать VPN чуть-чуть». + + + +Заодно чуть улучшим качество связи с локальными ресурсами: необходимость таскать трафик сначала до VPN вне страны, а потом обратно до сервера внутри нее драматично сказывается если не на скорости, то на задержке точно. Даже на проводном интернете пинг в 4 мс до Яндекса легко превращается в 190 мс, а на мобильном интернете — из 80 мс в 240 мс. Дополнительный хоп внутри страны чуть ухудшит дело, но далеко не так драматично. + +Делать все мы будем на основе WireGuard — это относительно новая (разрабатывается с 2016 года, в отличие от OpenVPN и IPsec: первый — это двухтысячные, а второй еще раньше) технология VPN. Создал ее, по сути, один человек — zx2c4, которого в миру зовут Джейсоном Доненфельдом. Плюсы WG — скорость (особенно для Linux, где он может работать как модуль ядра, начиная с Kernel 5.6, и Windows, где модуль для ядра выпустили около недели назад), низкие задержки, современная криптография и простая настройка и использование конечным юзером. + +Ах да, еще UDP. UDP для туннелей — это хорошо, потому что у TCP уже есть механизмы, которые позволяют ему работать на неидеальных соединениях, а UDP представляет собой именно такое соединение. А когда ты засовываешь TCP в TCP, то отказываешься от большей части этих механизмов (инкапсулированный TCP-пакет будет гарантированно доставлен другой стороне, хотя протокол допускает недоставку), но все еще несешь весь оверхед вида «хендшейк соединения для отправки хендшейка». + +Не говоря уж о том, что инкапсулировать UDP в TCP — ничуть не лучшая идея, потому что сразу рушит все предположения всяких скайпов о том, что лучше пропустить пару пакетов, чем уменьшить задержку: каждый UDP-пакет в этом случае будет принудительно послан заново и доставлен корректно, не считаясь с затратами времени. + +Особенно для одинокого пользователя-хакера приятна работа с шифрованием: нет необходимости ни в сертификатах и удостоверяющих центрах, ни в логинах-паролях, все, что нужно, — обменяться публичными ключами с пиром, с которым ты хочешь установить соединение. Для больших компаний это, конечно, будет скорее минусом, как и то, что WG — это только базовая часть полноценной большой инфраструктуры VPN. Но именно WireGuard использовали, к примеру, в Cloudflare для [своего](https://blog.cloudflare.com/announcing-warp-plus/) [WARP](https://blog.cloudflare.com/warp-technical-challenges/), правда, написав его собственную реализацию — boringtun. + +Еще один минус WG — то, что трафик не обфусцирован и глубокая инспекция пакетов (DPI) выявит и позволит заблокировать такое соединение (не говоря уж о блокировке UDP совсем, что почти не мешает работать с вебом, но гарантированно ломает WireGuard). Для скрытия трафика рекомендуется использовать специализированное ПО — Cloak, Obfsproxy, Shadowsocks, Stunnel, SoftEther, SSTP или, в конце концов, простой SSH. Часть из этих инструментов может работать совместно с WG, а часть способна его заменять в качестве инструмента стеганографии: WG изначально создавался под скорость и криптографическую защищенность. + +Если очень упрощать, ключи работают следующим образом: у нас есть закрытый (приватный) ключ, из которого можно сгенерировать открытый, или публичный. Наоборот, из открытого ключа получить закрытый мы никак не можем. Затем мы шифруем с помощью закрытого ключа какую-то строку, а при помощи открытого расшифруем ее и тем самым убедимся, что у собеседника точно есть закрытый ключ, а значит, он тот, за кого себя выдает. Таким образом, мы можем без проблем передавать открытый ключ — он всего лишь позволяет проверить подлинность автора, но не притвориться им. + +Это как в SSH — публичный ключ лежит на сервере, где его потеря — небольшая беда: все, что сможет сделать с ним злоумышленник, — это положить его на свой сервер, чтобы ты мог подключиться к нему с помощью закрытого ключа. + +Так вот, в WG на первом этапе подключения каждая сторона с помощью зашифрованного приватным ключом сообщения доказывает собеседнику, что она именно она: это проверяется публичным ключом. + +Второй этап — создание с помощью этих ключей и матана симметричных ключей для шифрования самого трафика. Благодаря тому что расшифровать зашифрованное публичным ключом нельзя без приватного, мы сможем создать ключ для симметричного шифрования и отправить его по защищенному каналу. Этот шаг необходим потому, что симметричное шифрование гораздо менее ресурсоемкая операция, а минус у нее только один: необходимо синхронизировать ключ между сторонами, при том что перехват ключа третьей стороной ведет к возможности расшифровки трафика. + +Но эта проблема решается с помощью асимметричной схемы. Это называется протокол Диффи-Хеллмана — способ защищенного получения общего секретного ключа. В WG используется ECDH — вариация Диффи — Хеллмана на эллиптических кривых. Первые два этапа в терминах WG называются рукопожатием или хендшейком. +Затем симметричные ключи используются для шифрования трафика. Раз в две минуты происходит новое рукопожатие и сессионные симметричные ключи меняются. + +Разумеется, в реальности все немного сложнее: например, отправляются не сами ключи, а сгенерированные на их основе эфемерные ключи, которые удаляются сразу после операции. Заинтересовавшихся подробностями отправляю к [краткому описанию на сайте WireGuard](https://www.wireguard.com/protocol/). + +Мы же перейдем к более практическим действиям. + +# Шаг 1. Создаем и настраиваем два сервера + +Один сервер будет внутри страны — через него трафик пойдет на локальные ресурсы, а второй — за границей. Дальше я их буду называть **local** и **external**. + +Идеально, если **local** будет в твоей домашней сети, потому что при этом трафик на внешние ресурсы не отличается от твоего домашнего трафика. Но для этого нужен какой-то хост дома, белый IP и возможность пробросить порт. У меня это виртуалка на домашнем сервере, но, наверное, подойдет и Raspberry Pi или аналогичный одноплатник. + +>Вариант с одноплатником я не тестировал и не уверен, что он сработает. Raspberry Pi придется маршрутизировать весь трафик с устройств и держать в памяти около 11 тысяч маршрутов; ресурсов на это может не хватить. + +Если дома хоста нет, можно взять любой сервер у хостера VDS. Увы, некоторые сайты блокируют подсети хостеров, опасаясь ботов, так что это менее предпочтительный вариант. + +А вот внешнюю машину можно арендовать и у хостера. К примеру, у RU VDS и VDSina есть зарубежные площадки. А можно выбрать иностранного хостера, если найдешь способ оплачивать его услуги. Например, я использую исландский 1984.hosting, созданный специально для параноиков. + +Считаем, что на обоих серверах у нас Debian 11. + +Ставим нужные нам пакеты: + +```bash +apt update && apt install -y wireguard iptables ipcalc qrencode curl jq traceroute dnsutils ufw +``` + +Включаем перенаправление трафика: в этом случае сервер, получив пакет, который не предназначается ни одному из его IP-адресов, не отбросит его, а попытается перенаправить в соответствии со своими маршрутами. + +```bash +echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf +echo "net.ipv4.conf.all.forwarding=1" >> /etc/sysctl.conf +sysctl -p /etc/sysctl.conf +``` + +Опционально (но очень удобно) сразу поменять hostname обоих серверов, чтобы не запутаться, где какая консоль: + +```bash +hostnamectl set-hostname trickster-internal +``` + +```bash +hostnamectl set-hostname trickster-external +``` + +# Шаг 2. Настраиваем WireGuard для связи двух серверов + +Для начала генерируем ключи. Запускаем два раза **wg genkey** и получаем два приватных ключа: + +```bash +root@trikster-internal:~# wg genkey +kOd3FVBggwpjD3AlZKXUxNTzJT0+f3MJdUdR8n6ZBn8= +root@trikster-internal:~# wg genkey +6CCRP42JiTObyf64Vo0BcqsX6vptsqOU+MKUslUun28= +``` + +Утилита wg genkey не делает ничего волшебного, это просто аналог чего-то в таком духе (генерируем 32 байта случайных значений и представляем их в виде Base64): + +```bash +echo $RANDOM | md5sum | head -c 32 | base64 +``` + +Только более случайное. Не стоит использовать $RANDOM в серьезных применениях. + +Создаем два конфига. Один на **internal**: + +#### /etc/wireguard/wg-internal.conf +```ini +[Interface] +Address = 10.20.30.1/32 +ListenPort = 17968 +PrivateKey = kOd3FVBggwpjD3AlZKXUxNTzJT0+f3MJdUdR8n6ZBn8= +PostUp = iptables -t nat -A POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +PostUp = ip rule add from `ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | grep -v "inet6" | head -n 1 | awk '/inet/ {print $2}' | awk -F/ '{print $1}'` table main +PostDown = iptables -t nat -D POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +PostDown = ip rule del from `ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | grep -v "inet6" | head -n 1 | awk '/inet/ {print $2}' | awk -F/ '{print $1}'` table main +``` + +Второй на **external**: + +#### /etc/wireguard/wg-external.conf +```ini +[Interface] +Address=10.20.30.2/32 +PrivateKey=6CCRP42JiTObyf64Vo0BcqsX6vptsqOU+MKUslUun28= +PostUp = iptables -t nat -A POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +PostDown = iptables -t nat -D POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +``` + +Секция **[Interface]** — это настройки конкретного сетевого интерфейса WireGuard, того, что будет виден в ```ip a```. Название интерфейса берется из названия текущего файла конфигурации. У одного интерфейса всегда одна ключевая пара: у пиров этого интерфейса одинаковый публичный ключ. + +Но никто не мешает, если хочется, сделать для каждого пира отдельный конфиг и отдельный интерфейс (правда, на сотнях клиентов это будет неудобно). + +Управляются интерфейсы обычно при помощи утилиты **wg-quick**: +`wg-quick down wg-external` и `wg-quick up wg-external` + +>Утилита `wg-quick` — это на самом деле 400 строк на баше, которые автоматизируют часто используемые вещи, например установку маршрутов. Наличие туннеля само по себе не дает ничего, кроме защищенной «трубы», за которой находится другой пир. Чтобы твой запрос в браузере попал в интерфейс, системе надо явно сказать: «Маршрутизируй, пожалуйста, пакеты с таким-то адресом назначения вот в этот сетевой интерфейс». + +>Именно этим занимается `wg-quick`. Ну еще и настройкой адресов DNS, указанных в конфиге, установкой MTU и еще парой вещей. Но ничего сложного в этом нет, достаточно сделать `cat /usr/bin/wg-quick`, чтобы посмотреть на эту логику, и, если надо, повторить то же самое руками. + +- **Interface-Address** — это IP текущего пира. Вся адресация в WG статическая. С одной стороны, это упрощает настройку и бутстрап, с другой стороны, усложняет работу, если у тебя очень много клиентов. +- **ListenPort** — это UDP-порт для подключения извне. Если не указать, будет прослушивать 51820. +- **Interface-PostUp** и **Interface-PostDown** — скрипты, которые выполняются после поднятия и после остановки интерфейса. Есть еще **PreUP** и **PreDown**. + +Кроме публичных и приватных ключей, есть еще опция **PresharedKey**, которая обеспечивает дополнительное шифрование симметричным шифром. Ключ можно сгенерировать, например, командой `wg genpsk` и добавить в опцию **PresharedKey** в секциях **Peer** на обоих пирах. Если не использовать эту опцию, нагрузка по шифрованию и расшифровке не вырастет: когда ключ не указан, используется нулевое значение ключа. + +А чтобы по-настоящему обеспечить постквантовую безопасность (невозможность расшифровки данных квантовыми компьютерами), разработчики рекомендуют дополнительный внешний квантово-устойчивый механизм хендшейка, например SIDH, который Microsoft пиарит именно в таком контексте. Созданный им общий ключ можно использовать в качестве **PresharedKey**. + +Заклинания в PostUp достаточно просты. Вот команда для подстановки имени сетевого интерфейса, куда по умолчанию выполняется маршрутизация: + +```bash +ip route | awk '/default/ {print $5; exit}' +``` + +Как правило, это интерфейс, обращенный к провайдеру или роутеру. + +Таким образом, страшная команда превращается в такую: + +```bash +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +``` + +Здесь происходит включение NAT в режиме маскарада: сервер будет отправлять пришедшие ему пакеты во внешнюю сеть, подменяя адрес отправителя своим, чтобы ответы на эти пакеты тоже приходили ему, а не исходному отправителю. + +Вторая команда уже немного сложнее, но она подставляет IP-адрес дефолтного маршрута. + +```bash +`ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | grep -v "inet6" | head -n 1 | awk '/inet/ {print $2}' | awk -F/ '{print $1}'` +``` + +Сначала мы получаем, как и выше, сетевой интерфейс маршрута по умолчанию: + +```bash +root@:~# ip route | awk '/default/ { print $5 }' +enp1s0 +``` + +Потом данные о состоянии этого интерфейса: + +```bash +root@:~# ip route | awk '/default/ { print $5 }' + inet 192.168.88.70/24 brd 192.168.88.255 scope global dynamic enp1s0 +``` + +И дальше вытаскиваем оттуда адрес, в данном случае 192.168.88.70. +Команда становится такой: + +``` +ip rule add from 95.93.219.123 table main +``` + +Это необходимо для сервера **internal**, потому что иначе при активации маршрута `0.0.0.0/0` он начинает пересылать ответы на пакеты, приходящие ему на внешние адреса через туннель WG. Сервер на том конце, конечно, пересылает их по назначению, но тут уже не готов отправитель пакета: он присылает что-то на внешний адрес сервера **internal**, а ответ ему приходит с **external**. + +Естественно, при включенном rp_filter пакет отбрасывается. В этом случае сервер перестает быть доступным, например по SSH снаружи. К нему придется коннектиться только по внутреннему IP WireGuard. Отключать rp_filter — это стрелять из пушки по воробьям, а вот дополнительное правило исправляет ситуацию. + +>Я намеренно иду по шагам, а не не привожу сразу готовые конфиги, потому что хочу показать механизм создания конфигов в ручном режиме. В свое время я генерировал конфиги утилитами типа easy-wg-quick или веб-сервисами, которые спрашивают тебя о названии клиента и красиво показывают QR-код. Это отнюдь не способствует пониманию того, как работает WG на самом деле, и может вызвать проблемы. + +Теперь в оба конфига надо добавить секцию **Peer**, чтобы связать серверы друг с другом. + +Генерируем из приватного ключа публичный (вот в `wg pubkey` как раз и происходит криптомагия): + +```bash +root@:~# echo "kOd3FVBggwpjD3AlZKXUxNTzJT0+f3MJdUdR8n6ZBn8=" | wg pubkey +MxnOnIlKfSyZyRutnYyoWHb3Izjalgf1t8F1oPJiyyw= +``` + +Это публичный ключ сервера **internal**, его мы помещаем в секцию **Peer** на **external**: + +#### /etc/wireguard/wg-external.conf +```ini +[Peer] +PublicKey=MxnOnIlKfSyZyRutnYyoWHb3Izjalgf1t8F1oPJiyyw= +AllowedIPs=10.20.30.0/24 +Endpoint=195.2.79.13:17968 +PersistentKeepalive=25 +``` + +Там же, в **Endpoint** указываем адрес сервера **internal** и порт, который мы задали в **ListenPort**. + +С **AllowedIPs** при использовании wg-quick возникает небольшая путаница. Это именно список IP-адресов, с которых мы разрешаем принимать пакеты из туннеля. Если прилетит что-то с другим src, оно будет отброшено. + +Утилита ```wg-quick``` разумно считает, что, если есть какие-то устройства, которые могут послать пакет, пакеты к этим устройствам надо маршрутизировать туда же, и создает маршруты на эти адреса, указывающие на туннель пира. + +В этих примерах **AllowedIPs** можно читать как «адреса, трафик на которые будет маршрутизироваться в туннель этого пира и с которых пир сможет отправить что-то в туннель». То есть пункт `AllowedIPs = 10.20.30.3/32` означает буквально «только запросы на 10.20.30.3 (адрес пира WG) отправлять в туннель» — дать доступ только до машины этого клиента. +Пункт `AllowedIPs = 192.168.88.0/24` означает, что при запросе адреса из этой подсети запрос уйдет в туннель клиента, и если у него включен форвардинг и ему доступна эта подсеть, то к ней можно будет получить доступ. + +`AllowedIPs = 0.0.0.0/0` означает, что в туннель надо маршрутизировать вообще весь трафик. Правда, это не относится к трафику, например, локальной сети: приоритет у маршрута, который создается из маски подсети и адреса шлюза, выше, чем у 0.0.0.0/0. Также маршрут 0.0.0.0/0 перебьют маршруты других пиров, если они будут в конфиге. + +В данном случае `AllowedIPs=10.20.30.0/24` означает, что трафик с **external** в подсеть 10.20.30.0–10.20.30.255 будет уходить в туннель к **internal**. В принципе, особой нужды в этом нет, **external** у нас исключительно выходная нода. Но вдруг мы как-нибудь захотим зайти оттуда по SSH на какую-нибудь другую машину. + +Повторяем генерацию публичного ключа с **external**: + +```bash +root@:~# echo "6CCRP42JiTObyf64Vo0BcqsX6vptsqOU+MKUslUun28=" | wg pubkey +FulnUTovyyfgn5kmgPkcj2OjKRFGeLkaTsHtAOy6HW8= +``` + +Мы получаем публичный ключ сервера **external** и помещаем его в секцию **Peer** сервера **internal**. + +#### /etc/wireguard/wg-internal.conf +```ini +[Peer] #external node +PublicKey = FulnUTovyyfgn5kmgPkcj2OjKRFGeLkaTsHtAOy6HW8= +AllowedIPs = 10.20.30.2/32, 0.0.0.0/0 +``` + +**AllowedIPs** тут ```10.20.30.2/32, 0.0.0.0/0```. Этим мы указываем, что за туннелем находится конкретный IP 10.20.30.2, и, помимо этого, пробрасываем весь трафик, не связанный другими маршрутами, в этот туннель: **external** у нас основная выходная нода VPN. + +Поэтому по умолчанию весь трафик будет направляться через нее, так как зарубежных маршрутов больше, чем российских, и логичнее фильтровать именно российские, а зарубежный трафик пустить по умолчанию через ноду в другой стране. + +Итак, два конфига. + +#### /etc/wireguard/wg-internal.conf +```ini +[Interface] +Address = 10.20.30.1/32 +ListenPort = 17968 +PrivateKey = kOd3FVBggwpjD3AlZKXUxNTzJT0+f3MJdUdR8n6ZBn8= +PostUp = iptables -t nat -A POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +PostUp = ip rule add from `ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | grep -v "inet6" | head -n 1 | awk '/inet/ {print $2}' | awk -F/ '{print $1}'` table main +PostDown = iptables -t nat -D POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +PostDown = ip rule del from `ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | grep -v "inet6" | head -n 1 | awk '/inet/ {print $2}' | awk -F/ '{print $1}'` table main + +#external node +[Peer] +PublicKey = FulnUTovyyfgn5kmgPkcj2OjKRFGeLkaTsHtAOy6HW8= +AllowedIPs = 10.20.30.2/32, 0.0.0.0/0 +``` + +#### /etc/wireguard/wg-external.conf +```ini +[Interface] +Address = 10.20.30.2/32 +PrivateKey = 6CCRP42JiTObyf64Vo0BcqsX6vptsqOU+MKUslUun28= +PostUp = iptables -t nat -A POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +PostDown = iptables -t nat -D POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE + +#internal node +[Peer] +PublicKey = MxnOnIlKfSyZyRutnYyoWHb3Izjalgf1t8F1oPJiyyw= +AllowedIPs = 10.20.30.0/24 +Endpoint = 195.2.79.13:17968 +PersistentKeepalive = 25 +``` + +Теперь можно поднять туннели на обоих серверах: + +```bash +root@trikster-external:~# wg-quick down wg-external ; wg-quick up wg-external +``` + +```bash +root@trikster-internal:~# wg-quick down wg-internal ; wg-quick up wg-internal +``` + +Проверяем, что туннели активны, командой `wg`: + +```bash +root@trikster-internal:~# wg +... +peer: FulnUTovyyfgn5kmgPkcj2OjKRFGeLkaTsHtAOy6HW8= + endpoint: 51.159.187.77:36276 + allowed ips: 10.20.30.2/32, 0.0.0.0/0 + latest handshake: 13 seconds ago + transfer: 180 B received, 92 B sent +``` + +```bash +root@trikster-external:~# wg +... +peer: MxnOnIlKfSyZyRutnYyoWHb3Izjalgf1t8F1oPJiyyw= + endpoint: 195.2.79.13:17968 + allowed ips: 10.20.30.0/24 + latest handshake: 10 seconds ago + transfer: 92 B received, 180 B sent + persistent keepalive: every 25 seconds +``` + +Если видим «latest handshake: ... seconds ago» и байты и в **received** и в **sent**, значит, все хорошо. Если байты только в **send**, без хендшейка и полученных данных, значит, где-то в конфиге ошибка или серверы недоступны друг для друга. + +Если что-то пошло не так и отвалился SSH, то достаточно перезагрузить сервер — активные туннели сбросятся. + +Если же все хорошо и доступ к серверам сохранился, ставим туннели в автозапуск: + +```bash +root@trikster-internal:~# systemctl enable wg-quick@wg-internal.service +``` +```bash +root@trikster-external:~# systemctl enable wg-quick@wg-external.service +``` + +Попробуем посмотреть маршрут (рекомендую замечательную утилиту `mytraceroute`, `mtr`) без туннеля: + +```bash +root@trikster-internal:~# wg-quick down wg-internal && sleep 10 && mtr -r google.com +HOST: trikster-internal.local Loss% Snt Last Avg Best Wrst StDev + 1.|-- host-89-22-232-243.hosted 0.0% 10 0.3 5.4 0.3 49.8 15.6 + 2.|-- 172.31.0.1 0.0% 10 0.3 19.8 0.3 122.2 42.6 + 3.|-- 109.239.138.90 0.0% 10 1.5 1.9 1.4 3.0 0.6 + 4.|-- 91.108.51.4 0.0% 10 11.4 11.4 11.3 11.7 0.1 + 5.|-- 178.18.227.12.ix.dataix.e 0.0% 10 11.0 17.9 11.0 77.0 20.8 +``` + +И с туннелем: + +```bash +root@trikster-internal:~# wg-quick up wg-internal && sleep 10 && mtr -r google.com +HOST: trikster-internal.local Loss% Snt Last Avg Best Wrst StDev + 1.|-- 10.20.30.2 0.0% 10 51.3 51.3 51.2 51.4 0.1 + 2.|-- 10.200.100.0 0.0% 10 51.4 51.4 51.2 51.6 0.1 + 3.|-- 10.197.37.65 0.0% 10 52.5 52.2 52.0 52.5 0.2 + 4.|-- 10.197.0.41 0.0% 10 52.2 52.2 52.1 52.5 0.1 + 5.|-- 10.197.0.44 0.0% 10 52.0 52.2 51.9 52.4 0.1 + ``` + +Все хорошо, трафик идет через внешний сервер — сначала на 10.20.30.2, который у нас назначен выходной нодой, а потом через его маршрутизаторы. + +У нас получилась примерно следующая схема. + +![](https://static.xakep.ru/images/cecbcf8faba9e4fe3e8a504ffb0982e6/27762/net-scheme-1.png) + +# Шаг 3. Добавляем конфиг клиента + +Создаем конфиг клиента, конечного устройства — пользователя VPN. За основу берем `wg-external.conf`, потому что это точно такой же клиент, который подключается к **internal**: разница только в том, что **external** будет получать пакеты, а наш клиент — отправлять. + +--------------------- + +Генерируем ему сразу пару публичный и приватный ключ: + +```bash +root@:~# prk=`wg genkey` && pbk=`echo $prk | wg pubkey` && printf "Private: $prk\nPublic: $pbk\n" +Private: iPK7hYSU8TLVRD+w13nd3aGSYNLfnTx6zwdRzKcGb1o= +Public: 26Vhud00ag/bdB9molvSxfBzZTlzdO+aZgrX3ZDncSg= +``` + +Конфиг почти такой же (этот файл уже должен быть на твоем устройстве, не на сервере): + +#### /etc/wireguard/wg-notebook-client.conf +```ini +[Interface] +Address = 10.20.30.3/32 +PrivateKey = iPK7hYSU8TLVRD+w13nd3aGSYNLfnTx6zwdRzKcGb1o= +DNS = 1.1.1.1, 8.8.8.8 + +#internal node +[Peer] +PublicKey = MxnOnIlKfSyZyRutnYyoWHb3Izjalgf1t8F1oPJiyyw= +AllowedIPs = 0.0.0.0/0 +Endpoint = 195.2.79.13:17968 +PersistentKeepalive = 25 +``` + +Тут у нас добавилась опция `PersistentKeepalive`. Дело в том, что роутеры в цепочке между двумя пирами ничего не знают о сессии WG, а знают только о потоке UDP-пакетов. Для маршрутизации UDP-пакетов за NAT они создают у себя табличку, в которую записывают, кто, куда и на какой порт отправил пакет. И если с destination-адреса/порта приходит UPD-пакет, то они определяют, куда его отправить, по этой таблице, делая вывод, что если сервер B недавно отправил пакет серверу А, то ответ от сервера А на этот же адрес и порт, скорее всего, надо переслать серверу B. + +В UDP, в отличие от TCP, нет никаких договоренностей о поддержании сессии, так как нет и самого понятия сессии. WG же построен таким образом, что при отсутствии трафика, попадающего в туннель, не будет и трафика между пирами, только хендшейки раз в две минуты. Опция `PersistentKeepalive` заставляет его посылать пустые пакеты каждые 25 с, что предотвращает потерю маршрута на промежуточных роутерах. Без этого мы бы могли раз за разом отправлять пакеты, до второго пира они не доходили бы, а он бы об этом не знал. + +Дальше мы добавляем еще одну секцию **Peer** в конфиг на **internal** — для клиента: + +```ini +#notebook-client node +[Peer] +PublicKey = 26Vhud00ag/bdB9molvSxfBzZTlzdO+aZgrX3ZDncSg= +AllowedIPs = 10.20.30.3/32 +``` + +Перезапускаем туннель на **internal** (`wg-quick down/up`), подключаемся… Есть хендшейк! Данные пошли. + +Теперь смотрим свой IP (например, на [reg.ru](https://www.reg.ru/web-tools/myip)): видим IP **external** ноды и другую страну. + +Таким же образом создавай конфиги для других клиентов. Если это мобильные устройства, то удобнее показать им QR-код. Он делается так: создай в текущей папке конфиг как обычно (конечно, с новыми ключами и другим IP), назыви, например, `wg-moblie-client.conf`. А дальше прямо командой в консоли создай QR-код, который сканируем с телефона: + +```bash +root@:~# qrencode -t ansiutf8 < wg-moblie-client.conf +``` + +Это удобнее, чем копирование файлов, но тебе никто не мешает скинуть `wg-moblie-client.conf` на телефон или вообще ввести значения семи полей вручную. + +Теперь наша схема выглядит следующим образом. + +![](https://static.xakep.ru/images/cecbcf8faba9e4fe3e8a504ffb0982e6/27761/net-scheme-2.png) + +В целом все готово: мы только что сделали очень странный двуххоповый VPN. Надо это дело отметить! Открываем Сбермаркет, чтобы заказать пивка... + +![](https://static.xakep.ru/images/cecbcf8faba9e4fe3e8a504ffb0982e6/27764/sber.png) + +Ах да, мы же с этой проблемой и собирались бороться. Неловко! +Давай доделаем. + +# Шаг 4. Добавляем регионально зависимую маршрутизацию + +Как ты помнишь, мы отправляем все данные с клиента на **internal**, он все данные шлет на **external**, а тот уже своему провайдеру. Также мы помним, что у нас на **internal** «слабый» маршрут 0.0.0.0/0, который перебивается любыми другими маршрутами, а сам **internal** находится в российском сегменте. Значит, все, что нам надо, — это как-то перехватить запросы на российские IP на уровне **internal** и перенаправить их не в туннель WG до **external**, а напрямую в сетевой порт самого сервера, в тот, через который он получает доступ в православный, российский интернет со скрепами и девицами в кокошниках. + +Давай проверим предположение. На клиенте получим IP того же Сбермаркета (`nslookup sbermarket.ru`) и посмотрим, как туда идет трафик (`traceroute 212.193.158.175`): + +```bash +HOST: vvzvladMBP14.local Loss% Snt Last Avg Best Wrst StDev + 1.|-- 10.20.30.1 0.0% 10 3.9 4.3 3.2 6.5 1.1 + 2.|-- 10.20.30.2 0.0% 10 55.7 56.0 54.6 59.2 1.2 + 3.|-- 10.200.100.0 0.0% 10 55.5 56.1 54.9 58.6 1.1 + 4.|-- 10.197.37.65 0.0% 10 56.0 56.9 55.4 60.1 1.7 + 5.|-- 10.197.0.41 0.0% 10 56.1 57.0 55.7 60.9 1.6 + ``` + +Ага, как и ожидалось, через **external**. + +Теперь создадим маршрут до этого адреса через дефолтный шлюз и устройство. Их можно узнать в `ip r`: + +```bash +root@trikster-internal:~# ip r +default via 195.2.79.1 dev ens3 onlink +10.20.30.2 dev wg-internal scope link +... +``` + +`195.2.79.1` и `ens3` — это и есть нужные нам данные. Используем уже знакомые подстановочные команды и создадим новый маршрут: + +```bash +target_ip="212.193.158.175/32" +gateway=`ip route | awk '/default/ {print $3; exit}'` +gateway_device=`ip route | awk '/default/ {print $5; exit}'` +ip route add $target_ip via $gateway dev $gateway_device +``` + +Проверяем: + +```bash +root@trikster-internal:~# ip r +default via 195.2.79.1 dev ens3 onlink +10.20.30.2 dev wg-internal scope link +10.20.30.3 dev wg-internal scope link +195.2.79.0/24 dev ens3 proto kernel scope link src 195.2.79.13 +==> 212.193.158.175 via 195.2.79.1 dev ens3 <== +``` + +Да, на последнем месте у нас нужный маршрут. + +Теперь повторяем команду `traceroute -r 212.193.158.175` на клиенте и видим, что трейс другой: + +```bash +HOST: vvzvladMBP14.local Loss% Snt Last Avg Best Wrst StDev + 1.|-- 10.20.30.1 0.0% 10 4.3 7.9 3.7 29.1 7.9 + 2.|-- host-89-22-232-243.hosted 0.0% 10 4.6 4.9 3.8 9.2 1.6 + 3.|-- 172.31.0.1 0.0% 10 25.9 8.4 3.3 25.9 6.9 + 4.|-- sw1-m9p2-msk.ip.ngenix.ne 0.0% 10 6.2 5.7 4.0 7.3 1.0 + 5.|-- cdn.ngenix.net 0.0% 10 3.8 5.0 3.8 8.4 1.3 +``` + +Ура, Сбермаркет открывается! Правда, такое сработает не со всеми сервисами: например, JavaScript на сайте может дернуть другой сервер, а не тот, в адрес которого резолвится имя домена и до которого нет маршрута. + +Можно сходить на [asnlookup.com](https://asnlookup.com/), вбить туда адрес и получить принадлежность адреса к AS и заодно список подсетей этой autonomous system (у Сбермаркета это AS34879, OOO Sovremennye setevye tekhnologii). С большой вероятностью для более-менее крупных компаний это и будет их сетевая инфраструктура (ну или, по крайней мере, инфраструктура, относящаяся к конкретному сайту), прописав для которой маршруты ты обеспечишь доступ на нужный сайт или сервис. Для мелких сайтов ты, скорее всего, получишь AS хостера или дата-центра, но, во-первых, это тоже сработает, а во-вторых, мелкие сайты обычно и не закрывают иностранные диапазоны, потому что не испытывают проблем с DDoS из-за границы. + +Но можно сделать проще и автоматически: засунуть в маршруты вообще все адреса российского сегмента (спасибо [статье](https://habr.com/en/post/659655/) на Хабре) и не париться о ручном добавлении. + +RIPE отдает их все в виде JSON вот по этому адресу: + +[https://stat.ripe.net/data/country-resource-list/data.json?resource=ru](https://stat.ripe.net/data/country-resource-list/data.json?resource=ru) + +Утилита jq преобразует из JSON в список подсетей: + +```bash +curl https://stat.ripe.net/data/country-resource-list/data.json?resource=ru | jq -r ".data.resources.ipv4[]" +``` + +Правда, почему-то некоторые адреса там в формате `195.85.234.0-195.85.236.255`, а не в виде подсети. Их там с десяток, можно было бы так и оставить, но, если уж начали делать, давай сделаем до конца и красиво. Нам понадобится утилита ipcalc. + +```bash +root@:~# ipcalc 195.85.234.0-195.85.236.255 |grep -v "deaggregate" +195.85.234.0/23 +195.85.236.0/24 +``` + +Выделить эти адреса из базового списка легко: `grep '-'` или `grep -v '/'`. + +Скрипт для загрузки роутов выглядит как-то так (я не удержался и добавил туда еще и прогресс-бар): + +```bash +#!/bin/bash + +function ProgressBar { + let _progress=(${1}*100/${2}*100)/100 + let _done=(${_progress}*4)/10 + let _left=40-$_done + _fill=$(printf "%${_done}s") + _empty=$(printf "%${_left}s") + printf "\rAdd routes to route table (${1}/${2}): [${_fill// /#}${_empty// /-}] ${_progress}%%" +} + +# Variables +file_raw="russian_subnets_list_raw.txt" +file_user="subnets_user_list.txt" +file_for_calc="russian_subnets_list_raw_for_calc.txt" +file_processed="russian_subnets_list_processed.txt" +gateway_for_internal_ip=`ip route | awk '/default/ {print $3; exit}'` +interface=`ip link show | awk -F ': ' '/state UP/ {print $2}'` + +# Get addresses RU segment +echo "Download RU subnets..." +curl --progress-bar "https://stat.ripe.net/data/country-resource-list/data.json?resource=ru" | jq -r ".data.resources.ipv4[]" > $file_raw + +echo "Deaggregate subnets..." +cat $file_raw |grep "-" > $file_for_calc +cat $file_raw |grep -v "-" > $file_processed +for line in $(cat $file_for_calc); do ipcalc $line |grep -v "deaggregate" >> $file_processed; done + +if [ -e $file_user ]; then echo "Add user subnets..."; cat $file_user |grep -v "#" >> $file_processed; fi + +# Flush route table +echo "Flush route table (down interface $interface)..." +ifdown $interface > /dev/null 2>&1 +echo "Up interface $interface..." +ifup $interface > /dev/null 2>&1 + +# Add route +routes_count_in_file=`wc -l $file_processed` +routes_count_current=0 +for line in $(cat $file_processed); do ip route add $line via $gateway_for_internal_ip dev $interface; let "routes_count_current+=1" ; ProgressBar ${routes_count_current} ${routes_count_in_file}; done +echo "" + +echo "Remove temp files..." +rm $file_raw $file_processed $file_json $file_for_calc + +routes_count=`ip r | wc -l` +echo "Routes in routing table: $routes_count" +``` + +Добавим строчки в крон (`EDITOR=nano crontab -e`), чтобы он запускался после перезагрузки и каждую неделю — обновить список адресов, если они поменялись: + +```text +@reboot sleep 30 && bash /root/update_ru_routes.sh > /root/update_routes_log.txt 2>&1 +0 3 * * mon bash /root/update_ru_routes.sh > /root/update_routes_log.txt 2>&1 +``` + +Если тебе нужно принудительно маршрутизировать какую-то сеть через **internal**, то можно рядом со скриптом создать файлик `subnets_user_list.txt`, в который поместить список подсетей, тогда они каждый раз будут добавляться к общему списку при обновлении (в скрипте выше эта возможность уже реализована). + +Мой, например, выглядит так: + +```text +#avito +146.158.48.0/21 +# +#telegram +91.108.4.0/22 +91.108.8.0/22 +91.108.58.0/23 +95.161.64.0/20 +149.154.160.0/21 +``` +Первая подсеть — для мобильного приложения «Авито»: ее почему-то не было в списке RIPE. Дальше подсети для «Телеграма», чтобы хоть немного ускорить загрузку фото и видео. + +Проверяем. + +![](https://static.xakep.ru/images/cecbcf8faba9e4fe3e8a504ffb0982e6/27763/ip.png) + +Как видишь, разные сервисы показывают нам разные адреса, потому что один сервис хостится где-то внутри России, а другой — снаружи. Работает! + +Кстати, если у тебя **internal** находится в домашней сети, бонусом ты получишь доступ к домашней сети из любого места, где находится устройство со включенным VPN: маршрут 0.0.0.0/0 на устройстве отправляет в VPN весь трафик, а **internal**, замечая трафик в ту подсеть, в которой он находится, отправляет ее в локальный порт, а не в туннель до **external**. Очень удобно: у меня в домашней сети работает сервер с докер-контейнерами web2rss, ownCloud, navidrome, freshrss, rss-bridge, homeassistant, и мне для получения доступа к ним совершенно не надо заморачиваться с пробросом портов, авторизацией каждого сервера и HTTPS, не говоря уж о том, что некоторые сервисы, типа IoT-устройств, не имеют ни авторизации, ни шифрования в принципе. + +![Окончательная схема](https://static.xakep.ru/images/cecbcf8faba9e4fe3e8a504ffb0982e6/27760/net-scheme-3.png) + +# Шаг 5. Настраиваем файрвол + +Полезной привычкой и хорошим тоном будет закрыть все ненужное на серверах. + +Для начала на обоих серверах редактируем файл `/etc/default/ufw`, изменяя значение `DEFAULT_FORWARD_POLICY` на `ACCEPT`. + +Теперь выполняем следующие команды на **internal**: + +```bash +ufw reset +ufw default deny incoming +ufw default allow outgoing +ufw allow ssh +ufw allow 17968/udp +ufw allow in on wg-internal +systemctl enable ufw --now +ufw enable +``` + +Что происходит, думаю, понятно — запретить все, разрешить исходящие, входящие SSH и подключения к WG, а что приходит из туннеля — разрешить. + +На **external** то же самое, но открывать порт для WG не надо — он подключается сам. + +```bash +ufw reset +ufw default deny incoming +ufw default allow outgoing +ufw allow ssh +ufw allow in on wg-external +systemctl enable ufw --now +ufw enable +``` + +>Еще хорошо бы поставить и настроить fail2ban или хотя бы перенести SSH на другой порт. В любом случае отключение входа по паролю через SSH вообще и переход только на авторизацию по ключу — это базовая операция, не зависимо ни от чего. + +# Шаг 6, бонусный и необязательный. Кеширующий защищенный DNS over HTTPS + +Теперь нам нужна еще одна вещь — DNS. + +Можно, конечно, жить с DNS `1.1.1.1`, но надо учитывать, что трафик на него пойдет через **external**, а это автоматически означает задержку порядка 100 мс при каждом запросе. Можно, конечно, добавить `1.1.1.1/32` в `subnets_user_list.txt`, и тогда трафик пойдет через локальную ноду и локальный сервер `1.1.1.1`. Это уменьшит задержку до 10–20 мс, но твои DNS-запросы будет доступны провайдеру, что в случае локальной ноды для кого-то может быть неприемлемо. + +Несколькими командами можно легко сделать кеширующий DNS, который еще и будет работать с DNS over HTTPS, а значит, провайдер узнает только, что использовался DoH, но не сами запросы. Это, конечно, не обязательно: у меня **internal** находится в домашней сети, и я просто использую DNS «Микротика», который находится в той же сети и поддерживает DoH. Но если у тебя **internal**-сервер — это VPS, то можно сделать там и DNS-сервер. В первой версии статьи использовалась ручная настройка cloudflared и dnsmasq, но потом я решил, что использовать Adguard Home лучше, удобнее и проще. Кроме того, блокировка рекламы не будет лишней. + +Для начала, тебе надо поставить на **internal** докер (хотя я надеюсь, что он у тебя уже стоит, нельзя же быть таким отсталым, с домашним сервером и без докера): + +```bash +curl -fsSL https://get.docker.com -o get-docker.sh +sudo sh get-docker.sh +``` + +После установки скачивай запускай контейнер с Adguard Home +```bash +docker run --name adguardhome --restart unless-stopped -v /home/root/adguard/workdir:/opt/adguardhome/work -v /home/root/adguard/confdir:/opt/adguardhome/conf -p 53:53/tcp -p 53:53/udp -p 3000:3000/tcp -d adguard/adguardhome +``` + +Заходи в веб-панель, которая доступна на порту 3000 сервера **internal**, указывай Admin Web Interface Port - 3000, придумывай логин и пароль, нажимай кнопочки, которые покажутся тебе подходящими, пока не закончишь инсталляцию. Готово. +Adguard Home уже использует DoH, но можешь добавить свой любимый сервер в веб-панели, в разделе Settings - DNS settings. +Если тебе нужен просто защищенный DNS-сервер, то можешь нажать кнопочку "Disable protection" и закончить на этом. Если хочешь побольше блокировок рекламы, до добавь в Filters-DNS blocklists свои любимые списки блокировок. Я, например, выбрал эти: +https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt +https://someonewhocares.org/hosts/zero/hosts + +Проверяем: + +```bash +dig @127.0.0.1 google.com +``` + +Запрос должен вернуть что-нибудь с "ANSWER SECTION:" и IP-адресом в ней, а не упасть с "no servers could be reached". +Проверим заблокированный домен: + +```bash +dig @127.0.0.1 compulsionspotsbeacon.com +``` + +Оп, возвращает другой адрес: +``` +;; ANSWER SECTION: +compulsionspotsbeacon.com. 10 IN A 0.0.0.0 +``` + +Красота. +Проверяем доступ к DNS с другого WG-клиента: + +```bash +dig @10.20.30.1 google.com +``` + +Если ответ на запрос есть, значит, DNS работает. + +Теперь можно добавить в конфиги клиентов в секцию **Interface**: + +```ini +DNS = 10.20.30.1, 1.1.1.1 +``` + + +# Шаг 7, еще более бонусный и необязательный. Доступ до чужих подсетей и защита своей подсети + +Как я уже говорил, в такой инсталляции мы получаем бонусом доступ в свою локальную сеть, где бы мы не находились, из любого места. Иметь защищенный доступ до своих серверов очень удобно. Но что, если тебе нужен доступ не только в эту подсеть? + +Например, у твоей девушки есть сервер **inferno**, который не торчит в интернет, и имеет только IP в локалке, скажем, `10.30.3.203`. Если ты хочешь получить к нему доступ, то просто ставишь на этот сервер wireguard с обычным конфигом клиента, например: + +```ini +#inferno +[Interface] +PrivateKey = WChJEoWGdvzlZvdIglBMNI6CgQwcg3qqlrnxchDXCV0= +ListenPort = 17968 +Address = 10.20.30.201/32 + +[Peer] +PublicKey = sEIPxcidbTNeukkEbSmOrIY5KcwGmIdu92+N/LIA+hI= +AllowedIPs = 10.20.30.0/24 +Endpoint = internal.xyz:17968 +PersistentKeepalive = 25 +``` + +А в конфиге на **internal** в **AllowedIPs** пиши не только IP клиента внутри WG, но и `10.30.3.203/32` + +```ini +#inferno client node +[Peer] +PublicKey = QXVrAjTCl2UyXCERl8wTsUwlVEB5bXhvIQUik3V8/WE= +AllowedIPs = 10.20.30.201/32, 10.30.3.203/32 +``` + +>Главное, не пиши в **AllowedIPs** в конфиге клиента `0.0.0.0/0`, как на мобильных устройствах, если не хочешь, чтобы весь трафик сервера пошел через твой VPN. + +Ситуация несколько меняется, когда ты хочешь сделать доступ не только до конкретного клиента, но до всей подсети этого клиента: скажем, у этой девушки, кроме сервера, есть свой умный дом, и доступ нужен не только до сервера, на котором стоит клиент, но и до кучи других устройств, на часть из которых клиента поставить вовсе невозможно, потому что они ESP. +Казалось бы, достаточно изменить конфиг на **internal** таким образом, чтобы в **AllowedIPs** попал не конкретный сервер (`10.30.3.203/32`), а вся подсеть (`10.30.3.0/24`), и включить на **inferno** `ip_forward`, но нет. + +Рассмотрим путь пакета от тебя до **inferno** (`10.30.3.203`) и обратно: наш маршрут `0.0.0.0/0` на клиенте заставит весь трафик, для которого нет локальных маршрутов, попасть в туннель WG, сервер **internal** получит пакет, увидит у себя активный маршрут `10.30.3.0/24`, отправит этот пакет снова в туннель WG, пакет примет **inferno** (`10.30.3.203`), ответит на него, взяв адрес получателя из поля "from" (где оно `10.20.30.3`, например), это пакет попадет в туннель WG, и будет доставлен обратно тебе. +А если ты захочешь отправить пакет уже до соседнего сервера `10.30.3.204`, то пакет точно так же попадет на **inferno**, где пакет будет смаршрутизован в локальную сеть (ведь получатель не **inferno**), пройдет через роутер и доберется до получателя. Но вот обратный пакет получатель отправит хоть и тебе (`10.20.30.3`), но в свой главный маршрут (например, в свой роутер), а надо было в сторону `10.30.3.203`. Т.е. нам нужен маршрут, который говорит "для пакетов, следующих в подсеть `10.30.3.0/24`, шлюз — `10.30.3.203`". + +Это можно сделать: +1)Вручную прописав маршрут на самом устройстве `10.30.3.204` (и на каждом таком устройстве в подсети `10.30.3.0/24`) +2)Раздать такой маршрут всем устройствам вместе с настройками сети через DHCP Option 121 (не знаю, зачем тебе эта информация) +3)Создать маршрут на маршрутизаторе, который анонсируется по DHCP как основной шлюз. + +Рабочий вариант, пожалуй, только третий. Второй — это костыль для тех ситуаций, когда у тебя есть контроль над DHCP-сервером, но нет над маршрутизатором. + +Но можно сделать гораздо более просто: воспользоваться маскадингом — точно так же, как делает ваш роутер, когда делает для провайдера вид, что все-все пакеты, которые генерируются устройствами за ним, отправляются именно им, и никем больше (ну, конечно, если провайдер не выдает тебе подсеть или ты уже не живете в 23 веке с IPv6). Тем более, ты уже это делал — на **internal** и на **external**. +Просто добавь в конфиг на **inferno** в секцию **Interface** такие строки: + +```ini +PostUp = iptables -t nat -A POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +PostDown = iptables -t nat -D POSTROUTING -o `ip route | awk '/default/ {print $5; exit}'` -j MASQUERADE +``` + +Работать это будет, правда, только на Linux (и, наверное, макоси), на мобильных клиентах (c некотором вероятностью заработает на рутованном андроиде) и в Windows — нет, т.к. это просто команда операционной системы. На iOS нет шансов вообще, а на винде тебе придется разобраться самому, как включить маскарадинг (ну или забить и поставить Tailscale). + +Однако, тут возникает некоторая проблема безопасности. Догадываешься какая? +Правильно: легкой правкой конфига на **inferno** можно добавить в **AllowedIPs** всю твою подсеть `192.168.88.0/32`, и получить доступ до всех твоих устройств в ней (а там вполне может быть что-то без авторизации, это же локальная сеть). Более того, если ты решишь поделиться этим VPN с другом, то при наличии маршрута `0.0.0.0/0`, он по умолчанию будет иметь доступ к твоей локальной подсети. + +Можешь извернуться и перечислить в конфиге для друга **AllowedIPs** без локальных подсетей, например так: + +```ini +AllowedIPs = 0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3 +``` + +(тут исключены подсети `10.0.0.0/8`, `192.168.0.0/16`, но потому что у `wg-quick` нет директивы **DisallowedIPs**, приходится разбивать `0.0.0.0/0` на куски, которые покрывают все, кроме ненужных подсетей. Для этого даже есть [калькулятор](https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/)) +Но это все равно не обеспечит тебе безопасности, потому что конфиг на чужом устройстве тобой не контролируется. И если завтра друг станет не-другом, ему ничего не помешает вписать в **AllowedIPs** абсолютно что угодно и потренировать на твоей сети свои навыки пентестера. + +Поэтому, было бы неплохо разделять доверенные устройства и недоверенные. Можно, конечно, писать вручную правила для каждого устройства, но есть решение проще: разделить IP-адреса WG на две половины и сказать, что первая половина (`10.20.30.1/25`, т.е. 10.20.30.1-10.20.30.126) это доверенные устройства с доступом к локалке, а вторая (`10.20.30.128/25`, т.е. 10.20.30.129-10.20.30.255) — это недоверенные. И просто при создании конфига и выдаче устройству IP-адреса выбирать, какой это IP — до 126 или после. С таким подходом правил фаервола понадобится... ну, не одно, но всего три: + +```bash +iptables -A FORWARD -s 10.20.30.128/25 -d 192.168.88.0/24 -j DROP +iptables -A FORWARD -s 10.20.30.128/25 -d 10.20.30.0/24 -j DROP +iptables -A INPUT -s 10.20.30.128/25 -j DROP +``` + +Первое правило запрещает доступ с недоверенных устройств до локальной подсети, второе — до подсети внутренних адресов WG (иначе можно с любого клиента достать до других устройств с WG-клиентами), а третье — до **internal**, потому что пакеты напрямую до нее попадают в цепочку INPUT, а не FORWARD, т.к. предназначаются самой машине. +Эти правила, как и выше, надо не просто вводить в консоль, а описать в конфиге **internal** через директивы **PostUp** и **PostDown** (в **PostDown** с "-D" вместо "-A" для удаления правила): + +```bash +PostUp = iptables -A FORWARD -s 10.20.30.128/25 -d 10.20.30.0/24 -j DROP +PostUp = iptables -A FORWARD -s 10.20.30.128/25 -d 192.168.88.0/24 -j DROP +PostUp = iptables -A INPUT -s 10.20.30.128/25 -j DROP +``` + +```bash +PostDown = iptables -D FORWARD -s 10.20.30.128/25 -d 10.20.30.0/24 -j DROP +PostDown = iptables -D FORWARD -s 10.20.30.128/25 -d 192.168.88.0/24 -j DROP +PostDown = iptables -D INPUT -s 10.20.30.128/25 -j DROP +``` + +Если у тебя есть еще какие-то подсети, которые доступны через WG (как `10.30.3.0/24` твоей девушки в примере выше), то их тоже стоит вписать в еще одно такое же правило. Ну или просто запретить для недоверенных устройств все `10.0.0.0/8` и `192.168.0.0/16`. +Обрати внимание, что устройство одновременно может предоставлять доступ в свою сеть и быть недоверенным — комбинация IP из недоверенного диапазона с указанием подсети в **AllowedIPs** и маскарадингом в конфиге. Такое устройство позволит пакетам доходить до его подсети, но не получит доступ к подсетям других устройств. + +>Если твоей девушке не нужен доступ к твоей локалке, то паранойя требует, чтобы она тоже получила IP из недоверенного диапазона: любые не контролируемые лично тобой устройства могут попасть в чужие руки. + +Однако, помнишь DNS-сервер, который мы развернули? Если запретить доступ к своей подсети вообще, то недоверенные клиенты (например, твой друг) не сможет получить доступ до него и будет вынужден пользоваться каким-нибудь `8.8.8.8`. Благо, решить эту проблему можно еще парой правил фаервола: + +```bash +iptables -A FORWARD -p udp --dport 53 -s 10.20.30.128/25 -d 10.20.30.1/32 -j ACCEPT +iptables -A FORWARD -p tcp --dport 53 -s 10.20.30.128/25 -d 10.20.30.1/32 -j ACCEPT +``` + +Что они делают, думаю, тебе понятно: разрешает из недоверенной сети доступ к DNS серверу, но только к портам DNS. Эти два правила обязательно должны находиться выше того, что запрещает локальную сеть: + +```bash +iptables -A FORWARD -p udp --dport 53 -s 10.20.30.128/25 -d 10.20.30.1/32 -j ACCEPT +iptables -A FORWARD -p tcp --dport 53 -s 10.20.30.128/25 -d 10.20.30.1/32 -j ACCEPT +iptables -A FORWARD -s 10.20.30.128/25 -d 10.20.30.0/24 -j DROP +``` + +# Выводы + +Хоть пары ключей в статье — действующие, но для боевого применения ключи надо обязательно перегенерить. + +Благо это просто, даже если тебе лень разбираться с ручной генерацией ключей, — я создал небольшой bash-скрипт для этого. Достаточно сделать так на **internal**-сервере: + +```bash +apt install -y git +git clone https://github.com/vvzvlad/trickster-vpn.git +cd trickster-vpn/config_generator +bash generate_cfgs.sh +``` + +После чего в папке `trickster-vpn/config_generator/configs` появятся конфиги с только что сгенерированными ключами, и останется только скопировать `wg-internal.conf` в `/etc/wireguard/wg-internal.conf`, `wg-external.conf` унести на другой сервер, а `wg-mobile-client.conf` использовать для ноутбука или телефона. Ну и не забыть о пробросе порта, если **internal** у тебя за NAT. + +Если кто-то захочет это все красиво обернуть в два докера и прикрутить один из веб-интерфейсов для WireGuard (потому что конфиги клиентов все же удобнее создавать в нем) — добро пожаловать на гитхаб: [Trickster VPN](https://github.com/vvzvlad/trickster-vpn). diff --git a/article/habr/wireguard-1200.jpeg b/article/habr/wireguard-1200.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e0a306225279d58919c8bb40122879433ccc8b9e GIT binary patch literal 149721 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ξbCa{UUQPAjhcGNWng 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 z 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 z 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 literal 0 HcmV?d00001