Включили VPN — и часть сайтов перестала открываться. Отключаете — банковские приложения и госуслуги работают, но пропадает доступ к нужным зарубежным ресурсам. Если VPN один, иногда хватает пары исключений. Сложнее, когда на компьютере одновременно используются обычное подключение, личный VPN и корпоративный, и все они нужны. В этой статье разберём, как управлять маршрутизацией трафика на Windows, Linux и macOS, чтобы каждый сервис работал через нужный канал.

Почему сайты ломаются при включённом VPN

VPN создаёт виртуальный сетевой интерфейс и меняет таблицу маршрутизации так, чтобы весь или часть трафика уходила через туннель. Проблемы возникают по трём причинам: сайт блокирует зарубежные IP-адреса, приложение требует локальный IP (например, банковское), или сам VPN-клиент конфликтует с другим сетевым ПО. Кроме того, некоторые сервисы проверяют DNS-запросы и отказывают в доступе, если они идут через сторонний резолвер.

Первый шаг — понять, какой именно трафик должен идти напрямую, а какой через VPN. Составьте список приложений и сайтов, которые перестали работать. Это поможет выбрать метод маршрутизации: по приложению, по IP-адресу или по домену.

Способы маршрутизации трафика

Все методы делятся на три группы: настройки внутри VPN-клиента, системные правила и сторонние прокси-менеджеры. Рассмотрим каждую.

  • Исключения в VPN-клиенте. Многие массовые сервисы (например, WireGuard, OpenVPN или проприетарные клиенты) позволяют указать приложения или IP-адреса, которые не должны идти через туннель. Это самый простой путь, но не всегда гибкий: нельзя задать правило по домену.
  • Системная маршрутизация. В Windows и Linux можно вручную добавить статические маршруты, чтобы трафик к определённым подсетям шёл через физический интерфейс, а не через VPN. В macOS для этого используется утилита route. Метод требует знания IP-адресов ресурсов и прав администратора.
  • Прокси-менеджеры и правила по доменам. Инструменты вроде mihomo (Clash), sing-box или Xray позволяют задавать правила: какие домены и приложения направлять через прокси, а какие — напрямую. Они работают как локальный прокси-сервер, и приложения обращаются к нему. Это гибкий, но более сложный вариант.

Выбор зависит от вашей задачи. Если нужно исключить пару программ — хватит настроек VPN-клиента. Если требуется тонкая маршрутизация по доменам и приложениям — смотрите в сторону прокси-менеджеров. Если вы администратор и нужна управляемость на уровне сети — используйте системные маршруты или отдельный шлюз (например, OpenWrt).

Практические шаги для Windows, Linux и macOS

Windows. Проверьте настройки вашего VPN-клиента: часто там есть раздел «Split tunneling» или «Исключения». Добавьте в него приложения (например, банковский клиент) или IP-адреса. Если клиент не поддерживает исключения, можно добавить статический маршрут через командную строку: route add <IP-адрес> mask <маска> <шлюз> metric 1. Шлюз — адрес вашего физического роутера. Чтобы маршрут сохранился после перезагрузки, используйте флаг -p. Учтите, что при смене сети шлюз может измениться.

Linux. Здесь больше гибкости. Можно использовать ip route add для добавления маршрута через физический интерфейс. Например: ip route add 192.168.1.0/24 via 192.168.1.1 dev eth0. Для правил по доменам удобно применять sing-box или mihomo в режиме TUN — они создают виртуальный интерфейс и автоматически направляют трафик по правилам. Настройка требует понимания конфигурационных файлов, но зато даёт полный контроль.

macOS. Добавление маршрута: sudo route add -net 192.168.1.0/24 192.168.1.1. Для исключения приложений из VPN некоторые клиенты предлагают функцию «Split tunneling». Если её нет, можно поднять локальный прокси (например, на основе sing-box) и настроить приложения на его использование. В macOS также есть встроенный PF (Packet Filter), но для повседневных задач он избыточен.

Типичные ошибки и как их избежать

  • Игнорирование DNS. Даже если трафик идёт напрямую, DNS-запросы могут уходить через VPN, и сайт будет открываться неправильно. Настройте DNS-серверы для исключённых доменов или используйте локальный резолвер.
  • Конфликт нескольких VPN. Если одновременно работают два VPN-клиента, они могут перезаписывать маршруты друг друга. Убедитесь, что правила не пересекаются, или используйте один менеджер для управления обоими туннелями.
  • Отсутствие проверки. После настройки проверьте, куда фактически идёт трафик: используйте сайты вроде 2ip.ru или команду tracert (Windows) / traceroute (Linux, macOS).
  • Слишком широкие исключения. Если добавить в исключения всю подсеть, можно случайно пустить напрямую трафик, который должен быть защищён. Будьте точны.

Пример из практики: пользователь включил корпоративный VPN, и перестал работать личный сайт на хостинге. Проблема решилась добавлением IP-адреса хостинга в исключения корпоративного клиента. В другом случае банковское приложение отказывалось работать, потому что DNS-запросы шли через VPN — помогла смена DNS на локальный.

Маршрутизация трафика — задача, которая требует внимательности, но решаема. Начните с простых исключений в VPN-клиенте, а если этого недостаточно, переходите к прокси-менеджерам или системным маршрутам. Главное — тестировать каждый шаг и не бояться экспериментировать в контролируемой среде.