
Комментарии 46
Можно же так же поднять VPN на ВМ или контейнере, только дополнительно установить Dnsmasq и автоматизировать накопление в конфиге доменов, которые не отвечают через обычный канал. После чего эти домены так же автоматически переключаются на работу через VPN. А можно и на гитхабе поискать списки и оттуда стягивать. И не придётся разделять трафиг по приложениям. Так же можно поднять socks и vpn на одном контейнере и трафик к необходимым доменам роутить при помощи расширения хрома.
Хм, интересно звучит, погуглю, спасибо.
Для меня было болью подружить 2 ВПНа в целом, оставляя возможность включать/отключать каждый когда нужно. Что я только не перепробовал, до того, как пришел к такому решению) В том числе ставил git gui на вируталке и там, думал, что буду индекс файлов собирать и коммитить, но идея провалилась из за того, гит индекс отрабатывал неожиданно и показывал весь проект как новый + жутко нагружал виртуалку, пока этот индекс собирал
Да это я так, к слову. Если ваша конфигурация работает — не надо трогать, пускай работает.
буквально недавно реализовал так: v2raya в докере крутится прямо на openwrt, раздаёт оттуда прокси, а корп. через crypto pro ngate цепляется штатно и ничего друг другу не мешает. с браузерами ровно так же как в статье. по статье лайк, каждый рецепт чем-то уникален.
Я, если честно, так и не понял смысла иметь отдельную VM. Если у вас в ней вся работа происходит, тогда окей, но если чисто для VPN, то как будто бы излишне. Попробуйте посмотреть чуть под другим углом - может быть вам не так уж и нужно, чтобы весь трафик вашего компьютера по умолчанию шел через личный VPN? Я вот для себя вижу основные сценарии - это браузер, TG, Jetbrains IDE. В целом, все эти три сценария прекрасно покрываются именно прокси. И тогда мы приходим к чуть другой схеме - VPN на работу - это именно VPN, а все остальное - это как раз прокси. Я не знаю, что именно за протокол вы используете, но популярные VLESS, AWG, WG, Hysteria2, Trojan поддерживаются почти всеми клиентами, типа xray, sing-box, Mihomo и различными GUI над ними. Я бы присмотрелся к Mihomo - там очень удобно делать маршрутизацию, плюс можно сделать какую-нибудь клёвую схему, типа умного выбора из всех доступных серверов самого быстрого и пуска через него WARP, чтобы получить на выходе более-менее белый IP, который почти всех устраивает. Ну и плюсом этой схемы становится то, что ваш корпоративный впн просто работает, git нормально туда ходит, даже IDE нормально интегрируются со всякими Jira/Gitlab, а там где вам ютубчик надо посмотреть - вы прописываете прокси и смотрите.
Бывает слегка censored "рабочие VPN". уровня - google maven НЕ грузится через VPN а внутренний - только с VPN(=собирайте 2 раза чтобы в кеш). + рабочие сервисы примерно также. Ах а да - еще и клиент проверят.
Ну, к таким “рабочим vpn” обычно в комплекте идет рабочий ноутбук, на котором ОС контролируется политиками компании и куда стороннее ПО в принципе поставить сложновато. В банках такую историю любят. Ну и если компания не совсем дурная, то обычно там свой какой-то мавен, например, Sonatype Nexus, который прозрачно проксирует запросы к тому же гугловому мавену и сохраняет зависимости у себя в кэше, просто в проекте нужно прописать, что брать зависимости надо с него, а не напрямую с гугла. И на самом деле такой кэширующий прокси - удобная штука, которая позволяет компании не зависеть от работы интернета и порой прибавляет в том числе и скорости к сборке.
Поставил на роутер vpn, завернул маршрутами на роутере трафик к openai, YouTube и т.д. через vpn. Подключаясь к рабочему vpn заворачивается трафик только к корпоративной сети, а не к 0.0.0.0/0. И нет никаких проблем. Батники с маршрутами лежат в GitHub у тех же rockblack например.
Как я перестал переключать VPN
Xray
routing:
rules:
- type: field
ip:
- geoip:private
- geoip:ru
outboundTag: direct
- type: field
domain:
- geosite:category-ru
- regexp:^.+\.ru$
- regexp:^.+\.su$
- regexp:^.+\.рф$
- regexp:^(.+\.)?yandex\..*$
- regexp:^(.+\.)?yastatic\.net$
- regexp:^(.+\.)?vk\.com$
- regexp:^(.+\.)?userapi\.com$
outboundTag: direct
В моем случае - xray просто дает VPN соединения на разных портах (у меня их много). Но в нем самом я это не делаю - очень заморочно каждый раз для каждого домена туда прописывать - это отлично работает только для единичных случаев.
Первый подход был - SwitchyOmega в браузере. Второй - просто отдельный браузер для рабочих дел.
И второй подход мне нравится больше. В частности - при заходе на AWS идут запросы на их 100500 доменов, и их все тяжело предусмотреть в конфиге. А так - гарантированно, при заходе на рабочий сайт (если я в нужном браузере) - все пойдет через правильный прокси.
На самом деле сетей больше. Есть рунет, есть забугорье, есть работа. Для совмещения рабочего впн с любым другим нужно просто не принимать маршруты по умолчанию, а добавить явно все корпоративные сети. Ну и dnsmasq чтобы работал по корпоративным доменам отдельно А вот с настройкой перехода от рунета в забугорье все несколько сложнее. Настройка и поддержание списков доменов с разной маршрутизацией мне лично кажется больше спортивной нежели прагматичной задачей. Хотя дело вкуса. У меня это работает на базе wg который прикинут через ssh (прекрасно работает так как wg не управляет перегрузкой), и хорошо и просто пробрасывается везде где надо.но жа - нужно подключатся и отключаться вручную.
В зависимости от серьёзности рабочей организации - может и не получиться установить рабочий vpn на виртуальный сервер. А так идея с vps красивая - можно на нём же и личный квн поднять.
Спасибо, вы натолкнули на идею поделиться гайдом, как через VPS RDP разделять интернет без переплаты хостерам за образ Windows. Там всё намного проще.
Подход рабочий, но громоздкий: целая VM плюс SSH-туннель плюс per-app routing. Для split-tunnel на 2026-й есть варианты полегче (знаю как минимум несколько):
WireGuard с AllowedIPs. Конфигурируешь WG на хосте, в AllowedIPs указываешь только корпоративные подсети (10.x/8 или какие у вас). Всё что попадает в эти подсети, идёт через WG, остальное напрямую. Не нужна ни VM, ни SOCKS5, ни настройка приложений. Один конфиг :)
Tailscale subnet router. Если корпоративная сеть подключена к Tailscale (или поставлена Tailscale-нода в корп-DMZ как subnet router), на клиенте просто
tailscale up, трафик к корпоративным IP идёт через mesh, остальное напрямую. Из коробки, без правки routing-таблиц вручную.macOS Network Extensions per-app VPN. Если только macOS, нативный API NEAppProxyProvider даёт per-app routing без проксей. Сложнее в реализации, но самое нативное.
Сейчас твой setup решает проблему правильно концептуально, но через три слоя инфраструктуры. WG + AllowedIPs делает то же самое в одном конфиге и гораздо, гораздо эффективнее imho. А так: мое уважение.
Если любите FireFox, то в нем можно создать несколько профилей, с разными proxy в каждом профиле. Это что бы не плодить разные браузеры на одном ПК.
Только нужно помнить очевидные вещи: профили, создаваемые через менеджер профилей, через командную строку и через меню профилей – это три разный вида профилей и они не взаимозаменяемые. При этом, если создавать профили через меню, которое на видном месте – то у этих профилей нельзя при старте как-то выбрать, какой профиль будет открываться: первым всегда будет открываться тот профиль, который был создан раньше всех.
ну в фф удобно для этого не профили использовать, а container tabs, а к ним цеплять прокси. Очень удобно
Я так далеко не копал. Через меню создал второй. Главное раскрасил его по другому. Что бы в глаза бросался. А при запуске дооткрываю нужный профиль при необходимости. Если первым стартанул не основной рабочий.
Как раз таки у меня основной хром браузер. Пытался в нем решить вопрос через разные профили, но он пока что это не умеет, к сожалению. Поэтому, настроил firefox полностью для работы (благо, там не нужно хранить много информации по типа секретов). Достаточно было создать пару групп под проекты с досками/конфлей/дизайном и это хватило
А так да, согласен, был бы основной лиса, можно было бы в одном браузере все организовать
В любом браузере прокси можно переключать через proxy.pac файл. В нем на Javascript описывается какой домен через прокси ходит (или напрямую DIRECT) можно даже приоритет выбирать если прокси не работает. В Firefox этот файл в настройках прокси указывается называется “Automatic proxy configuration URL”, только путь нужно в формате ссылки указывать (file:///my/path/proxy.pac).
У меня работает примерно следующая конфигурация: роутер на OpenWRT, два провайдера, два VPS (Москва и Хельсинки), на которых стоит AmneziaWG, на роутере подняты два интерфейса на оба VPS, настроен mwan3 на автоматическое переключение на резервного провайдера, если вдруг основной отвалился. В интерфейсе роутера есть страничка, где я могу задавать домены, IP, сети, AS, через какой интерфейс пойдет трафик. Также еженощно скачивается список запрещенных РКН сайтов и они помещаются в обходной путь. На моем компе установлены два корпоративных VPN (Checkpoint и OpenVPN), которые включаются-выключаются скриптами, разруливающими сложности с DNS, а также клиент Амнезии, когда сайт через роутер не открывается и надо вручную обойти проблему. Также в роутер воткнут свисток ZigBee, обеспечивающий подключение 8 температурных датчиков в квартире, а также поднят Mosquitto, на который приходят данные еще и с самопального уличного датчика с еинк-экранчиком. А будут приходить и другие данные.
Я к чему все это так долго расписываю... Я просто сел за комп и сказал Клоду, что именно я хочу и как это примерно должно работать. А дальше он сделал то, на что у меня ушли бы недели и месяцы проб и ошибок, а то и бросил бы я из-за сложности. Он написал все скрипты, настроил маршруты, dnsmasq, mwan3, файрвол, написал свой скрипт Policy Based Routing (стандартный плагин от OpenWRT просто не понадобился), написал скрипты для LuCi за несколько минут, собрал с помощью GitHub Actions драйвер пропатченный для свистка Зигби под мой роутер и кучу еще всякого сделал, что я уже и забыть успел. Уж молчу про аудит и настройку VPS.
Я к чему это все, опять же... Можно попробовать просто сесть вместе с ИИ и сделать такую конфигурацию, которая будет работать так, как нужно конкретно тебе.
Какое-то удаление гланд через одно место.
Как я "перестал" еще в 22 году:
Маршрутизатор с 2 впн, один для ютубов, второй в корпоративку, третий входящий. Когда я в сети, все ходит как настроено, как только мой телефон покидает сеть автоматически поднимается подключение к маршрутизатору и дальше все как и было.
Никаких виртуалок, никаких отдельных браузеров, никаких привязок к устройству, только маршрутизация на роутере в сети.
Попробуйте Proxy Pac Switcher
А есть какие-нибудь real-life VPN, чтобы обходить и остальные инициативы нашего любимого государства, а не только блокировку Интернета?
Классная схема, сам когда-то так мучился с двумя VPN. Накину пару моментов, может пригодится. Первое, мелочь но больно стреляет: git config --global http.proxy socks5h://... заворачивает в корп-VM весь git, включая личные репо на гитхабе. То есть то что вы разделяете тут обратно склеивается, личные пуши идут через корп-сеть, и при упавшем туннеле личный git тоже падает. Я в итоге ушёл на conditional includes (includeIf "gitdir:~/work/") и прокси прописываю только в рабочем конфиге. Рабочее через туннель, личное мимо. Второе что стоит явно отметить: ssh -D это SOCKS5 только по TCP, UDP ASSOCIATE там нет. Значит QUIC/HTTP3 через туннель не пойдёт (браузер просто откатится на TCP, обычно ок), а если какой-то внутренний сервис живёт на UDP то он будет недоступен. DNS кстати работает не из-за UDP, а потому что имя резолвит сам прокси внутри CONNECT, поэтому socks5h и спасает. Ну и в целом вы по сути руками собрали per-app роутинг. На линуксе то же самое делается нативно без VM и SSH: либо отдельный network namespace с корп-vpn внутри (ip netns exec corp firefox), либо роутинг движок типа sing-box где один TUN и правила по process_name/доменам сами гонят firefox и git в корп выход а остальное напрямую. Скорость нативная, udp работает, двойной инкапсуляции нет. VM хороша тем что кроссплатформенная и изолированная, но если только линукс то netns заметно легче. А так подход классный, разделять маршрутами а не переключателями это то к чему рано или поздно приходишь. Спасибо за статью)
Как сделано у меня.
Микротик
VPS в Германии.
На микротике создал 2 адреслиста: OpenVPN-Sites, OpenVPN-PC
В первый добавляю домены и сайты, которые необходимо открыть через КВН. Тут главная проблема выловить все домены. F12 и консоль в браузере показывает ошибки открытия сайтов. Вот эти адреса и добавляем. Или ищиме в интернете
Во второй лист можно добавить IP локального ПК. Очень удобно всю машину вывести через КВН. Сервер DELL при обновлении. У него не видно куда он лезет. Downloads.dell.com недостаточно.
В MANGLE микротика создаешь 2 правила для 2 адреслистов на маркировку пакетов меткой OPENVPN.
В ROUTES создаешь маршрут до КВН в Германии для всего траффика с пометкой OPENVPN.
Все. Эта штука у меня работает уже 5 ый год. Раньше было OpenVPN поэтому Адреслисты остались. Привычно.
В Германии поднят VLESS КВН. На микротике поднят MIHOMO контейнер со строкой подключения.
Работает как часы.
Просто и надежно. Без муторных настроек. Этот примитив можно настроить с Дипсиком за 5 минут.
На телефоне V2RAY TUN. Там приложения добавлены в КВН. И никакого палева. Сбер и прочие ходят как обычно Телега, Ватсапп, ютьюб через КВН.
Какой мазохизм...
Я в свое время проходил через все эти этапы - отдельные виртуалки под каждый проект со своим впн внутри, настройка всех впн на роутере и маршрутизация в зависимости от сети, поднятие отдельного впн на VPS до нужных проектов и настройка маршрутов на нем, а из домашней сети - подключение только до него.
Но последние 2 работы сменил парадигму - на работе выдают ноут с подключением к корпоративной сети, я на нем и работаю. Все! )
Купил логитечевскую клаву k375s и мышь триатлон, настроил подключение к одному рабочему ноуту и двум своим домашним компам - один под линуксом, другой под виндой (основной Линукс, но винда периодически нужна тоже).
На рабочем ноуте работу работаю, на домашних - свои задачи решаю. Да, это 3 разных устройства, но зато четкое разделение - на рабочем компе нет ничего из личных файлов, только рабочая история. На личных компах - свои проекты, без заморочек с доступом к корпсети и проблем из-за впн.
Неплохое решение проблемы. Я в своей статье решал похожую задачу, и, по сути, решение оказалось таким же, как ваше - отдельная VM (WSL), перенос рабочего окружения в Linux.
Не раскрыта тема кормления корпоративного ВПН вторым фактором после того как у него проходит время равное максимальной длительности одной непрерывной сессии.
У меня разные vpn - разные виртуалки. Ибо тащить в рабочую зону ютубчики и прочий развлекательный контент - так себе идея, не говоря уже о том, что сваливание всего в одну кучу резко увеличивает риски по части ИБ.
Плюс некоторые вещи типа ИИ-агентов надо обязательно изолировать в виртуалку, чтобы если он накосячит, ничего не потерять. А еще такому софту не нужно знать ничего о пользователе, чтобы не попасть под санкционные блокировки - в виртуалке для ИИ язык только английский, время страны vpn, никаких посторонних логинов в браузере, и минимум возможностей определить реальное местоположение.
Хм, как-то сложно выглядит, но наверное так надо.
У меня проще: всё рабочее маршрутизируется в рабочую сеть, всё не рабочее - в обход, а для вещей типа "в банк зайти или в WB" есть отдельный юзер со своим профилем в браузере.
Причем чем дальше - тем реже приходится тревожить этого юзера. Всё необходимое позапрещали и позаблокировали - если бы не маркетплейсы то там вообще нечего делать, одна казёнщина унылая осталась.
Я может чего-то не понимаю, но по мне это какой-то дикий перебор. Может я что-то не так понял из контекста, но мне кажется, что небольшая перенастройка клиента корпоративного впн клиента может просто устранить проблему, которую вы пытаетесь решить каким-то диким методом.
Я могу предположить, что личный впн просто 0.0.0.0/0, если не заморачиваться со списком доменов, так сказать самый простой вариант. Корпоративный впн при подобающей настройке будет вам выдавать нужные маршруты с более узкими префиксами (разумеется мы отключаем на клиенте использовать его как шлюз по умолчанию). Таким образом корпоративный трафик ходит по более узким и конкретным маршрутам в соответствии с приоритетом более узкого префикса, а всё что не подпадает уходит в личный впн. Проблемы dns для резолва корпоративных ресурсов обычно решаются через вбивание нужных доменов в search domains в настройках клиента нужного соединения.
В итоге работают 2 впн клиента одновременно без особых проблем путем простой настройки 2х параметров со стороны клиента.
В теории да, это решается гораздо красивее через маршруты и split-tunnel. Я тоже сначала пошёл именно этим путём.
Но в моём случае корпоративный опенвпн-клиент при подключении не просто добавлял нужные маршруты, а фактически перехватывал сетевой стек: менял ДНС, пушил свои маршруты и ломал работу второго VPN. Плюс я не контролирую конфигурацию сервера и не могу изменить то, что приходит через push от корпоративного VPN.
Я пробовал, конечно же, запускать оба впн одновременно и настраивать маршрутизацию на клиенте, но либо переставали открываться корпоративные ресурсы, либо ломались сервисы, требующие зарубежный IP. Возможно, при более глубоком ковырянии таблиц маршрутизации на маке это можно было бы довести до рабочего состояния, но это уже превращалось в постоянную поддержку нестандартной сетевой схемы.
В итоге я выбрал вариант с убунту VM: корпоративный VPN полностью живёт внутри виртуалки, а моя основная система остаётся нетронутой. Получилось чуть менее элегантно с точки зрения сети, зато максимально предсказуемо и не зависит от особенностей корпоративной конфигурации
Ну я бы всё таки вам рекомендовал диагностику или пнуть сетевика компании, чтоб помог). Потому что приходиться решать тривиальные задачи возмутительными методами.
Ну я гадаю на 2х +/- равноценных впн соединениях. Если ваш корпоративный впн ломает работу основного впн, то весьма вероятно от корпоративного приходит дефолт роут. А он там может появиться 2мя способами, 1 запушил сервер, 2 настроил клиент (было по умолчанию так например). Так что всё таки очень рекомендую обратить внимание на опцию “use this connection only for resources on its network” ну или что-то аналогичное на маке в настройках корпоративного впн.
Если я правильно помню - в опенвпн можно отказаться от того, что там пушит сервер. И настроить как надо.
Вот если проприетарное что-то тогда да
У меня сильно проще и удобнее, обход ограничений на роутере, на пк рабочий впн, который тунелирует только трафик до рабочих подсетей, плюс отдельный dns для рабочих доменов
что делать, если корпоративный vpn по своим политикам наглухо отрубает локальную сеть (и повлиять на эти политики возможности нет)? Выглядит так, что в предлагаемой вами схеме сетевой доступ к виртуалке с включенным VPN пропадет.
Извиняюсь, если я недопонял вопроса, но собственно роутер/гейтвей корпоративный vpn не вырубает наверное? А если не вырубает, то наверное можно через него добираться к локальным ресурсам - как будто "снаружи" ?
админ/рут на машине у кого? если все еще у вас - тупо скриптом/батником удалять левые маршруты - пробовали?
Как я перестал переключать VPN и разделил рабочий и личный интернет архитектурно