1

Интересно, есть ли какой-нибудь инструмент, который позволяет мне направлять весь IP-трафик данной программы через определенный интерфейс?

Справочная информация: я на машине с несколькими сетевыми интерфейсами, подключенными к различным сетям. Я переключил обмен сообщениями со Skype на Wire.com, однако Windows-клиент wire.com не работает через все интерфейсы ("Ваше соединение не является частным"). Теперь я хочу направить весь IP-трафик, связанный с wire.com, через один конкретный интерфейс.

Что я пробовал до сих пор:

  • Изменение метрики интерфейса не вариант, так как это ломает множество других локальных инструментов. В целях тестирования он работал на Wire.com.
  • Редактирование таблицы маршрутизации вручную не работает. Существует список хостов, к которым подключается клиент Wire.com. Я преобразовал все имена хостов в IP-адреса и добавил их в таблицу маршрутизации, но Wire.com отказывается работать. Это не вариант, поскольку wire.com утверждает, что IP-адреса могут быть изменены.
  • Я отключил все сетевые интерфейсы, которые не работали с Wire.com, и запустил клиент Wire, отслеживающий его трафик с помощью Wireshark. Я добавил все IP-адреса в таблицу маршрутизации Windows (route add dest-ip gateway), каким-то образом соединение не работало, когда я снова включил другие интерфейсы.

Поэтому мне интересно, есть ли какой-нибудь инструмент, который автоматически направляет трафик данной программы через определенный сетевой интерфейс?

1 ответ1

0

Короче нет.

Маршрутизация основана на IP-адресе, порте и протоколе, а не на приложении. Это происходит на системном уровне, в сетевом стеке ОС.

Единственный теоретический способ заставить приложение сделать что-то отличное от всего остального (насколько я могу судить) - это если приложение - или все остальное - приостановить, а затем возобновить на некотором основании опроса. Когда приложение возобновляет работу, оно меняет маршрут; когда это приостановлено, это изменяет это назад.

Однако невозможно приостановить все процессы, не связанные с приложением, таким образом. (Даже если бы вы могли, я не могу представить ничего, кроме плохой производительности ни системы, ни приложения.)

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

Альтернативой может быть запуск приложения на виртуальной машине в той же операционной системе, такой как VirtualBox или что-то из VMware.

При этом виртуальная машина будет иметь собственный сетевой стек, который можно настроить независимо от хост-ОС, на которой она работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .