From 5bbd7c8b96b21905703f8a6726452d7aef4d3715 Mon Sep 17 00:00:00 2001 From: Neur0toxine Date: Fri, 17 Nov 2023 22:21:41 +0300 Subject: [PATCH] reverse proxy & wg split tunneling docs --- README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/README.md b/README.md index 37b1787..888b3cc 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,52 @@ services: См. [здесь](https://neur0tx.site/proxy_ru.html). Можно использовать как фолбэк если у вас есть доступ к этому сервису. +## Ускоряем реверс-прокси сайтов через ssh при работе через Wireguard VPN + +Ускорение достигается за счет правки таблицы маршрутизации в момент подключения и отключения VPN. Мы пускаем все подключения к реверс-прокси не через VPN - это позволяет +сильно ускорить работу реверс-прокси. Инструкция подходит к любому прокси чей IP не меняется (актуально для моего прокси и `proxy.retailcrm.tech`). Выполняем следующее: +1. Отключаем свой VPN. +2. Выполняем команду: +```sh +ip route | grep default | awk '{print $3;}' +``` +3. Копируем полученный IP. +4. Теперь подготавливаем записи `PreUp` и `PostDown`, которые будем указывать в нашем VPN-профиле. Используем следующий шаблон: +```ini +PreUp = ip route add IP_прокси/32 via IP_из_шага_2 +PostDown = ip route del IP_прокси/32 via IP_из_шага_2 +``` +5. Если нужно добавить сразу несколько IP в список - дублируем команды через `;` вот так: +```ini +PreUp = ip route add IP_первого_прокси/32 via IP_из_шага_2; ip route add IP_второго_прокси/32 via IP_из_шага_2 +PostDown = ip route del IP_первого_прокси/32 via IP_из_шага_2; ip route del IP_второго_прокси/32 via IP_из_шага_2 +``` +Пример с default gateway = `192.168.1.1` и настройкой для `proxy.retailcrm.tech` (IP `proxy.retailcrm.tech` может быть неактуален - проверяйте!): +```ini +PreUp = ip route add 136.243.39.221/32 via 192.168.1.1 +PostDown = ip route del 136.243.39.221/32 via 192.168.1.1 +``` +6. Открываем профиль VPN (лежит в `/etc/wireguard` с расширением `conf`, для редактирования нужен рут) и добавляем `PreUp` и `PostDown` чтобы получилось примерно так: +```ini +[Interface] +PrivateKey = MTcwMDI0ODQxMXJnbGZya2puZnduamxyd2VscnJscmZrcmwsZgo= +Address = 10.2.3.4/32 +DNS = 10.2.3.5 +PreUp = ip route add 136.243.39.221/32 via 192.168.1.1 +PostDown = ip route del 136.243.39.221/32 via 192.168.1.1 + +[Peer] +PublicKey = MTcwMDI0ODQyOHJnbGZya2puZnduamxyd2VscnJscmZrcmwsZgo= +AllowedIPs = 0.0.0.0/0 +Endpoint = 1.2.3.4:51820 +``` + +Настройка для IPv6 тоже возможна: +- Все команды `ip` для IPv6 требуют аргумента `-6`. Пример: `ip -6 route | grep default | awk '{print $3;}'` +- Размер IP в IPv6 - 128 бит. Поэтому в CIDR указываем размер блока не `/32`, а `/128`. + +По идее этого должно быть достаточно, но я настройку для IPv6 не пробовал по причине отсутствия необходимости. Аналогичную конфигурацию без привязки к Linux и iproute2 можно реализовать с помощью [AllowedIPs Calculator](https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/), но в моем случае попытка использования этого инструмента оканчивалась нерабочим Интернетом после правки профиля VPN. + ## Обход блокировок сайтов ### Профиль Wireguard VPN под Linux