Маршрутизируем только нужный трафик в VPN

Всем привет! В интернете просто МОРЕ статей на тему того, как обойти те или иные блокировки, МОРЕ статей о том, как установить тот или иной VPN клиент, VPN сервер, но в этой статье я хочу рассказать вам как начать делать это более грамотно и красиво, так сказать.
мы будем маршрутизировать только нужные нам сервисы в VPN, и я постараюсь максимально подробно рассказать различные способы реалзации нашей конечной цели, которая заключается в том, что бы поменьше включать-выключать VPN, и что бы пользоваться одновременно заблокированными сервисами и теми, которые не открываются через ВПН или плохо работают, или например играть в игры с оптимальным пингом (ведь если игры пойдут через VPN, то с большим шансом пинг подрастёт)

В данном гайде мы будем в основном маршрутизировать по IP адресу, так как маршрутизация по конкретному приложению доступна не слишком часто, а там где доступна в пояснениях не нуждается, с маршрутизацией по доменам почти тоже самое, хотя о вычислении нужных доменов мы немного пройдёмся.

И так, поехали.Для начала, если у вас WireGuard, то для его работы вы импортировали в него конфиг, если открыть этот конфиг текстовым редактором, то вы увидете, что в нём есть скорее всего строчка AllowedIPs = 0.0.0.0/0
данная короткая строчка означает, что ВСЕ IP адреса пойдут через наш тоннель, её можно заменить например на AllowedIPs = 8.8.8.8, 1.1.1.1, что будем означать, что через тоннель пойдут только лишь все запросы к ДНС серверам гугл и клауд флеер. Пример я думаю понятен, мы можем через запятую перечислить все IP адреса которые нужно что бы шли через тоннель, а остальные будут идти как обычно, без тоннеля. Немного пояснений про загадочное /0 из изначального конфига, в данном случае именно /0 отвечает за то, что все IP адреса будут идти через тоннель, потому что /0 это короткое написание маски подсети, или если говорить совсем по простому, эта цифра означает колличество грубо говоря соседних IP адресов, /32 - означает лишь конкретный IP адерс, /0 - все IP адреса, а например /16 которая стоит после 192.168.0.0, будет означать что все IP адреса 192.168.XX.XX будут ходить через тоннель. Чтож, с базой для WireGuard мы разобрались, чуть чуть подитожим: Удобный для меня формат, это дублирование конфига, с подписью: через этот конфиг пойдёт все, через этот только вот "SERVICE_NAME" и так далее, и просто потом выбираем что нужно конерктно сейчас (по умолчанию например держать включенным конфиг только для ютуба). Дальше будет чуть чуть про другие реализации а потом я покажу как эффективно доставать IP адреса нужных сервисов.

Если у вас VLESS, то у него есть несколько приложений, по этому для каждого писать не буду, но как минимум NekoRay тоже вполне поддерживает список IP адресов котоырые будут ходить через тоннель.

Так же списки адресов можно вносить например в Address List в роутере, например в микротике, о том, как на уровне роутера микротик заставить отдельные IP адреса ходить через тоннель можно почитать здесь:

