Как можно заставить приложение (например, Firefox) использовать определенный сетевой интерфейс?

20

У меня два интерфейса: eth0 и wlan0 на ноутбуке.

Возможные варианты использования:

  • eth0 предоставляет мне доступ в Интернет, а wlan0 в настоящее время подключен к маршрутизатору, который не имеет подключения к Интернету. В целях разработки мне нужно подключиться к wlan0 по умолчанию, но использовать eth0 для серфинга
  • eth0 и wlan0 оба подключены к Интернету. Для торрент-приложения eth0 следует использовать для скорости, но для переносимости ноутбука SSH должен иметь соединение через wlan0.
  • eth0 - проводное соединение, wlan0 - беспроводное. Значимые данные должны передаваться через eth0, но другой трафик также может передаваться через wlan0.

Есть ли способ заставить приложения (например, nc.traditionalили firefox) использовать определенный сетевой интерфейс? Обертка вроде бы example-wrapper eth0 programтоже подойдет, если такая программа существует. Было бы неплохо, если бы это можно было настроить в Firefox (во время выполнения). Я хотел бы избежать решений IPTables, если это возможно.

Lekensteyn
источник
4
это также полезно для нескольких подключений к Интернету, когда один из них делает торрент, а другой используется для серфинга.
Iamgopal
Вы хотите использовать разные маршруты в зависимости от протокола / приложения, для этого вам понадобится iptables.
Жоау Пинту
1
Я не знаю, как вы можете сделать это без чего-то, что отображает ваш трафик layer7 (приложения) на определенный порт или иным образом фильтрует на основе некоторой информации приложения более высокого уровня (что потребовало бы проверки трафика). Таким образом, в то время как iptables определенно не требуется, любое решение, включающее оболочку, должно каким-то образом взаимодействовать с политикой tcp или ip. Я не знаю, как сделать это без сети layer2 или layer3, которая направляет трафик куда-то еще.
belacqua

Ответы:

1

То, что вы ищете, это прокладка LS_PRELOAD, см . Запись блога Дэниела Ланге для подробного объяснения и примера кода.

Боб Лебин
источник
3
Добро пожаловать в Спросите Ubuntu! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Stormvirux
1

Вы можете использовать более сложный подход маркировки соединений и политики маршрутов.
Это будет хорошо работать, если у вас есть пользователь, который запускает одно программное обеспечение и пыльник.
Таким образом, вы можете пометить соединения одного пользователя и использовать для него специальную таблицу маршрутизации, в то время как все остальные будут использовать по умолчанию.
Базовый документ, чтобы понять все это, находится по адресу: http://www.lartc.org/lartc.html.
Пример двух соединений вы можете увидеть здесь: /unix/58635/iptables-. set-mark-route-diferent-ports-through-different-interfaces
Вы можете использовать модуль iptables "owner", который будет отмечать соединения, чтобы разрешить политику маршрутизации.

Elico
источник
Политика маршрутизации работает для разных пользователей, но не для приложения, работающего под одним пользователем (как описано в OP). LD_PRELOADкажется, что путь (не для вредоносных программ / из соображений безопасности), может быть, кто-то может разработать пост Боба Лебинса?
Лекенштейн
0

Вот пример решения. Он использует сервер SOCKS, настроенный на текущем компьютере для маршрутизации соединений. Каждое приложение должно быть настроено на использование каждого сервера.

Вадим Рутковский
источник
3
Это похоже на HTTP-прокси, работает ли он с другими протоколами, как соединение между двумя экземплярами netcat?
Лекенштейн
0

Вы также можете использовать рабочую станцию ​​VMware для совместного использования различных сетевых интерфейсов, которые я очень много делаю, чтобы загрузить с одного интерфейса, а другой оставить для моего Netflix.

Вам нужно настроить ethX и wlanX на VMware, но как только вы настроите его, вы готовы к загрузке или просмотру.

Это довольно гладко. Вы также можете использовать межсетевой экран для соединения интерфейсов, который также прекрасно работает.

тошнотворный
источник
Хотя он работает для этого конкретного приложения, к сожалению, его нельзя использовать с другими приложениями вне виртуальной машины, такими как Firefox.
Лекенштейн