прив’язувати програмне забезпечення до різних мережевих інтерфейсів


37

У мене два різні мережеві інтерфейси, підключені до 2 мереж. Один є eth0, а другий - wlan0. Як я можу запропонувати програмному забезпеченню використовувати лише певний інтерфейс?

В основному я хочу, щоб Firefox використовував eth0, тому що це мережева мережа університету, і мені потрібно перейти на інтранет-сайти, інша - мережа Wi-Fi, відкрита для Інтернету, і я хочу прив’язати її до Chrome.

Я працюю і мені потрібно використовувати інтранет. Отже, eth0 - це мій вибір, але eth0 - це інтранет без доступу до Інтернету (очевидно). Оскільки я хочу отримати доступ до Інтернету, я підключений до wlan0 (університетський wifi для студентів).

Проблема полягає в тому, якщо я обоє підключився, інколи браузер шукає www.stackoverflow.com за допомогою eth0. Тому я хотів призначити браузеру використовувати лише певний інтерфейс.


Чи не маршрутизація краще рішення для ваших проблем ?. Я маю на увазі, що підключення до ubuntu.stackexchange.com повинні використовувати той самий інтерфейс будь-якої програми.
Хав'єр Рівера

Відповіді:


23

Ви не можете прив’язувати клієнтське програмне забезпечення до певних мережевих інтерфейсів, але ви можете сказати ядру, що ви хочете використовувати лише один мережевий інтерфейс для деяких IP-адрес, а інший - для всього іншого. Це називається "маршрутизація", і його можна налаштувати за допомогою команд /sbin/routeі /sbin/ip.

Якщо я правильно прочитав ваше запитання, ви хочете підключитися до Інтранет IP-адрес за допомогою інтерфейсу eth0та до Інтернету за допомогою інтерфейсу wlan0.

Якщо ви запускаєте команду ip route list, ви повинні побачити такий результат, як наступний (цифри будуть різними, а також у вас може бути більше рядків):

$ ip route list
10.60.44.0/25 dev eth0  proto kernel  scope link  src 10.60.44.39  metric 1 
192.168.80.0/21 dev wlan0  proto kernel  scope link  src 192.168.84.122  metric 2 
[...]
default via 10.60.44.1 dev eth0  proto static 

Перші два рядки розповідають про мережі, підключені до інтерфейсів, eth0і wlan0: мережевий трафік, спрямований на комп'ютери в цих мережах, буде направлений їм безпосередньо через відповідний інтерфейс.

Останній рядок повідомляє про те, що таке "маршрут за замовчуванням": якщо ваш комп'ютер хоче спілкуватися з комп'ютером у мережі, до якої він не приєднаний (наприклад, сервер eth0stackoverflow.com ), він спрямовуватиме трафік через , реалізуючи через хост 10.60.44.1( називається "шлюзом за замовчуванням").

Таким чином, для маршрутизації Інтернет-трафіку wlan0ви повинні переконатися, що останній рядок у ip route listвисновку містить щось на кшталт:

default via A.B.C.D dev wlan0 proto static

де A.B.C.DIP-адреса шлюзу в бездротовій локальній мережі. Якщо вихід не містить "dev wlan0", ви можете змінити його за допомогою команди:

sudo ip route change to default dev wlan0 via A.B.C.D

Визначити правильне A.B.C.Dможна wlan0двома способами:

  1. Загляньте в каталог /var/lib/dhcp3/: ви повинні знайти деякі dhclient-...-wlan0.leaseфайли. Відкрийте найновіший і знайдіть рядок із рядком option routerу ньому: решта рядка повідомляє вам IP-адресу A.B.C.D.

  2. Запитайте своїх адміністраторів локальної мережі. (Мабуть, найкраще все-таки зробити.)

За допомогою цієї конфігурації ви маєте можливість:

  • переглядати Інтернет wlan0
  • перегляньте свою Інтранет через те eth0, що вона знаходиться в одній мережі .

Якщо ваша інтрамережа охоплює декілька мереж, вам потрібно буде додати маршрути для них - і це, безумовно, щось, що вимагає взаємодії з адміністраторами локальної мережі. :-)


Просто з цікавості: що робити, якщо я хочу прив’язати dns (включити піддомени), а не IP-адреси?
dierre

1
@dierre Коротше кажучи: ви не можете, маршрутизація базується на IP-адресах. Довга історія починається з того, що маршрутизація - це мережевий рівень 3, тому вона навіть не буде знати про імена DNS, роздільна здатність яких відбувається далі в стеку протоколу мережі ...
Ріккардо Муррі,

так, так, я не мав на увазі під час маршрутизації. Я маю на увазі загалом. Чи можна це зробити? Прив’язка DNS до мережевих інтерфейсів?
dierre

@dierre Що саме ти хочеш зробити? Здійснення відповіді сервера DNS лише на певному мережевому інтерфейсі? Або клієнт DNS (тобто роздільна здатність DNS) використовує лише вибраний інтерфейс?
Ріккардо Муррі

1

2

"ip netns" створює простори мережних імен. Потім ви можете створити віртуальні інтерфейси (ip link add ... veth) та пов’язати їх з просторами імен.

Простори імен можуть бути налаштовані, наприклад, для використання різних маршрутів (таким чином, використовуючи різні інтерфейси)

Тоді ви можете запускати команди в цьому просторі імен, які будуть використовувати створений простір імен .. "ip netns exec NAME cmd ..."

Джерело: http://manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html

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