Опубликован: 26.07.2011 | Уровень: для всех | Доступ: свободно
Лекция 10:

Маршрутизация в Linux

< Лекция 9 || Лекция 10: 123 || Лекция 11 >

Пример 10.5.Добавление альтернативного маршрута для узла-источника на шлюзе.

Пусть шлюз локальной сети 192.168.1.0/24 имеет два сетевых интерфейса c IP-адресами 192.168.1.1/24 и 192.168.56.102/24 соответственно, маршрут по умолчанию — 192.168.56.1. Необходимо, чтобы шлюз отправлял трафик узла 192.168.1.10 по альтернативному маршруту 192.168.56.2.

Для решения данной задачи [ 27 ] , во-первых, добавим в файл /etc/iproute2/rt_tables описание дополнительной таблицы маршрутизации (номер и имя таблицы выбираются произвольно, в данном случае 200 и altroute ):

# echo 200 altroute  >>  /etc/iproute2/rt_tables

Во-вторых, добавим правило направления исходящих пакетов узла 192.168.1.10 в таблицу altroute:

# ip rule add from 192.168.1.10 lookup altroute

Список правил после выполнения данной команды:

# ip rule show
0:  from all lookup local 
32765:  from 192.168.1.10 lookup altroute 
32766:  from all lookup main 
32767:  from all lookup default

В третьих, нужно в таблицу altroute добавить соответствующий маршрут:

# ip route add default via 192.168.56.2 dev eth1 table altroute
# ip route flush cache

Содержимое таблицы altroute:

# ip route show table altroute
default via 192.168.56.2 dev eth1

В результате на шлюзе исходящие пакеты узла 192.168.1.10 соответствующим правилом будут отправляться в таблицу altroute, в которой как маршрут по умолчанию, указан узел 192.168.56.2. В тоже время исходящие пакеты других узлов сети 192.168.1.0/24 будут маршрутизироваться в соответствии с маршрутами, указанными в таблице main.

Ключевые термины

Статическая маршрутизация — такой способ маршрутизации, при котором все необходимые маршруты устанавливаются администратором вручную (с помощью команд и конфигурационных файлов).

Маршрутизация по назначению (destination-routing) — классический подход к маршрутизации, при котором используется адрес назначения в качестве аргумента при принятии решения какому шлюзу передавать пакет.

Маршрутизация на основе политик (policy-routing)маршрутизация на основе различных параметров: адреса источника, вид и порт транспортного протокола и т. д.

Маршрутизация по источнику (source-based routing) — вариант маршрутизации на основе политик, использующий адрес отправителя для принятия решения о маршрутизации.

Краткие итоги

  1. Сетевая подсистема Linux может обрабатывать как пакеты локального узла (по умолчанию), так и пакеты, не принадлежащие данному узлу (режим маршрутизатора). Обычно маршрутизатор имеет два и более физических сетевых интерфейсов или хотя бы два и более IP-адресов из разных сетей. Необходимая для режима маршрутизатора функция пересылки пакетов (forwarding) требует дополнительной активации в настройках ядра Linux.
  2. Выбор локального адреса для исходящих соединений в большинстве случаев системой осуществляется автоматически, исходя из имеющихся IP-адресов и таблицы маршрутизации. Синтаксис команды ip route позволяет повлиять на выбор локального IP-адреса при соединении с удаленными системами. Для этого служит параметр src с указанием предпочитаемого IP-адреса (должен быть установлен на сетевом интерфейсе компьютера) для отправки пакетов на направление, определяемое в команде префиксом маршрутизации. Кроме того, сетевое программное обеспечение обычно имеет настройки, позволяющие выбирать IP-адрес для исходящих подключений.
  3. Управление расширенными функциями маршрутизации в Linux осуществляется путем манипуляций дополнительными таблицами маршрутизации и правилами, определяющими порядок прохождения пакетов через эти таблицы. Для управления списком правил используется команда ip rule.

Упражнения

В среде VirtualBox реализовать стенд для изучения маршрутизации, состоящий из двух виртуальных машин: основной ВМ и дополнительной ВМ.

Основная ВМ предназначена для реализации функции маршрутизации пакетов удаленных сетей. Непосредственно к ней подключены сети: 192.168.0.0/24, 192.168.1.0/24 и 192.168.2.0/24 ("физические" интерфейсы: eth1 с IP-адресом 192.168.0.1, eth2 c IP-адресом 192.168.1.1, eth3 c IP-адресом 192.168.2.1). Последние два интерфейса используются для связи с удаленными сетями (шлюз по умолчанию — 192.168.1.2, альтернативный маршрут — 192.168.2.2).

Примечание: Системы 192.168.1.2 и 192.168.2.2 не реализованы, имитация их присутствия осуществлена путем добавления в основную ВМ статических arp-записей для адресов 192.168.1.2 и 192.168.2.2 (при наличии статической записи система не использует протокол arp и сразу отправляет фреймы на указанный MAC-адрес).

Дополнительная ВМ предназначена для тестирования настроек маршрутизатора и межсетевого экрана путем отсылки тестовых IP-пакетов. Сеть 192.168.0.0/24 объединяет виртуальные машины (для дополнительной ВМ — IP-адрес 192.168.0.2 на интерфейсе eth1, в качестве шлюза по умолчанию - 192.168.0.1).

Все сетевые адаптеры включены во внутреннюю сеть VirtualBox, которая работает в режиме концентратора.

Примечание: Так как при подключению к концентратору фреймы получают все устройства в сети, то при анализе трафика следует использовать команду tcpdump c указанием интерфейса мониторинга (-i) и не включая "беспорядочный" режим (-p):
# tcpdump -nep -i eth2
Примечание: На практике включение несколько сетевых адаптеров системы в один сегмент физического или канального уровня используется для решения специальных задач: балансировки сетевой нагрузки, обеспечения отказоустойчивости и т.д. Для маршрутизации нескольких IP-подсетей, расположенных в одном широковещательном домене, достаточно одного сетевого адаптера и системной поддержки логических сетевых интерфейсов.

1.Установить основной IP-адрес (192.168.0.2 /24) и шлюз по умолчанию (192.168.0.1) на дополнительной ВМ:

# ip addr add dev eth1 local 192.168.0.2 /24 broadcast 192.168.0.255 
# ip link set eth1 up 
# ip route add default via 192.168.0.1

2.Установить в основной ВМ:

а)На интерфейс eth1 IP-адрес 192.168.0.1 /24

б)На интерфейс eth2 IP-адрес 192.168.1.1 /24

в)На интерфейс eth3 IP-адрес 192.168.2.1 /24

г)В качестве шлюза по умолчанию IP-адрес: 192.168.1.2

д)Внести статические записи в ARP-таблицу относительно адресов 192.168.1.2 и 192.168.2.2 (для их эмуляции):

# ip neighb  add 192.168.1.2 lladdr 00:00:00:00:00:AA dev eth2
# ip neighb  add 192.168.2.2 lladdr 00:00:00:00:00:BB dev eth3

е)Включить в ядре ОС функцию маршрутизации:

# echo 1 > /proc/sys/net/ipv4/ip_forward

3.Проверить прохождения пакетов от узла 192.168.0.2 по маршруту по умолчанию:

а)В основной ВМ настроить прослушивание трафика на интерфейсе eth2, идущего на MAC-адрес узла 192.168.1.2:

# tcpdump -nep -i eth2

б)В дополнительной ВМ осуществить отправку тестовых ICMP-пакетов гипотетическому узлу 192.168.90.10 с IP-адреса 192.168.0.2:

# ping 192.168.90.10

в)Если все манипуляции проделаны правильно, то в дополнительной ВМ будет отображаться сообщение о недоступности узла 192.168.90.10, а в основной ВМ в TCPDump будут отображаться исходящие фреймы на узел 00:00:00:00:00:AA, содержащие пакеты с исходящим IP-адресом 192.168.90.10.

4.Установить статический маршрут до сети 192.168.100.0 /24 через альтернативный шлюз 192.168.2.2:

а) В основной ВМ:

# ip route add to 192.168.100.0/24 via 192.168.2.2

б)Запуская TCPDump на интерфейсах eth1 и eth2 основной ВМ и используя команду ping в дополнительной ВМ убедиться, что трафик на сеть 192.168.100.0 /24 идет на интерфейс 192.168.2.2, а весь остальной трафик - на 192.168.1.2.

5.В основной ВМ установить маршрут до узла 192.168.101.11 через альтернативный шлюз 192.168.2.2.

6.В основной ВМ установить для пакетов узла 192.168.0.5 маршрут по умолчанию через альтернативный шлюз 192.168.2.2 (пример 10.5). В дополнительной ВМ установить дополнительный адрес 192.168.0.5 и проверить работоспособность установленного маршрута.

< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Елена Сапегова
Елена Сапегова

для получения диплома нужно ли кроме теоретической части еще и практическую делать? написание самого диплома требуется?

Сергей Пархоменко
Сергей Пархоменко
Россия, Ростов-на-Дону, ЮФУ (ДГТУ), 2008