Як програма (як 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, якщо це можливо.


4
це також корисно для безлічі підключень до Інтернету, коли один робить торрент, а інший використовується для серфінгу.
iamgopal

Ви хочете використовувати різні маршрути на основі протоколу / програми, для цього вам знадобляться iptables.
Жоао Пінто

1
Я не знаю, як ви можете це зробити без чогось, що відображає трафік вашого шару7 (додатка) на певний порт або іншим чином фільтрує на основі інформації про додаткові програми більш високого рівня (що вимагало б перевірки руху). Отже, хоча iptables конкретно не потрібні, будь-яке рішення, що включає обгортку, мусить якось взаємодіяти з політикою tcp або ip. Я не знаю, як це зробити без мережі2 або шару3, яка спрямовує трафік кудись інше.
belacqua

Відповіді:


1

Що ви шукаєте, це LS_PRELOAD прокладка, див . Запис у блозі Даніеля Ланге для детального пояснення та прикладу коду.


3
Ласкаво просимо до Ask Ubuntu! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Stormvirux

1

Можна використовувати більш складний підхід до маркування з'єднань та політики маршрутів.
Це буде добре, якщо у вас є користувач, який запускає одне програмне забезпечення та пральник.
Таким чином ви можете відзначити з'єднання одного користувача та використовувати для нього певну таблицю маршрутизації, тоді як всі інші використовуватимуть стандартну.
Основний документ, щоб зрозуміти все це: http://www.lartc.org/lartc.html
Також приклад для двох з'єднань ви можете побачити тут: /unix/58635/iptables- set-mark-route-diferent-ports-through-different-interface
Ви можете використовувати модуль iptables "власник", який позначатиме з'єднання, щоб дозволити політику маршрутизації.


Маршрутизація політики працює для різних користувачів, але не для програми, що працює під одним користувачем (як описано в ОП). LD_PRELOADЗдається, що слід піти (не для шкідливих програм / з міркувань безпеки), можливо, хтось міг би розробити посаду Боб Лебінс?
Лекенштейн

0

Ось зразок рішення. Він використовує сервер SOCKS, налаштування на поточній машині для маршруту доходів. Кожна програма повинна бути налаштована на використання кожного сервера.


3
Це схоже на проксі-сервер HTTP, чи він працює з іншими протоколами, як з'єднання між двома екземплярами netcat?
Лекенштейн

0

Ви також можете використовувати машину робочої станції VMware для обміну різними мережевими інтерфейсами, які я дуже багато завантажую з одного інтерфейсу, а інший залишаю для свого Netflix.

Вам потрібно налаштувати і etX, і wlanX на VMware, але після налаштування ви готові до завантаження чи перегляду.

Це досить гладко. Ви також можете використовувати брандмауер для зв'язку інтерфейсів, що також чудово працює.


Хоча він працює для цього конкретного додатка, він, на жаль, не використовується в інших додатках поза VM, таких як Firefox.
Лекенштейн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.