Что-ж, теперь для ленивых, основные три списка IP адресов для недоступных сервисов:
Instagram + Facebook:
147.75.208.0/20, 185.89.216.0/22, 31.13.24.0/21, 31.13.64.0/19, 31.13.96.0/19, 45.64.40.0/22, 66.220.144.0/20, 69.63.176.0/20, 69.171.224.0/19, 74.119.76.0/22, 102.132.96.0/20, 103.4.96.0/22, 129.134.0.0/16, 157.240.0.0/16, 173.252.64.0/18, 179.60.192.0/22, 185.60.216.0/22, 87.245.208.97
YouTube (Список может оказаться не законченым, так как для каждого провайдера и региона могут быть очень разные адреса, в данном случае этот список хорошо работает для одной европейской страны, начинающейся на букву Н, если вам этот список не помог, читайте дальше о том, как подобный создать):
74.125.0.0/16, 172.217.0.0/16, 173.194.0.0/16, 142.250.0.0/15, 64.233.160.0/19, 108.177.0.0/17, 216.58.192.0/19, 209.85.128.0/17
Discord (три нюанса: 1. Тут нет Русской подсети так как сидение через тоннель на голосовых серварах в России бессмысленно, пинг больше, шанс компрометации вашгео сервера тоже больше из за петли обратно в РФ, 2. Тут есть огромная подсеть Google usercontent (судя по всему просто хостинг от гугла) по этому случайно может пойти что то кроме дискорда через тоннель, вычислить более точечно IP которые в этой сети пренадлежат дискорду вероятнее всего не целесообразно, хоть и возможно и я даже видел такие решения, 3. Тут есть такая же огромная подсеть CloudFlare с точно такими же последствиями как подсеть от гугл, просто имейте это в виду):
162.158.0.0/15, 66.22.196.0/22, 66.22.243.0/24, 66.22.235.0/24, 66.22.237.0/24, 66.22.238.0/24, 66.22.244.0/24, 66.22.241.0/24, 66.22.204.0/22, 66.22.212.0/22, 66.22.222.0/23, 66.22.224.0/23, 66.22.226.0/23, 66.22.230.0/24, 66.22.231.0/24, 66.22.234.0/24, 66.22.245.0/24, 66.22.236.0/24, 66.22.242.0/24, 66.22.232.0/24, 66.22.247.0/24, 66.22.208.0/22, 66.22.228.0/23, 66.22.220.0/23, 66.22.200.0/22, 66.22.218.0/23, 66.22.233.0/24, 66.22.239.0/24, 66.22.240.0/24, 66.22.246.0/24, 66.22.248.0/24, 35.208.0.0/12
Соотвественно берем эти адреса, вводим их куда надо и маршрутизация начинает работать :D
Как же получить такие же красивенькие списки из по сути десятков тысяч IP адресов? (не забываем что /24 это целая подсеть)
У нас есть для этого минимум три инструмента!

1. Расширение IPvFoo для браузера, крайне полезная штука, которая по сути просто в удобном виде предоставляет нам список доменов и IP адресов к которым обращается сайт, а так же этот инструмент даже рисует, на какие адреса конкретно в данный момент идёт обращение (очень хоршо видно откуда например качается видео или музыка по мере его просмотра) После установки расширения включаем полностью VPN для всего, для того что бы во первых, у нас правильно отображались региональные сервера, а во вторых у нас же без него ещё ничего правильно не работает?))Соответственно открываем ютуб, открываем какое нибудь видео, смотрим откуда (по жёлтому миганию) ютуб грузит видос, вбиваем этот IP в https://2ip.ru/whois/ и видим, что в большинстве случаев загрузка шла с какой то подсети, которая полностью пренадлежит Google LLC "Название провайдера:Google LLC", после этого можно смело брать подсеть из "CIDR:" и вот и готов наш один элемент из нашего аккуратного списочка :D естественно таким же образом делаем не только с адресами с загрузкой видео, но и со всем, что касается например ютуба. В моём случае для меня очевидно, что www.youtube.com 142.251.1.198 которые мне показывает расширение, внести необходимо, так как это сервер основной загрузки сайта, через него мы будем получать региональные сервера загрузки видео, по этому если не внести подсеть для него, то допустим из России у нас ютуб загрузится, но сам ютуб будет думать что мы в России, и отдавать нам не те же адреса серверов загрузки видео, которые были в другой стране, ведь сервера эти в большиснве случаев региональные (и кстати забавно бесполезный факт: через IP адрес сервера googlevideo.com можно выяснить, на этапе когда мы его вбили на 2ip.ru, в каком городе он находится, "Хост: ams15s43-in-f8.1e100.net" видите эти три волшебные буквы в хосте в самом начале? это буквы ближайшего аэропорта к серверу Google) Так вот о чём это я, вносить подсети стоит с умом, выдача IPvFoo к этому располагает, ведь для меня довольно очевидно например, что fonts.googleapis.com не заблокирован, иначе у нас бы полетели шрифты на огромном колличестве сайтов, по этому эту строчку мы там не трогаем :D В случае же например, разблокировки по спискам доменов, IPvFoo так же полезен, ну и заниматься этим удобнее, ведь в случае с тем же googlevideo.com нам не надо открывать с десяток видео для хотя бы примерного понимания с каких серверов может идти загрузка, ведь мы просто говорим что любой домен заканчивающийся на .googlevideo.com мы будем пускать через наш тоннель) но в WireGuard по доменам ничего разблокировать невозможно, так можно только в VLESS.

Второй же инструмент, нужен когда первый почему то не сработал, но речь всё ещё о браузере, так было например с голосовыми каналами дискорда, которые не видны в IPvFoo, и которые вообже используют UDP а не привычные TCP или HTTP
Этот инструмент называется инструменты разработчика!)
Если честно я и сам им не владею в полной мере, да и описывать его наверное очень долго, но в случае с дискордом всё получилось очень просто: открываем в браузере, нажимаем F12, Console, вводим фильтр: "RTC connected to media server:" и заходим на какой нибудь голосовой канал, видем в консоли строчки такого вида:
[RTCConnection(247406223270477826, default)] RTC connected to media server: 35.214.142.233:50005
[RTCConnection(247406223270477826, default)] RTC connected to media server: 66.22.199.93:50024
я заходил поочереди на разные каналы, и смотрел чё там у нас вообще бывает. В первой строчке видим как раз IP из гугловской огромной сети, где точно вычислить кто есть кто не получилось, во втором же случае видим дискордовский айпишник, о чём нам любезно сообщает 2ip или тот же whois. В названии провайдера красуется дискорд через тире с регионом и вероятно какими то номерами серверов, что бы долго не мучаться с переключениями на разные регионы и выцеплению айпишников, можем просто поискать сервисы которые нам выдадут все подсети провайдера которые начинается на дискорд, и тырим все айпишники оттуда. В случае с дискордом это например актуально, потому что дискорд заблокирован полностью, в случае с гуглом же это не очень актуально по причине того, что всё же хочется что бы поиск, диск, фотографии и прочее всё же шёл как из России, ведь тут это сейчас не заблокированно

Третий инструмент же я рекомендую испльзовать только тогда, когда первые два вообще никак не возможны, а так же когда другие способы такие как например просмотр адресов в каких нибудь логах нужной нам программы невозможен или не содержит нужной нам информации. Третий способ заключается в просмотре трафика со всего устройства. Для его реализации можно испльзовать например команду в консоли Windows "netstat -aon" которая покажет текущие все текущие подключения устройства, вывод которой можно скопировать в блокнот, взять PID нужного процесса из диспетчера задач, и поискать внешние IP адреса нужного процесса там. Так же можно использовать WireShark, но это довольно тяжёлая в освоении программа которая кажется мне в рамках этой статьи оверкиллом :D

Всем спасибо кто дочитал до этого момента! Надеюсь кому то помог, кого то заинтересовал разобраться по глубже в том, чем пользуемся каждый день, так же если статья взлетит и люди попросят ещё подобного в комментариях, то я напишу статью о том, как очень нехитрым способом машрутизировать трафик на уровне локальной сети в VLESS, имея роутер который может в DNS записи(аля создание локальных доменов), и имея машину в этой сети которая работает всегда (вообще у меня это Windows, но мечтаю переделать эту часть своей инфраструктуры на линукс на АРМ процессоре :D)

1717
55
13 комментариев

WG это самый дрочный пример того как делать ебучую маршрутизацию, даже v2/nekoray это выполнено гораздо дружелюбнее, но еще проще если для обычного серфинга это поставить какой нить смарт прокси плагин на браузер, и уже оттуда фильтровать все дерьмо на прокси который ты настроил либов нешний либо как затычку для ВПН у себя на компе.

3
Автор

Я согласен, однако в случае с дискордом мы имеем комбо, тут и использование прямых IP адресов (без доменов), и необходимость использования его вместе с играми, которые в ВПН заворачивать не очень хочется, по этому как минимум в случае с дискордом всё равно придётся заниматься мозговым штурмом по вычислению всех подсетей как минимум голосовых серверов, а добрая половина статьи тут именно про инструменты вычисления IP, WG тут просто потому что в нём все не так очевидно как в VLESS и потому что он чуть ли не популярнее чем VLESS, по этому я думаю найдутся те, кто с минимальными дороботками из статьи своего подключения смогут добиться более оптимального использования. Ну и плюс ко всему - именно в случае с дискордом даже для nekoray "дрочка" будет почти такая же как и с WG)

WG это самый дрочный пример того как делать ебучую маршрутизацию

Потому что его создавали чтобы Virtual Private Network поднимать, а не эти ваши блокировки обходить и апишники скрывать.

только лиж👅👅👅

3
Автор

Исправил)

Поставь TunnlTo (wiresock), там есть маршрутизация по приложениям. Если впн быстрый, то уже можно просто добавить все ип кроме российских.

1
1

У меня последние пару дней проблема, что в дискорде на пк в приложении все медиа грузятся нереально долго. Как починить не понятно, добавил уже кажется все домены дискорда (хотя в прошлый четверг работало норм просто добавление экзкшника в некобокс) сейчас юзаю голый синг бокс (установил как сервис в винду) конфиг в json файле. Как в синг боксе прописать именно ип не совсем понятно в документации речь только про домены