Я хочу перенаправить трафик на определенные сетевые интерфейсы приложениями в Windows. Это обычно называется «раздельным туннелированием», и многие люди часто делают это для выборочной отправки трафика, например, через VPN.
В SuperUser есть несколько ответов, которые предлагают:
1) "SOCKSifying" приложения без поддержки SOCKS с использованием программного обеспечения, такого как Proxifier
2) Использование программного обеспечения, такого как ForceBindIP, чтобы заставить приложения использовать определенный интерфейс
3) Использование некоторых ограничений в зависимости от IP-адреса или домена назначения.
4) Использование виртуальной машины
5) Использование метрик сетевого интерфейса
6) Блокировка трафика приложения с помощью брандмауэра
Вы можете найти большинство этих предложений, посмотрев ответы на следующие вопросы: 1, 2, 3.
Все эти подходы либо слишком хакерские (например, ForceBindIP вводит информацию в DLL), либо не достигают цели туннелирования для каждого приложения (например, фильтрация по ip назначения не полезна).
В общем, официального способа достижения этой функциональности не существует.
Тем не менее, я заметил, что некоторые поставщики VPN предлагают эту функцию (обычно они называют это приложениями белого / черного списка). Как они этого добиваются? Они используют что-то вроде собственной реализации ForceBindIP?
Некоторые VPN, которые разрешают раздельное туннелирование для приложений в Windows: ProtonVPN и PureVPN. Кроме того, кажется, что ProtonVPN действительно создает новый сетевой адаптер для VPN, поэтому у них должен быть способ маршрутизации трафика для конкретного приложения через этот интерфейс.
Наконец, если это поможет (или приведет к еще большей путанице), документация по Windows иллюстрирует способ достижения этой цели, но это достигается за счет использования профилей VPN и MDM (docs).