Я думаю, что многие из вас так или иначе сталкивались с проблемой, когда нужно использовать свой VPN, корпоративный, какой-то еще для отдельных стендов разработки и так далее, в общем ты просто живешь в VPN'ах.
Недавно разбирался с одной, казалось бы, простой штукой - почему не работают два VPN одновременно.
И если честно, я с этого нормально так заебался.
Ситуация максимально бытовая - есть корпоративный VPN, через который открываются стенды и внутренние сервисы, и есть свой VPN (VLESS), чтобы работал Telegram, OpenAI и все остальное, что без него ныне не открывается.
- Когда включен только корпоративный VPN - все рабочее открывается, но отваливаются Telegram и нормальная коммуникация с командой.
- Когда включаешь свой VPN - наоборот, все внешнее работает, но корпоративные сервисы просто перестают грузиться, как будто их не существует.
Естественно, если включаешь сразу оба VPN'a - не работает большая часть всего, что нужно, зато работает Telegram, OpenAI и так далее. Были даже моменты, когда какие-то сервисы не открывались вообще ни при каком раскладе, пока не выключишь оба VPN.
В какой-то момент я просто начал путаться, какой из них у меня сейчас включен, постоянно дергал их туда-сюда и ловил себя на мысли, что это начинает реально раздражать.
Сначала кажется, что VPN конфликтуют между собой, но на деле проблема оказалась не в том, что они "ругаются", а в том, как устроена маршрутизация.
Любой обычный VPN забирает весь трафик и буквально говорит системе "все через меня", второй делает то же самое. В итоге у тебя два туннеля, и каждый тянет одеяло на себя, из-за чего маршруты просто ломаются.
Решение оказалось не в том, чтобы заставить их как-то работать вместе, а в том, чтобы разделить трафик.
По сути ты не используешь два VPN, ты решаешь, какой запрос куда должен идти, то есть разделяешь между ними ответственность.
Я у себя разрулил это через routing в клиенте Happ, так как пользуюсь им, но применимо будет и ко многим остальным клиентам.
Логика следующая:
• Корпоративные ресурсы идут через корпоративный VPN, Telegram и все заблокированные сервисы идут через свой VPN, все остальное идет напрямую.
• Самое важное, на чем я споткнулся - это приватные сети. Все адреса вида 10.x.x.x, 172.x.x.x, 192.168.x.x - это внутренние сети, их нет в интернете и если ты отправляешь их в свой VPN, они там просто теряются, и поэтому у тебя не открываются стенды.
Как только я это понял и настроил правила - все стало нормально работать. Стенды открываются, Telegram работает, ничего больше не конфликтует.
Если чуть подробнее про саму настройку, то там все крутится вокруг трех базовых типов маршрутов (да, я не знал об этом раньше):
1. Direct - это когда трафик идет напрямую, без VPN. Так должны идти все обычные сайты и обязательно все приватные сети, потому что они доступны только внутри корпоративной сети. То есть мы буквально должны сказать, что на наши корпоративные сети и все, что не требует проксирования - надо забить.
2. Proxy - это когда трафик идет через твой VPN. Сюда ты отправляешь Telegram, OpenAI и любые сервисы, которые у тебя блокируются или не открываются напрямую.
3. Block - это просто блокировка трафика. Обычно используется для рекламы, трекеров или каких-то доменов, к которым ты вообще не хочешь подключаться.
И еще один момент, на который я потратил время и не сразу понял. Во многих клиентах есть порядок применения этих правил и он ВАЖЕН.
Сначала должны идти Block правила, потом Direct, и только потом Proxy. Если поставить Proxy раньше Direct, то часть запросов, которые должны идти напрямую (например, корпоративные ресурсы), будут перехватываться раньше и улетать в VPN. В итоге они просто не будут работать, потому что до Direct они уже не дойдут.
Если у тебя похожая история, и ты тоже не понимаешь, почему все ломается - welcome, надеюсь это поможет тебе в решении подобной проблемы.
А если ты здесь впервые и хочешь узнать больше обо мне или попасть на менторство до оффера - переходи к закрепленному сообщению, там есть бонус для тебя и твоих друзей.