Автор работы: Пользователь скрыл имя, 19 Марта 2013 в 04:28, лабораторная работа
Маршрутизация" (она же "роутинг") - это технология, позволяющая доставить информацию в пункт назначения, передавая её от одного маршрутизатора до другого. Здесь мы рассмотрим как настроить IP-роутеры для того, чтобы они правильно передавали друг другу пакеты.
"IP" - кроме IP маршрутизируемыми протоколами являются IPX и DecNet.
"Статическая" - кроме нее бывает динамическая маршрутизация, когда таблицы маршрутизации составляются/задаются не администратором-человеком, а программами, обменивающимися информацией о состоянии каналов связи и о доступности сетей. Впрочем, таблицы маршрутизации, составленные этими программами, ничем принципиально не отличаются от статических таблиц, а в интервалах между изменениями маршрутизация работает как статическая.
Цель: изучить работу технологию маршрутизации.
Вид работы: фронтальный
Время выполнения: 3 часа
Теоретические сведения
Обозначения:
Следует помнить, что IP-адрес присваивается не компьютеру, а интерфейсу (сетевому выходу либо последовательному порту). В принципе, можно дать нескольким интерфейсам один номер; можно также присвоить несколько адресов одному интерфейсу.
В сегменте сети все машины имеют IP-адреса с одинаковым адресом сети и одинаковой маской. В одной локальной сети можно совместить две и больше разных IP-сетей, они даже могут знать друг о друге и нормально общаться, но это всё-таки будут две разные сети.
Принято следующее деление в зависимости от значения старшего байта IP-номера:
0..127 - сети класса "A" по 2^24 адресов с маской 0xFF000000;
128..191 - сети класса "B" по 2^16 адресов с маской 0xFFFF0000;
192..223 - сети класса "C" по 2^8 адресов с маской 0xFFFFFF00;
224..239 - сети класса "D" для multicast (групповой) рассылки;
остальные пока зарезервированы.
Многие программы по адресу автоматически определяют класс сети, хотя это можно поправить вручную. В принципе никто не мешает разбить сеть на две или больше подсетей с любыми масками, но организациям, как правило, выделяют адреса блоками, соответствующими классам "A", "B" и "C" - это связано с системой DNS, позволяющей узнать доменное имя машины по её IP-адресу.
Сеть класса "A" с адресом 127 (127.*.*.*) - loopback, т.е. предназначена для общения компьютера с самим собой. IP-номер 127.0.0.1 обозначается "loopback" или "localhost" и каждым компьютером рассматривается как "я сам". IP-пакеты с адресом источника и/или адресом назначения, принадлежащим пулу "127.*.*.*", вообще не должны распространяться по сетям; появление таких пакетов следует рассматривать как атаку.
В любой сети адрес (IP-адрес и маска) является адресом всей сети и не может быть присвоен никому конкретно. Адрес (IP-адрес или не маска), являющийся последним номером в сети, предназначен для broadcasting (широковещательных) сообщений, которые доставляются всем машинам сегмента сети. Соответственно, при выделении группы адресов в сеть два Адреса становятся недоступны.
В Unix команды настройки сетевых интерфейсов, как правило, запускаются из файла /etc/rc или запускаемых из него файлах, а в M$-Windows - загрузчиком операционной системы в соответствие с system.ini или registry.
Главному шлюзу в сети нужно присваивать первый (наименьший) номер в сети (нулевой, недоступен). Если в сети присутствует второй шлюз, через который подсоединен другой сегмент, то этому шлюзу (промежуточному маршрутизатору) будет присваиваться последний (наибольший) номер в сети.
Рабочая станция ws.5 (впрочем, это может быть и сервер - с точки зрения IP-маршрутизации нет никакой разницы) конфигурируется просто: мы присваиваем ей IP-номер X.Y.Z.5, маску 255.255.255.0 и указываем шлюз X.Y.Z.1 (конечно, в реальности надо настраивать много чего ещё, то оно всё не имеет отношения к IP-маршрутизации). Всё это можно сделать штатными инструментами - во FreeBSD программой /stand/sysinstall, в Windows - через свойства сетевого окружения. Интерфейс loopback конфигурируется автоматически (правда, во FreeBSD можно сделать так, что loopback не сконфигурируется; но это не даст только лишние проблемы).
Присвоение сетевому интерфейсу IP-адреса X.Y.Z.5 с маской 255.255.255.0 создаёт в таблице маршрутизации две записи. Одна предписывает направлять IP-пакеты с IP-адресом назначения X.Y.Z.5 на более подробную разборку вверх по стеку протоколов: анализируется принадлежность пакета к протоколу TCP, UDP, ICMP или другому; для TCP и UDP происходит анализируется номер порта; и в зависимости от этого IP-пакет направляется программе, которая должна его обрабатывать. Вторая запись предписывает направлять IP-пакеты с IP-адресами X.Y.Z.* прямо через этот интерфейс в локальную сеть с использованием протокола ARP.
Указание в качестве шлюза IP-адреса X.Y.Z.1 создаёт запись, в соответствии с которой все пакеты (все, потому что любой адрес подходит под 0.0.0.0/0) будут отправляться на машину, имеющую интерфейс X.Y.Z.1. Информация о том, как можно добраться до интерфейса X.Y.Z.1, содержится в настройке IP-номера/маски, которая определила способ доступа ко всем машинам X.Y.Z.* через сетевой интерфейс.
Таким образом, у нас сложилась примерно такая ситуация:
Вообще, система маршрутизации
(за исключением предельно
Собственно, так ненавязчиво мы познакомились с тремя видами IP-маршрутизации:
"На себя" - все
IP-пакеты с адресом
"В локальную сеть" - при
отправке пакета он
"Следующему марщрутизатору". В простейших случаях в сети стоит единственный шлюз наружу, через который передается все, кроме предназначенного в локальную сеть; рабочие станции (и серверы) в сети не интересуются устройством сети вне локальной и предоставляют этому шлюзу самому решить, куда отправить тот или иной IP-пакет. В большинстве случаев шлюз из локальной сети наружу тоже имеет единственный шлюз "ещё более наружу", с которым связан либо выделенным каналом (физическим модемным или виртуальным в сети X.25 или FrameRelay) либо, реже, локальной сетью.
Сетевому интерфейсу шлюза надо присвоить IP-номер X.Y.Z.1 и маску 255.255.255.0. На самом деле, у нашего шлюза может (и должно) быть много интерфейсов; на рисунке это отображено тем, что шлюз как бы "недорисован". Ещё раз обращаю внимание на то, что номер и маска сети совпадают для всех машин этого сегмента.
Для иллюстрации различных аспектов маршрутизации мы будем использовать следующий пример использования команды netstat:
% netstat -r
Routing tables
Destination Gateway Flags Refs Use Netif Expire
default outside-gw UGSc 37 418 ppp0
localhost localhost UH 0 181 lo0
test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77
10.20.30.255 link#1 UHLW 1 2421
example.com link#1 UC 0 0
host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0
host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>
host2.example.com link#1 UC 0 0
224 link#1 UC 0 0
В первых двух строках задаются маршрут по умолчанию и маршрут на localhost.
Интерфейс (колонка Netif), который указан в этой таблице маршрутов для использования с localhost и который назван lo0, имеет также второе название, устройство loopback. Это значит сохранение всего трафика для указанного адреса назначения внутри, без посылки его по сети, так как он все равно будет направлен туда, где был создан.
Следующими выделяющимися
FreeBSD добавит также все маршруты
к подсетям для локальных
В обеих этих группах (хосты и подсети локальной сети) маршруты конфигурируются автоматически даемоном, который называется routed. Если он не запущен, то будут существовать только статически заданные (то есть введенные явно) маршруты.
Строка host1 относится к нашему хосту, который известен по адресу Ethernet. Так как мы являемся посылающим хостом, FreeBSD знает, что нужно использовать loopback-интерфейс (lo0) вместо того, чтобы осуществлять посылку в интерфейс Ethernet.
Две строки host2 являются примером того, что происходит при использовании алиасов в команде ifconfig(8) (обратитесь к разделу об Ethernet для объяснения того, почему мы это делаем). Символ => после интерфейса lo0 указывает на то, что мы используем не просто интерфейс loopback (так как это адрес, обозначающий локальный хост), но к тому же это алиас. Такие маршруты появляются только на хосте, поддерживающем алиасы; для всех остальных хостов в локальной сети для таких маршрутов будут показаны просто строчки link#1.
Последняя строчка (подсеть назначения 224) имеет отношение к многоадресной посылке, которая будет рассмотрена в другом разделе.
И наконец, различные атрибуты каждого маршрута перечисляются в колонке Flags. Ниже приводится краткая таблица некоторых из этих флагов и их значений:
U |
Up: Маршрут актуален. |
H |
Host: Адресом назначения является отдельный хост. |
G |
Gateway: Посылать все для этого
адреса назначения на |
S |
Static: Маршрут был настроен вручную,
а не автоматически |
C |
Clone: Новый маршрут сгенерирован
на основе указанного для |
W |
WasCloned: Указывает на то, что маршрут
был автоматически |
L |
Link: Маршрут включает ссылку на аппаратный адрес Ethernet. |
Когда локальной системе нужно установить соединение с удаленным хостом, она обращается к таблице маршрутов для того, чтобы определить, существует ли такой маршрут. Если удаленный хост попадает в подсеть, для которой известен способ ее достижения (маршруты типа Cloned), то система определяет возможность подключиться к ней по этому интерфейсу.