Linux - принциры маршрутизации

Автор : Алекс

В статье будут рассмотрены принципы маршрутизации. Маршрутизация для сети в целом представляет собой процесс перенаправления пакета от отправителя к получателю. Маршрутизация для конечного узла представляет собой процес перенаправления пакета с одного сетевого интерфейса на другой с использованием таблицы маршрутизации, содержащейся в ядре. Естественно, что говорить о маршрутизации в полном смысле этого слова можно только для узла, который содержит два и более сетевых интерфейса. Для узла с одним интерфейсом понятие маршрутиза в определенном плане теряет смысл.

Для небольших сетей целесообразнее ограничиться ручной настройкой маршрутизации (статической). Для сложных сетей целесообразно использовать демоны маршрутизации (динамическая настройка маршрутизации).В начале рассмотрим ручную маршрутизацию.

Допустим имеется сеть концигурации представленной на рисунке.

Рисунок. 1. Схема исследуемой сети

С точки зрения предмета статьи нас интересует то, как происходит маршрутизация на узле "Маршрутизатор". Проверить таблицу маршрутизации можно при помощи команды netstat - rn. Вот что выдаст эта команда на узле "Маршрутизатор".

Рисунок. 2. Таблица маршрутизации на начальном этапе

Из выведенной информации видно, что на узле есть два сетевых интерфейса. eht1 и eth0.В поле Destination указвывается адрес сети назначения или узла назначения. В поле Gateway указыввается адрес того узла в который следует посылать пакеты (то есть адрес следующего маршрутизатора). Если в этом поле стоит 0.0.0.0 то значит, что сеть подключена непосредственно к сетевому интерфейсу этого компьютера. Наш маршрутизатор знает пока о двух сетях. Остальную информацию необходимо добавить в ручную.

Получить информацию по каждому из сетевых интерфейсов на узле можно по команде ifconfig. На рисунке 3 приведен пример такой команды.

Рисунок 3. Концигурация узла eth0

Ручная или статическая настройка маршрутизации осуществляется командой route. Полные сведения о этой команде можно получить вызвав руководство по этой команде: man route.

Посотрев на рисунок 1. Легко видеть, что нам надо добавить еще 2 маршрута: первый для сети 192.168.3.0, второй для сети 192.168.4.0. Сделать это можно командами приведенными ниже.

Как видно доступ к сети 192.168.3.0 можно получить через "Маршрутизатор 2" он подключен к порту eth1 узла "Маршрутизатор" и в сети 192.168.2.0 имеет адрес 192.168.2.10 (см. рисунок 1). Поэтому команда будет следующей:

Рисунок 4.1 Добавление маршрута для сети 192.168.3.0

Также из рисунка 1 видно, что доступ к сети 192.168.4.0 можно получить через "Маршрутизатор 3" он подключен к порту eth0 узла "Маршрутизатор" и в сети 192.168.1.0 имеет адрес 192.168.1.12 (см. рисунок 1). Поэтому команда будет следующей:

Рисунок 4.2 Добавление маршрута для сети 192.168.4.0

Опция -net говорит о том, что это сеть. Для хостов используется опция -host. Маску сети задавать обязательно, это необходимо, для того, чтобы маршрутизатор смог отделить номер сети от номера узла.

Теперь командой netstat -rn роверим таблицу маршрутизации.

Рисунок 5. Новая таблица маршрутизации

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

Рисунок 6. Добавление шлюза по умолчанию

Все конечно хорошо, но при перезагрузке компютера данные о маршрутизации будут потеряны. Поэтому необходимо создать скрипт, который бы добавлял бы наши маршруты в таблицу маршрутизации. Разместить его можно в файле /etc/rc.d/init.d/adduser содержине скрипта приведено на рисунке 7.

Рисунок 7.1 Содержание скрипта запуска

Скрипт приведен в наиболе простом варианте.При желании его можно усложнить, например добавить информационную строку о том, что добавляются маршруты. Для скрипта запуска теперь необходимо задать права доступа и создать ссылку для автоматического запуска.

Рисунок 7.2 Создание автоматического запуска

Тепеперь после перезагрузки таблица маршрутизации будет нормальной. Приведеный выше метод является несовсем стандартным. Для добавления маршрутов в Red Hat есть спциальный файл /etc/sysconfig/static-routes из этого файла являются аргумантами для команды route. Если просто вставить туда аргументы, то интерфейсы не добавяться. Необходимо будет немного подправить скрипт запуска сети /etc/rc.d/init.d/network коснуться секции отвечающей за старт сервиса. Необходимо заменить откоментированные строки строками ниже. (см. рис. 7.3)

Рисунок 7.3 Изменние файла /etc/rc.d/init.d/network

В результате сделанных изменений теперь в файл /etc/sysconfig/static-routes можно писать аргументы команы route в прямом виде. Тогда формат файла может быть например таким:

Рисунок 7.4 Формат файла /etc/sysconfig/static-routes

Выбор варианта которым вы воспользуетесь за вами.

Как мы уже говорили ранее для сложных стетей проще использовать динамическую маршрутизацию, то есть маршрутизацию при помощи демонов. Демоном маршрутизации по умолчанию является routed. Его установку мы и рассмотрим.

В ASPLinux 7.3 Server Edition исходный пакет этого демона, расположен на втором диске перейдя в каталог де расположены rpm пакеты даем следующую команду.

Рисунок 8. Установка демона routed

После установки демона необходимо настроить его замуск. Для этого необходимо создать символическую ссылку на скрипт запуска и установить права доступа на него:

Рисунок 9. Настройка запуска демона routed

Если необходимо демон можно запускать и в ручную, для этого необходимо ввести следующую команду:

Рисунок 10. Запуск демона в ручную

Проверить, запущен ли демон можно посмотрев список процессов при помощи команды ps ax

Рисунок 11. Проверка работы демона (фрагмент).

Как видно из последней строчки в рисунке 11 демон запущен.

Несмотря на то, что демоном по умолчанию является демон routed, существует другой более "продвинутый" демон это демон gated взять его можно на узле http://www.gated.org

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


 
 
Hosted by uCoz