Налагодження роботи з кількома Nics


16

У мене є сервер Ubuntu 12.04 з 4 мережевими адаптерами. Мені потрібно використовувати кожен NIC для окремої функції. Ось опис моєї настройки:

etho = 10.234.0.2 netmask = 255.255.255.252 gw = 10.234.0.1 This is on vlan 234
eth1 = 10.235.0.2 netmask = 255.255.255.252 gw = 10.235.0.1 This is on vlan 235
eth2 = 10.236.0.2 netmask = 255.255.255.252 gw = 10.236.0.1 This is on vlan 236
eth3 = 10.237.0.2 netmask = 255.255.255.252 gw = 10.237.0.1 This is on vlan 237

Мені потрібно мати можливість направляти трафік на окремі IP-адреси та з них для окремих веб-служб. тобто 10.235.0.2 - веб-сайт, 10.236.0.2 - інший сайт, а 10.237.0.2 - третій сайт. 1-й IP призначений для управління сервером.

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

Ось що є в моєму /etc/network/interfacesфайлі:

auto lo
iface lo inet loopback

# WWW Management
auto eth0
iface eth0 inet static
address 10.234.0.2
netmask 255.255.255.252
gateway 10.234.0.1
nameseervers 10.230.1.103, 10.230.70.70

# WWW
auto eth1
iface eth1 inet static
address 10.235.0.2
netmask 255.255.255.252
gateway 10.235.0.1

# WTB
#auto eth2
#iface eth2 inet static
#address 10.236.0.2
#netmask 255.255.255.252
#gateway 10.236.0.1

# Moodle
#auto eth3
#iface eth3 inet static
#address 10.237.0.2
#netmask 255.255.255.252
#gateway 10.237.0.1

Останні дві мережі я відключив лише для полегшення плутанини.

Заздалегідь дякую за всю допомогу та коментарі та пропозиції.

Відповіді:


15

Зробивши нормальну конфігурацію просто eth0, я повернувся і додав config для eth1. Щойно eth0 вгору таблиця маршруту:

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

Але як тільки я підняв eth1, порядок операторів маршруту за замовчуванням визначав, який інтерфейс завжди використовувався. Як показано нижче, трапляється вибрати маршрут eth1 до шлюзу 192.168.1.65.

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.1.65 dev eth1 metric 100
default via 192.168.0.97 dev eth0 metric 100

лише одна заява про шлюз

Першою проблемою може бути додатковий маршрут за замовчуванням 192.168.1.65. Він з'являється там, якщо визначення eth1 в / etc / network / interfaces має вираз "шлюз 192.168.1.65". Тому видаліть будь-який додатковий оператор шлюзу та відмовтеся від інтерфейсу:

# ifdown eth1
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

налаштування нової таблиці маршрутизації

Створіть нову окрему таблицю маршрутизації, що містить маршрут за замовчуванням, відповідний для всього трафіку, що витікає з eth1. Номер таблиці тут не важливий; 101 - це просто не основна таблиця маршрутизації. Зробіть це за допомогою команди "post-up" для конфігурації eth1 в / etc / network / інтерфейсах. Додати лише одну публікацію на eth1; Не додайте його до жодного з інтерфейсів eth1:.

post-up ip route add default via 192.168.1.65 dev eth1 table 101

Відмов ети1. Основна таблиця маршрутизації залишається незмінною, і таблиця 101 буде містити маршрут за замовчуванням через 192.168.1.65, якщо eth1 підвищено.

# ifdown eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101   (ie, table is empty, no output)
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101
default via 192.168.1.65 dev eth1

нове правило маршрутизації

Додайте правило маршрутизації, щоб використовувати таблицю 101 для вибору маршруту за замовчуванням для пакетів, які повинні вийти eth1.

# ip rule add from 192.168.1.64/27 lookup 101
# ip rule show
0:     from all lookup local
32765: from 192.168.1.64/27 lookup 101
32766: from all lookup main
32767: from all lookup default

Додайте також правило до /etc/network/interfacesфайлу:

post-up ip rule add from 192.168.1.64/27 lookup 101

Тепер не забудьте додати очищення для видалення маршруту та правила, коли інтерфейс вийде з ладу:

post-down ip rule del from 192.168.1.64/27
post-down ip route del default via 192.168.1.65 table 101

[EDIT for ubuntu 16.04+] Як зазначено тут, і з тесту, який я зробив з цієї довідки, ip route2 змінив його структуру команд. Для виготовлення роботи вам доведеться трохи адаптувати, щоб зробити в порядку, як man ip очки .

up ip route add default table 101 dev eth1 via 192.168.1.65
up ip rule add from 192.168.1.64/27 lookup 101
down ip rule del from 192.168.1.64/27
down ip route del default table 101 via 192.168.1.65

Або ви закінчитеся після команди ifdown - ifup із повідомленням про помилку @ifdown командою (стандартне повідомлення про те, що периферійні пристрої не налаштовані правильно) та @ifup відсутність маршруту в таблиці 101.


Приємно, але я не люблю використовувати rc.local .. шукаючи більш елегантний заключний крок ..
drAlberT

Це було відредаговане я гадаю :) ..
drAlberT

Чи є насправді файл / etc / інтерфейси, чи це помилка друку?
користувач100464

@ user100464/etc/network/interfaces
Zenexer

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