Необходимость привязать программу к конкретному сетевому интерфейсу (сетевой карте) возникает не слишком часто. В том случае, если компьютер одновременно подключен к двум (и более) подсетям, к примеру, к корпоративной через Ethernet кабель и к публичной сети через Wi-Fi, как заставить приложение (тот же интернет браузер) отправлять данные только через конкретный интерфейс?
Windows при маршрутизации пакетов на системах с несколькими сетевыми интерфейсами выбирает интерфейс, через который слать данные в соответствии со своей таблицей маршрутизацией. Этот механизм не позволяет заставить определенное приложение всегда работать через конкретный сетевой интерфейс. Решение о маршруте отправки пакета все равно остается за ОС.
В моем случае для решения задачи привязки программы к сетевой карте, пришлось искать стороннее решение. В своих изысканиях я остановился на утилите ForceBindIP (http://www.r1ch.net/stuff/forcebindip/). Разберёмся, как ею пользоваться (для работы требуется наличие установленной библиотеки Visual Studio 2015 Runtime).
Архив с Portable версией утилиты содержит 4 файла:
- BindIP.dll
- BindIP64.dll
- ForceBindIP.exe
- ForceBindIP64.exe
Как видно из имен файлов, одна пара файлов предназначена для x86 ОС/приложений, другая – для x64.
К примеру, Firefox на x64 битной ОС является 32-битным приложением, поэтому для его привязки к сетевой карте нужно использовать ForceBindIP.exe. В то время, как для RDP клиента (mstsc.exe) на x64 придется использовать ForceBindIP64.exe
Рассмотрим примеры использования утилиты ForceBind:
Предположим, у нас имеется 2 сетевые карты с IP адресами 10.10.1.10 и 192.168.1.12. Наша задача, настроить систему так, чтобы Firefox всегда работал через второй интерфейс.
Следующая команда запустит Firefox в режиме привязки к сетевой карте 192.168.1.12:
ForceBindIP.exe 192.168.1.12 "c:\Program Files (x86)\Mozilla Firefox\firefox.exe"
Если IP адрес интерфейса динамический, можно осуществить привязку не к IP адресу, а к GUID интерфейса (GUID всех сетевых интерфейсов можно найти в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces).
ForceBindIP.exe {1bcd2a3b-6d77-4be1-a233-112d75fac422}"c:\Program Files (x86)\Mozilla Firefox\firefox.exe"
Для привязки mstsc.exe на x64 битной системе к интерфейсу 10.10.1.10, воспользуйтесь командой:
ForceBindIP64.exe 10.10.1.10 c:\Windows\System32\mstsc.exe
7 комментариев
Почему-то данная программа работает неоднозначно:
— Портативная сборка Хрома через нее работает и выбирает указанный сетевой интерфейс
— IExplorer не хочет принимать указанный ему интерфейс и работает через адаптер по умолчанию
Мне необходимо, чтобы експлорер работал через USB модем, а весь остальной софт через WIFI.
А какая версия ОС и IE?
Вообще говоря IE в Windows довольно специфичный продукт… Вроде браузер, а вроде и часть системы.
Если тема еще жива подскажите как будут вести себя дочерние процессы, на пример запускаем proces1.exe он в свою очередь запускает proces2.exe и proces3.bin которые тоже в свою очередь выходят в интернет. Будут ли дочерние процессы идти по тому же маршруту что и 1.exe? Если да то есть ли инжекты в запущенные через ForceBindIP приложения(грубо говоря если приложение обладает защитой от изменения кода, будет ли срабатывать такая защита?)
ЗЫ хочу использовать ForceBindIP для проброски игры с кучей дочерних процессов и античит защитой через интерфейс впн. Может есть у кого такой опыт?
Спасибо огромное!!!!!! при запуске vpn отключался инет на др сетевой карте! Ваше решение ОЧЕНЬ-ОЧЕНЬ выручило!
VMware Workstation16, Windows 10, два сетевых адаптера, метрика задана руками, приоритет одним, над другим. Описанный в статье способ не работает. Трафик идёт через адаптер с высшим приоритетом.
ALEKSEQ VMware это не совсем программа. Если вам нужно выделить конкретный физический сетевой адаптер для виртуальной машины то в настройках самой машины указать кастомную сеть и сконфигурировать ее в virtual network editor по типу моста. Ниже попытаюсь скинуть скрин: https://prnt.sc/1cnx490
Слева у меня настройки самой виртуальной машины, справа — файл «vmnetcfg.exe» в корне где стоит воркстейшин, например
C:\Program Files (x86)\VMware\VMware Workstation
Шляпа, не работает ни с IP, ни с GUID
Проверено на лисе-94 64 бит с форсбиндом 64 бит. При этом всей этой этажерке пофиг даже на приоритет сетевух — соединяется через низкоприоритетную, игнорируя и метрику, и настройку форсбинда.