Как настроить таблицу маршрутизации для конкретного приложения в Windows?

14

Предположим, что сетевой интерфейс 1 (net1) и 2 (net2) оба подключены к Интернету. Я хочу, чтобы приложение 1 (app1) использовало net1, а приложение 2 (app2) - net2. Как это можно сделать под Windows?

Если вам нужен конкретный пример вышеуказанной ситуации, подумайте:

  • Ноутбук с Windows 7
  • net1 = проводное соединение с интернет-модемом Verizon
  • net2 = беспроводное соединение с модемом Comcast Internet
  • app1 = Internet Explorer
  • app2 = Firefox
  • Я хотел бы иметь "IE использует Verizon, но не Comcast", и "Firefox использует Comcast, но не Verizon"

Это не должно быть сделано через таблицу маршрутизации. Если у вас есть другие идеи, пожалуйста, дайте мне знать!

netvope
источник

Ответы:

6

Похоже, ForceBindIP это то, что вы ищете :)

ForceBindIP - привязать любое приложение Windows к определенному интерфейсу

ForceBindIP - это бесплатное приложение для Windows, которое внедряет себя в другое приложение и изменяет порядок выполнения определенных вызовов Windows Sockets, что позволяет вам заставить другое приложение использовать определенный сетевой интерфейс / IP-адрес. Это полезно, если вы находитесь в среде с несколькими интерфейсами, и у вашего приложения нет такой опции для привязки к определенному интерфейсу.

Некоторые программы, которые были протестированы для работы с ForceBindIP, включают DC ++, uTorrent, Quake II, Quake III, Diablo II, StarCraft, Internet Explorer, Mozilla Firefox , Google Планета Земля, Пехота, Real Player, Unreal Tournament 2004 (требуется -i), Outlook 2000 (требуется -i). Программы, которые не работают, включают GetRight (анти-отладчик / разветвление), WinCVS (forks cvs.exe)

Вы можете просто сделать ярлыки для запуска приложения, используя ForceBindIP, с IP-адресом и программой в качестве аргументов:

альтернативный текст

ForceBindIP является бесплатной.

Джон Т
источник
2
Отличное программное обеспечение! К сожалению, он не работает с моей настройкой VPN (в которой отключено «использовать шлюз по умолчанию в удаленной сети», чтобы соединение с Интернетом не проходило через него). Я пытался привязать IE к интерфейсу VPN (адаптер PPP), но трафик по-прежнему не проходит через VPN (проверено на whatismyip.com)
netvope
1

Не нужно запускать vmware player и все такое. Просто включите функцию слабого хоста на вторичном адаптере (то есть на адаптере с более высокой метрикой).

Затем вы можете запустить squid и настроить squid на использование tcp_outgoing_address для ip-адреса вторичного адаптера и прокси для всех ваших приложений.

Я подозреваю, что forcebindip также должен начать работать.

Я думаю, что в стеке MS win7 есть ошибка. Когда пакет поступает на вторичный адаптер, он отбрасывается, даже если это действительный пакет.

Включение получения слабых хостов описано здесь http://technet.microsoft.com/en-us/magazine/2007.09.cableguy.aspx

netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostsend=enabled|disabled

netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostreceive=enabled|disabled

netsh interface ipv6 set interface [InterfaceNameOrIndex] weakhostsend=enabled|disabled

netsh interface ipv6 set interface [InterfaceNameOrIndex] weakhostreceive=enabled|disabled
Mavin
источник
0

Я уверен, что это невозможно. Ближайшая вещь, которую вы можете получить, отправляя трафик на тот или иной интерфейс, - это подсети и записи маршрутизации.

Но если два приложения хотят общаться в сети, они используют одну и ту же сеть.

Технически, я полагаю, приложение могло бы привязать свой исходящий трафик к определенному интерфейсу, но приложение должно было бы быть переписано для этого.

Ян Бойд
источник
0

Имел такое же требование, хотел, чтобы определенные приложения проходили через определенные интернет-соединения, но не мог быть выполнен через IP или порт.

Мое решение было:

(Обратите внимание, что мой компьютер IP-адрес ххх100

а) настроить правило mangle для xxx101, чтобы пройти через wan2

б) запустить vmware player с копией ubuntulite (с установленным openssh) на ip xxx101

c) использовать «проксификатор» для привязки приложения и принудительного его туннелирования через машину vmware, которая, в свою очередь, была маршрутизирована только через wan2

Это единственный (очень неуклюжий) способ, которым я мог понять, как это сделать на уровне приложения (у проксификатора есть пробная версия, которую можно протестировать, и она работает на Windows 7 x64).

Omegatron
источник