Сетевое взаимодействие с несколькими Nics

16

У меня есть сервер Ubuntu 12.04 с 4 сетевыми адаптерами в нем. Мне нужно использовать каждый сетевой адаптер для отдельной функции. Вот описание моей установки:

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 является третьим сайтом. Первый 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

Я отключил последние две сети, чтобы облегчить путаницу.

Заранее благодарим за помощь и комментарии и предложения.

    
задан user168645 19.06.2013 в 23:27
источник

1 ответ

14

После нормальной настройки только eth0 я вернулся и добавил конфигурацию для 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 имеет инструкцию «gateway 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 / interfaces. Добавьте только один пост на eth1; Не добавляйте его ни к одному из подэлементов eth1:

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

Отказов eth1. Основная таблица маршрутизации не изменяется, а таблица 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 для 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.

    
ответ дан Craig Constantine 20.06.2013 в 11:39
источник