Как привязать приложение к определенному сетевому интерфейсу

Необходимость привязать программу к конкретному сетевому интерфейсу (сетевой карте) возникает не слишком часто. В том случае, если компьютер одновременно подключен к двум (и более) подсетям, к примеру, к корпоративной через 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.

forcebindip - привязка приложения windows к сетевой карте

К примеру, 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).

windows получить идентфикатор интерфейса

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *