Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое указание по выпол лаб.работ.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

Лабораторная работа №3. Использование генератора трафика Ostinato

Краткая теоретическая справка

Генераторы трафика являются необходимыми инструментами для проверки работоспособности сетей как на этапе тестовых испытаний, так и при разработке новых услуг и технологий. Генераторы трафика бывают как программно-аппаратными, так и программными. Программно-аппаратные генераторы трафика обычно крайне дороги, являются закрытыми решениями, но при этом обладают специальным функционалом, ориентированным на тип сети. Что касается программных генераторов, то среди них есть достаточно большое количество предложений с открытым кодом, но позволяющих конструировать только пакетный трафик (в этом случае их иногда называют генераторами пакетов). Для ознакомления с принципами генерации трафика в лабораторной работе предлагается использовать одно из таких решений Ostinato [1].

Ostinato представляет собой кроссплатформенный open-source генератор пакетного трафика с графическим пользовательским интерфейсом, построенный на базе клиент-серверной архитектуры. Данный генератор позволяет передавать данные несколькими потоками и имеет широкие возможности для настройки поведения трафика и различных опций используемых сетевых протоколов. Генератор трафика Ostinato предустановлен на компьютере управления mnlin. Для начала работы с генератором, подключитесь к mnlin с помощью KVM-переключателя и запустите Ostinato из терминала с правами суперпользователя:

root@mnlin# ostinato &

Повышенные привилегии необходимы для получения доступа к сетевым устройствам mnlin.

Основной интерфейс программы разделен на три окна (рис.1): порты (ports list), потоки (stream list) и статистика (statistics).

Рис. 1 – Интерфейс Ostinato

В окне портов представлена группа портов [127.0.0.1] и зеленый индикатор напротив нее, что обозначает доступность группы портов. Ostinato является клиентским приложением и может работать с несколькими различными серверами (Drone). В данном случае клиент и сервер расположены на одном компьютере и обмениваются данными через сокет 127.0.0.1:7878.

Открыв группу портов (нажав на +) можно увидеть все доступные на данной машине порты. Выберите порт, с которого будет производиться отправка пакетов в сеть. Нажатием правой кнопки мыши в окне потоков откройте меню и создайте новый поток (new stream). Дважды кликнув на значке созданного потока, вы получите доступ к конфигуратору потока.

На первой вкладке Protocol Selection (рис.2) конструируйте будущий пакет в соответствии с моделью OSI. На рисунке 2 необходимые пункты помечены красным.

Рис. 2 – Вкладка Protocol Selection

Вкладка Protocol Data (рис. 3) позволяет настроить некоторые специфичные поля выбранных протоколов, такие как, например, адреса источника и получателя в протоколе IP, порты в UDP и т.п.

Рис. 3 – Вкладка Protocol Data

Примечание.: При конструировании пакета в реальной сети задавайте реальный MAC-адрес назначения в поле Media Access Protocol!

На вкладке Stream Control (рис. 4) выставляются опции потока. Например, можно настроить генерацию трафика пачками или отдельными пакетами, количество пакетов в секунду/битовую скорость потока, поведение потока и т.д.

Рис. 4 – Вкладка Stream Control

Создав несколько различных потоков для данного порта и выставив для каждого из них опцию Goto Next Stream в поле After this stream, можно организовать последовательную передачу этих потоков в сеть.

Также возможно организовать одновременную смешанную передачу. Для этого необходимо в окне портов выбрать требуемый, правой кнопкой мыши открыть контекстное меню и в пункте Port Configuration изменить режим работы передачи порта на Interleaved Streams (смешанные потоки). Теперь все созданные для данного порта потоки будут передаваться на сетевой интерфейс одновременно (рис. 5).

Рис. 5 – Перевод порта в смешанный режим передачи

Примечание: В смешанном режиме вместо количества передаваемых пакетов указывается скорость передачи пакетов/пачек или битовая скорость потока. Соответственно, передача трафика будет продолжаться до тех пор, пока не будет остановлена нажатием кнопки Stop Tx.

Вкладка Packet View позволяет просмотреть получившийся пакет в «собранном» виде (рис. 6).

Рис. 6 – Вкладка Packet View

После окончания настройки потока нажмите Ok и передайте изменения на сервер кнопкой Apply. Если этого не сделать, генерирующий демон Drone не получит информацию о произошедших изменениях.

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

Рис. 7 – Запуск генератора

В окне статистики выберите тот же порт, для которого вы конструировали поток (например, нажмите Port 0-0, если вы настроили Port Group 0 и в ней Port 0) и кнопкой Start Tx запустите генерацию трафика.

Задание на лабораторную работу:

  1. Создайте 3 произвольных потока данных, состоящих из пакетов различных протоколов, заданных общим количеством пакетов и пакетной скоростью потока.

  2. Создайте 3 произвольных потока данных, состоящих из пакетов различных протоколов, заданных числом пачек (bursts).

  3. Запустите анализатор трафика Wireshark и начните захват на том порту, на котором предполагается генерировать трафик с помощью Ostinato.

  4. Организуйте последовательную передачу сконструированных потоков в произвольном порядке. Сохраните полученный трэйс-файл.

  5. Организуйте смешанную передачу (interleaved) сконструированных потоков трафика. Сохраните полученный трэйс-файл.

  6. Изучив содержимое полученных трэйс-файлов, убедитесь в корректной работе генератора трафика. Используйте инструменты из меню Statistics:

    1. IO Graph

    2. Packet Lenghts

    3. Protocol Hierarchy

К защите:

  1. Знать основные принципы конструирования пакетов согласно модели TCP/IP, характеристики трафика пакетных сетей, процессы формирования потоков, принципы инкапсуляции.

  2. Уметь использовать генератор трафика для создания потоков с различными характеристиками.

  3. Представить отчет, содержащий характеристики сконструированных потоков трафика согласно п. 1 и 2 задания на лабораторную работу, примеры полученных пакетов (см. рис. 6), трэйс-файлы, статистику работы согласно меню Statistics.

Рекомендуемая литература:

  1. Ostinato: Packet/Traffic Generator and Analyzer. https://code.google.com/p/ostinato/

  2. Олифер Н. А., Олифер В.Г. Компьютерные сети. Принципы, технологии, протоколы. Издание 4-е. Питер, 2010.

Лабораторная работа №4. Мониторинг в сетях связи

Краткая теоретическая справка

1. Протокол ICMP (Internet Control Message Protocol) является протоколом сообщений об ошибках. Несмотря на то, что ICMP считается протоколом сетевого уровня, его сообщения инкапсулируются в IP. Сообщения ICMP довольно разнообразны [1], но имеют единый формат (рис. 1). На этом протоколе базируются средства мониторинга сетей связи, а также сообщения о недоступности узла в некоторых протоколах прикладного уровня, например, ошибка 404 в HTTP.

Тип сообщения – согласно классификации

Код сообщения – дополнительные сведения об ошибке

Параметры – например, IP– адрес узла

Данные – например, IP– заголовок и первые 64 бита пакета, адресованного на другой узел

Рис. 1 – Формат сообщений ICMP

Протокол ICMP для IPv4 и его сообщения описаны в RFC 792, работа с масками сетей – в RFC 950 [2]. Протокол ICMP для IPv6 описан в RFC 4443 [3].

Инструменты мониторинга утилиты ping и traceroute описаны в RFC 2529 [4].

2. Утилита ping (Packet Internet Groper – одно из возможных прочтений) является одним из главных средств, используемых для отладки сетей, и служит для принудительного вызова ответа конкретной машины. Она позволяет проверять работу приложений TCP/IP (по портам) на удаленных машинах, адреса устройств в локальной сети, адрес удаленного сетевого устройства. В выполнении команды ping участвуют система маршрутизации, схемы разрешения адресов и сетевые шлюзы. Это утилита низкого уровня, которая не требует наличия серверных процессов на зондируемой машине, поэтому успешный результат при прохождении запроса вовсе не означает, что выполняются какие-либо сервисные программы высокого уровня, а говорит о том, что сеть находится в рабочем состоянии, питание зондируемой машины включено, и машина не отказала. Утилита ping входит во все реализации TCP/IP не зависимо от операционной системы.

Получив эхо-запрос ping, программное обеспечение, реализующее протокол IP у адресата, посылает эхо-ответ. Эхо-запросы посылаются заданное количество раз (ключ -n) или по умолчанию до тех пор, пока пользователь не введет команду прерывания (Ctrl+C или Del), после чего выводятся статистические данные. В некоторых реализациях количество посылок эхо-запросов ограничено, например, в Windows их 4. В некоторых случаях можно в целях обеспечения безопасности (защита от DDOS-атак) выставить запрет на эхо-ответы. Список ключей и формат команды можно посмотреть самостоятельно, набрав в командной строке ping.

На практике большинство опций в формате команды можно опустить, тогда в командной строке может быть: ping имя_узла или ping IP-адрес.

Пример:

C:\Users\admin>ping yandex.ru

Обмен пакетами с yandex.ru [77.88.21.11] с 32 байтами данных:

Ответ от 77.88.21.11: число байт=32 время=1651мс TTL=57

Ответ от 77.88.21.11: число байт=32 время=154мс TTL=57

Ответ от 77.88.21.11: число байт=32 время=79мс TTL=57

Ответ от 77.88.21.11: число байт=32 время=77мс TTL=57

Статистика Ping для 77.88.21.11:

Пакетов: отправлено = 4, получено = 4, потеряно = 0

(0% потерь)

Приблизительное время приема-передачи в мс:

Минимальное = 77мсек, Максимальное = 1651 мсек, Среднее = 490 мсек

3. Утилита traceroute (в реализациях Windows используется написание tracert) позволяет выявлять последовательность шлюзов, через которые проходит IP-пакет на пути к пункту своего назначения. У этой команды есть много опций, большинство из которых применяются крайне редко. Традиционно используется формат traceroute имя_узла, которое может быть задано в символической или числовой форме. Выходная информация представляет собой список машин, начиная с первого шлюза и кончая пунктом назначения.

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

Утилита traceroute посылает для каждого значения поля TTL три пакета. Если промежуточный шлюз распределяет трафик по нескольким маршрутам, то эти пакеты могут возвращаться разными машинами. Некоторые системы не посылают уведомлений о пакетах, время жизни которых истекло, а некоторые посылают уведомления, которые поступают обратно c задержкой, превышающей время ожидания на машине-источнике. Эти шлюзы обозначаются рядом звездочек. Если конкретный шлюз определить нельзя, все равно с помощью traceroute можно увидеть следующие за ним узлы маршрута. Заметим, что в связи с использованием на сетях динамической маршрутизации, в разные моменты времени можно получить различные маршруты прохождения пакетов. Это также относится к зеркалированным узлам.

Пример:

admin@ddd:~$ traceroute lenta.ru

traceroute to lenta.ru (81.19.85.92), 30 hops max, 60 byte packets

1 172.24.255.254 (172.24.255.254) 13.218 ms 14.129 ms 14.019 ms

2 84.204.14.254 (84.204.14.254) 13.848 ms 15.145 ms 15.040 ms

3 46.47.255.33 (46.47.255.33) 13.910 ms 13.815 ms 14.594 ms

4 mx960-spb.peterstar.net (82.196.95.169) 15.117 ms 25.568 ms 26.261 ms

5 ix-j-mx240.m9.ramtel.ru (193.232.244.118) 39.993 ms 39.870 ms 39.750 ms

6 s193-mx240.vr.rambler.ru (81.19.64.93) 39.672 ms 17.704 ms 19.828 ms

7 81.19.94.132 (81.19.94.132) 19.772 ms 19.708 ms 19.590 ms

8 81.19.85.92 (81.19.85.92) 19.529 ms 19.424 ms 28.634 ms

Пример:

C:\Users\admin>tracert yandex.ru

Трассировка маршрута к yandex.ru [87.250.251.11]

с максимальным числом прыжков 30:

1 100 ms 104 ms 106 ms HS2-1-16.xG.SPb.SkyLink.RU [89.253.1.16]

2 119 ms 99 ms 106 ms HS2-0-1.xG.SPb.SkyLink.RU [89.253.0.1]

3 107 ms 106 ms 106 ms 212.129.96.227

4 112 ms 104 ms 106 ms aurora-spb-ix.yandex.net [194.226.100.90]

5 128 ms 198 ms 110 ms 213.180.213.134

6 * * * Превышен интервал ожидания для запроса.

7 124 ms 108 ms 105 ms s650-eto2c1.yandex.net [213.180.213.65]

8 121 ms 132 ms 133 ms l3-s550-s650.yandex.net [213.180.213.28]

9 116 ms 106 ms 133 ms yandex.ru [87.250.251.11]

Трассировка завершена.

4. Существует комбинированная диагностическая утилита mtr (My Traceroute), сочетающая в себе функциональность рассмотренных выше traceroute и ping. Данная утилита основана на библиотеке libncurses (консольная версия) или на базе GTK+ (оконная версия), позволяет в реальном времени отслеживать маршрут до заданного узла и изменяющееся время ответа каждого из промежуточных узлов, а также процент потерянных пакетов. Консольный вывод утилиты mtr представлен на рисунке 2. На данный момент mtr включена практически во все дистрибутивы Linux.

Рис.2 – Пример работы утилиты mtr в консольном режиме

5. Утилита netstat выводит информацию о локальной сети и средствах TCP/IP. Она реализована непосредственно в операционной системе и занимается сбором статистики об ошибках, текущих соединениях, состоянии портов и соединений. Содержание и форма выходной информации зависят от операционной системы, но обычно выводятся следующие данные: список соединений, статистика сетевых интерфейсов, статистика по буферам данных, содержание таблицы маршрутизации, статистика работы протоколов. Характер выводимой информации можно выбирать с помощью опций командной строки. Рассмотрим основные возможности мониторинга с помощью утилиты netstat.

5.1. Список соединений

Утилита netstat обладает набором ключей для отображения портов, находящихся в активном и/или пассивном состоянии. Таким образом, можно получить список всех серверных приложений, работающих на данном компьютере. Отметим, что формат списка соединений для сервера с системой NAT и для клиентской машины будет разным.

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

Пример:

admin@ddd:~$ netstat -ta

Активные соединения с интернетом (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 *:29011 *:* LISTEN

tcp 0 0 localhost:ipp *:* LISTEN

tcp 0 0 172.24.0.157:35608 213.199.179.141:40041 ESTABLISHED

tcp 0 0 172.24.0.157:37760 163-247.static.quie:www TIME_WAIT

tcp 0 0 172.24.0.157:36441 95-28-49-237.broa:26647 ESTABLISHED

tcp 0 0 172.24.0.157:38541 172.24.0.170:55554 TIME_WAIT

tcp 0 0 172.24.0.157:54369 bos-w031b-rdr1.bl:https ESTABLISHED

tcp6 0 0 localhost:ipp [::]:* LISTEN

Состояние соединения имеет значение только для протокола TCP. Протокол UDP факта установления соединения не проверяет.

5.2. Содержание таблицы маршрутизации

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

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

Утилита netstat -r позволяет отображать таблицу маршрутизации.

Пункты назначения и шлюзы могут показываться в виде имен машин или в виде их IP-адресов. Флаги дают оценку маршрута.

Пример:

admin@ddd:~ > netstat -r

Kernel IP routing table

Destination Gateway Genmask Flags Ifac

ddd.sut.ru * 255.255.255.255 UH eth1

195.19.219.120 * 255.255.255.248 U eth0

195.19.219.128 * 255.255.255.192 U eth1

192.168.1.0 * 255.255.255.0 U eth0

195.19.221.0 lgw.ccs.sut.ru 255.255.255.0 UG eth1

193.125.0.0 lgw.ccs.sut.ru 255.255.0.0 UG eth1

loopback * 255.0.0.0 U lo

default lgw.ccs.sut.ru 0.0.0.0 UG eth1

5.3. Статистика сетевых интерфейсов

При использовании ключа -е на экран будут выведены статистические данные всех используемых Ethernet-интерфейсов. Исходя из них, можно выяснить, исправно ли соединение с сетью.

Пример:

admin@ddd:~ > netstat -е

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0 1000 0 844904 0 17 0 1454454 5 0 0 BRU

eth1 1500 0 590844 0 7 0 434438 59 0 0 BRU

lo 3924 0 45754 0 0 0 45754 0 0 0 LRU

Ошибки являются следствием проблем в кабельной системе или следствием неисправности платы сетевого адаптера. В нормально работающей сети количество конфликтов (RX-OVR, TX-OVR) не должно превышать 3% от числа пакетов, а другие ошибки не должны составлять более 0,5% от общего числа пакетов.

5.4. Статистика передачи данных

Использование netstat -s позволяет вывести содержимое счетчиков сетевых программ. В выходной информации есть разделы, относящиеся к различным протоколам: IP, ICMP, TCP, UDP. С ее помощью можно определить место появления ошибки в принятом пакете.

Пример:

admin@ddd:~$ netstat -s

IР:

всего пакетов принято 17058

2 с неверными адресами

0 перенаправлено

0 входящих пакетов отклонено

входящих пакетов доставлено: 4364

запросов отправлено: 3936

Icmp:

ICMP сообщений получено: 306

неудачных входящих ICMP сообщений: 0

Гистограмма входа ICMP

пункт назначения недоступен: 8

потери при прохождении: 263

эхо-ответы: 35

послано сообщений ICMP: 280

неудачные сообщения ICMP: 0

Гистограмма выхода ICMP

пункт назначения недоступен: 8

эхо-запросов: 14

IcmpMsg:

InType0: 35

InType3: 8

InType11: 263

OutType3: 8

OutType8: 14

OutType69: 258

Tcp:

открытия активных соединений: 148

открытия пассивных соединений: 0

неудачные попытки соединения: 4

получено сбросов соединений: 2

соединений установлено: 0

сегментов получено: 3386

отправлено сегментов: 2895

повторно передано сегментов: 39

плохих сегментов получено: 0

сбросов послано: 8

Udp:

пакетов принято: 661

принято пакетов на неизвестный порт: 8

ошибок приема пакетов: 0

пакетов послано: 723

TcpExt:

пакеты, вырезанные из очереди приема по причине переполнения буфера сокета: 1

67 TCP sockets finished time wait in fast timer

задержанных подтверждений послано: 119

Редим быстрого подтверждения приема был активирован 69 раз

11 packets directly queued to recvmsg prequeue.

3635 bytes directly received in process context from prequeue

ожидаемых заголовков пакетов: 1745

ожидаемых заголовков пакетов, непосредственно стоявших в очереди к пользователю: 5

311 acknowledgments not containing data payload received

ожидаемые подтверждения: 299

9 congestion windows recovered without slow start after partial ack

1 timeouts in loss state

19 retransmits in slow start

других TCP тайм-аутов: 19

22 packets collapsed in receive queue due to low socket buffer

получено DSACKs: 9

1 соединения сброшены из-за неожиданных данных

2 connections reset due to early user close

TCPDSACKIgnoredNoUndo: 3

TCPSackShiftFallback: 9

IpExt:

InMcastPkts: 15

OutMcastPkts: 19

InOctets: 4353792

OutOctets: 405434

InMcastOctets: 2714

OutMcastOctets: 2990

Изучаемые в процессе выполнения лабораторной работы средства мониторинга относятся к универсальным в сетях IP. Они являются встроенными во все операционные системы с поддержкой IP, работают как с IPv4, так и с IPv6. Для своей работы утилита netstat использует статистику, собранную при помощи ICMP. Так как ICMP для IPv4 и IPv6 имеет отличия, связанные непосредственно с изменением формата заголовка, то и результат для этих протоколов будет отличаться. Современные операционные системы поддерживают обе версии ICMP.

Задание на лабораторную работу:

  1. Провести трассировку трех узлов по заданию преподавателя. По результатам построить графики зависимости времени прохождения пакета от номера узла. Указать шлюзы перехода из одной сети в другую. Листинги трассировки привести в отчете.

  2. Провести оценку работоспособности узлов: узлов в подсети лаборатории, шлюза подсети, 5 узлов из ранее сделанных трассировок. Оценить TTL для каждого из них.

  3. Запустить несколько сетевых приложений на клиентской машине (например, несколько сайтов, интернет-мессенджер и т.п.). Снять с клиентской машины при помощи утилиты netstat таблицу маршрутизации, список соединений, статистику передачи данных, состояние интерфейса Ethernet. На основании списка соединений построить карту сети (см. лаб.1). На основе таблицы маршрутизации зарисовать архитектуру сети.

К защите:

  1. Знать основные принципы мониторинга сетей, характеристики сетей (TTL, время приема-передачи и т.п.), принципы работы средств мониторинга (всех используемых в лабораторной работе утилит).

  2. Уметь использовать средства мониторинга IP-сетей.

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

Рекомендуемая литература:

  1. RFC 792 Internet control message protocol. September, 1981.

  2. RFC 950 Internet Standard Subnetting Procedure. August 1985

  3. RFC 4443 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification. March, 2006

  4. RFC 2925 Definitions of Managed Objects for Remote Ping, Traceroute, and Lookup Operations. September, 2000.

  5. Олифер Н. А., Олифер В.Г. Компьютерные сети. Принципы, технологии, протоколы. Издание 4-е. Питер, 2010.

Лабораторная работа №5.Статическая маршрутизация на базе протокола IPv4

Цель проведения лабораторных работ: получение навыков конфигурации локальной сети на основе протоколов IPv4 и IPv6 с использованием статической маршрутизации.

Краткая теоретическая справка

Б

Рис. 1 – Трехуровневая базовая модель построения сети

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

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

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

В обобщенном виде запись маршрутного правила (далее маршрута) можно представить так:

Route network netmask gateway

Например, конкретная запись может быть представлена как:

Route 12.5.7.0 255.255.255.0 78.3.65.1,

Где 12.5.7.0 – это адрес подсети (network), 255.255.255.0 – маска данной подсети (netmask), а 78.3.65.1 – адрес шлюза (gateway). Шлюз представляет собой маршрутизатор, на который посылается весь трафик, удовлетворяющий данному маршруту, т.е. имеющий адрес получателя пакетов входящий в указанную подсеть.

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

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

Задание на лабораторную работу:

  1. Соберите тестовую схему сети согласно рис. 2.

  2. Подготовьте программные маршрутизаторы, войдите под суперпользователем и установите соединение по ssh.

  3. Сконфигурируйте программные маршрутизаторы согласно заданию (табл. 1). Проверьте взаимную доступность программных маршрутизаторов.

  4. Сконфигурируйте маршрутизатор Cisco. Проверьте взаимную доступность подсетей.

  5. Снимите ARP-таблицы маршрутизаторов.

Методика выполнения лабораторной работы

Ход выполнения работы проиллюстрирован на примере настройки маршрутизации в тестовой сети, приведенной на рисунке 2.

Для успешного выполнения лабораторной работы необходимо подготовить программные маршрутизаторы. На каждом программном маршрутизаторе следует запустить пакет маршрутизации Quagga. Применяемая в Quagga система команд очень близка к системе команд Cisco.

Включите программные маршрутизаторы и с помощью KVM-переключателя подсоединитесь к каждому из них, войдите под суперпользователем:

login: root

passw: simulator

и запустите Quagga:

root@soft-1# service zebra start

Рис. 2 – Схема тестовой сети IPv4

Примечание: Обратите внимание, что при запуске пакета маршрутизации Quagga, он перехватывает управление сетевыми ресурсами и заменяет существующую сетевую конфигурацию своей, хранящейся в файле /etc/quagga/zebra.conf. По умолчанию в данной конфигурации на soft-core1 (программном маршрутизаторе ядра1 1) настроен интерфейс eth0=192.168.24.1/24, а на soft-core2 (программном маршрутизаторе ядра 2) eth0=172.16.0.1/16.

Теперь на программные маршрутизаторы можно зайти посредством протокола SSH из тех локальных сетей, шлюзами которых они являются, т.е. на soft-core1 через интерфейс eth0 с адресом 192.168.24.1, а на soft-core2 – через eth0 с адресом 172.16.0.1.

Примечание: Для того, чтобы осуществить удаленное соединение по протоколу ssh, на машинах с ОС Linux необходимо запустить терминал и набрать команду:

ssh логин@IP-адрес_удаленного_хоста

после чего ввести запрашиваемый пароль. Логин и пароль на программных маршрутизаторах стенда по умолчанию:

login: admin

passw: admin

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

pc2$ ssh admin@192.168.24.1

admin@192.168.24.1's password:

[admin@localhost ~]$ su

[root@localhost ~]$ iptables –F

[root@localhost ~]$ ip6tables –F

Для получения доступа к консоли управления Quagga, необходимо, установив удаленное подключение по ssh, набрать следующую команду:

telnet localhost 2601

Таким образом, мы подключаемся к процессу, ожидающему соединения на порту 2601 программного маршрутизатора (маршрутизирующий демон zebra).

Примечение: Пароль при подключении к консоли Quagga по умолчанию: softcore.

Процесс конфигурирования программного маршрутизатора может выглядеть следующим образом:

pc2$ ssh admin@192.168.24.1

admin@192.168.24.1's password:

[admin@localhost ~]$ telnet localhost 2601

soft-core1.lab> enable

soft-core1.lab# configure terminal

soft-core1.lab(config)# ip forwarding /включаем маршрутизацию IP

soft-core1.lab(config)# interface eth1 /настраиваем интерфейс eth1

soft-core1.lab(config-if)# ip address 31.1.1.2/30 /присваиваем адрес IPv4

soft-core1.lab(config-if)# description to Cisco /добавляем описание

soft-core1.lab(config-if)# no shutdown /включаем интерфейс

soft-core1.lab(config-if)# exit/выходим из режима конфигурирования интерфейса

soft-core1.lab(config)# interface eth2

soft-core1.lab(config-if)# ip address 33.1.1.1/30

soft-core1.lab(config-if)# description to SC-2

soft-core1.lab(config-if)# no shutdown

soft-core1.lab(config-if)# exit

/Добавляем статические маршруты в формате “dst_network/netmask next-hop”

soft-core1.lab(config)# ip route 10.0.0.0/8 31.1.1.1

soft-core1.lab(config)# ip route 172.16.0.0/16 33.1.1.2

/Просмотреть таблицу маршрутизации можно следующим образом

soft-core1.lab# show ip route

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,

I - ISIS, B - BGP, > - selected route, * - FIB route

S>* 10.0.0.0/8 [1/0] via 31.1.1.1, eth1

C>* 31.1.1.0/30 is directly connected, eth1

C>* 33.1.1.0/30 is directly connected, eth2

C>* 127.0.0.0/8 is directly connected, lo

S>* 172.16.0.0/16 [1/0] via 33.1.1.2, eth2

C>* 192.168.24.0/24 is directly connected, eth0

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

Далее необходимо убедиться, что программные маршрутизаторы «видят» друг друга. Для этого запустите еще один сеанс удаленного доступа по ssh и утилитами ping и traceroute проверьте доступность подключенного порта другого маршрутизатора и путь прохождения пакетов до него.

pc2$ ssh admin@192.168.24.1

admin@192.168.24.1's password:

Last login: Thu Jul 19 20:18:53 2012 from 192.168.24.100

[admin@localhost ~]$ ping 33.1.1.2

PING 33.1.1.2 (33.1.1.2) 56(84) bytes of data.

64 bytes from 33.1.1.2: icmp_seq=1 ttl=64 time=0.323 ms

64 bytes from 33.1.1.2: icmp_seq=2 ttl=64 time=0.095 ms

64 bytes from 33.1.1.2: icmp_seq=3 ttl=64 time=0.110 ms

--- 33.1.1.2 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1999ms

rtt min/avg/max/mdev = 0.09/0.16/0.30/0.10 ms

[admin@localhost ~]$ traceroute 33.1.1.2

traceroute to 33.1.1.2 (33.1.1.2), 30 hops max, 60 byte packets

1 33.1.1.2 (33.1.1.2) 0.262 ms 0.074 ms 0.058 ms

Сконфигурируем маршрутизатор Cisco. С компьютера управления зайдем на консольный порт Cisco:

picocom /dev/ttyS0

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

cisco-1>enable /переходим в режим exec

cisco-1#configure terminal

cisco-1(config)#ip classless /включаем CIDR

cisco-1(config)#ip routing /включаем IP-маршрутизацию

/Настраиваем сетевые интерфейсы

cisco-1(config)#interface gigabitEthernet 0/0 /выбираем интерфейс для настройки

cisco-1(config-if)#ip address 31.1.1.1 255.255.255.252 /присваиваем интерфейсу IP-адрес и маску подсети

cisco-1(config-if)#description to soft-core1 /добавляем описание интерфейса (необязательно)

cisco-1(config-if)#no shutdown /включаем интерфейс

cisco-1(config-if)#exit /выходим из режима конфигурирования данного интерфейса

cisco-1(config)#interface gigabitEthernet 0/1

cisco-1(config-if)#ip address 32.1.1.1 255.255.255.252

cisco-1(config-if)#description to soft-core2

cisco-1(config-if)#no shutdown

cisco-1(config-if)#end /выходим из режима конфигурации

/Создаем статические маршруты

cisco-1#configure terminal

/В маршруте нужно указать в качестве шлюза next-hop маршрутизатор

cisco-1(config)#ip route 192.168.24.0 255.255.255.0 31.1.1.2

cisco-1(config)#ip route 172.16.0.0 255.255.0.0 32.1.1.2

cisco-1(config)#exit

/Просмотрим состояние интерфейсов и маршрутов

cisco-1#show ip interface brief

cisco-1#show ip route

/Проверим доступность LAN-интерфейсов шлюзов

cisco-1#ping 192.168.24.1

cisco-1#ping 172.16.0.1

Если интерфейсы доступны, значит маршрутизация настроена верно.

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

pc1#ping 192.168.24.100

pc1#ping 172.16.0.100

pc2#ping 10.0.0.100

pc2#ping 172.16.0.100

pc3#ping 192.168.24.100

pc3#ping 10.10.0.100

Если ping проходит успешно, утилитой traceroute отследите пути продвижения пакетов по сети (рис.3).

Рис. 3 – Прохождение пакетов через сеть.

Снимите ARP-таблицы с маршрутизаторов сети. Для того чтобы просмотреть ARP-таблицу программного маршрутизатора, подключитесь к нему по SSH и введите команду ip neighbor (рис.4).

Рис. 4 – ARP-таблица программного маршрутизатора

Обратите внимание на то, как изменяется статус записи об узле 33.1.1.2 после проверки связи с ним. Просмотр ARP-таблицы в маршрутизаторе Cisco осуществляется командой show arp (рис. 5).

Рис. 5 – ARP-таблица маршрутизатора Cisco

Лабораторная работа №5.Статическая маршрутизация на базе протокола IPv6

Задание на лабораторную работу:

  1. Соберите тестовую схему сети согласно рис. 6.

  2. Выполните действия согласно п. 2-4 л/р №5, но только для IPv6.

  3. Снимите таблицу канального уровня ND-протокола.

Методика выполнения лабораторной работы

Данная лабораторная работа аналогична л/р №4, за исключением сетевого протокола: в данном случае сеть построена на IPv6. Схема тестовой сети приведена на рисунке 6.

Рис. 6 – Схема тестовой сети IPv6

Настройка программных маршрутизаторов для работы в сети с IPv6-адресацией осуществляется аналогично проведенной для сетей IPv4.

1. Осуществляем необходимые подключения.

2. Конфигурируем программные маршрутизаторы. Обратите внимание на то, что интерфейсам eth0 по умолчанию присвоены только IPv4-адреса!

pc2$ ssh admin@192.168.24.1

admin@192.168.24.1's password:

[admin@localhost ~]$ telnet localhost 2601

soft-core1.lab> enable

soft-core1.lab# configure terminal

soft-core1.lab(config)# ipv6 forwarding

soft-core1.lab(config)# interface eth0

soft-core1.lab(config-if)# ipv6 address fc00:2::1/64

soft-core1.lab(config-if)# exit

soft-core1.lab(config)# interface eth1

soft-core1.lab(config-if)# ipv6 address 2001:1:1:100::2/64

soft-core1.lab(config-if)# exit

soft-core1.lab(config)# interface eth2

soft-core1.lab(config-if)# ipv6 address 2001:1:1:300::1/64

soft-core1.lab(config-if)# exit

soft-core1.lab(config)# ipv6 route fc00:1::/64 2001:1:1:100::1

soft-core1.lab(config)# ipv6 route fc00:3::/64 2001:1:1:300::2

soft-core1.lab(config)# exit

Данную настройку необходимо произвести для обоих программных маршрутизаторов в соответствии с заданием.

3. Проверяем взаимную доступность программных роутеров (рис.7).

Рис. 7 – Проверка взаимной доступности

4. Настраиваем маршрутизатор Cisco.

Примечание: Для чистоты эксперимента можно перезагрузить маршрутизатор Cisco, включив и выключив его кнопкой питания (при этом все сделанные в первой части работы изменения сотрутся!)

После загрузки маршрутизатора вы увидите на экране приглашение, и можете начинать настройку.

cisco-1>enable /переходим в режим exec

cisco-1#configure terminal /конфигурирование из терминала

cisco-1(config)#ipv6 unicast-routing /включаем маршрутизацию IPv6

cisco-1(config)#ipv6 cef /включаем поддержку Cisco Express Forwarding для протокола IPv6

/Настраиваем сетевые интерфейсы

cisco-1(config)#interface vlan 2 /LAN-интерфейс нашего маршрутизатора

cisco-1(config-if)#ipv6 address fc00:1::1/64 /Задаем IPv6 адрес типа Unique Local интерфейсу LAN

cisco-1(config-if)#no shutdown /включаем интерфейс

cisco-1(config-if)#exit

cisco-1(config)#interface gigabitEthernet 0/0 /настраиваем интерфейс GE0/0

cisco-1(config-if)#ipv6 address 2001:1:1:100::1/64 /Задаем IPv6 адрес типа Global Unicast интерфейсу GE0/0

cisco-1(config-if)#no shutdown

cisco-1(config-if)#exit

cisco-1(config)#interface gigabitEthernet 0/1

cisco-1(config-if)#ipv6 address 2001:1:1:200::1/64

cisco-1(config-if)#no shutdown

cisco-1(config-if)#^Z

/Посмотрим состояние интерфейсов

cisco-1#sh ipv6 interface brief

/Проверим доступность маршрутизаторов SC-1 и SC-2

cisco-1#ping ipv6 2001:1:1:100::2 /Пингуем интерфейс eth1 маршрутизатора soft-core1

cisco-1#ping ipv6 2001:1:1:200::2 /Пингуем интерфейс eth2 маршрутизатора soft-core2

/Создаем статические маршруты

cisco-1(config)#ipv6 route fc00:2::/64 2001:1:1:100::2 /Маршрут в локальную сеть, находящуюся за soft-core1

cisco-1(config)#ipv6 route fc00:3::/64 2001:1:1:200::2 /Маршрут в локальную сеть, находящуюся за soft-core2

/Просмотрим таблицу маршрутизации для IPv6

cisco-1#show ipv6 route

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

pc1#ping6 fc00:2::2

pc1#ping6 fc00:3::2

pc2#ping6 fc00:1::2

pc2#ping6 fc00:3::2

pc3#ping6 fc00:1::2

pc3#ping6 fc00:2::2

Если ping6 проходит успешно, утилитой traceroute6 отследите пути продвижения пакетов по сети (рис. 8).

Рис.8 – Путь прохождения пакета

5. Снимите таблицу канального уровня. В случае использования протокола IPv6 нужно снимать таблицу не ARP, а ND-протокола (Neighbour Discovery). Это связано с особенностями протокола IPv6 [2].

На Cisco данная таблица выводится командой show ipv6 neighbors (рис.9).

Рис. 9 – Кэш протокола ND в Cisco

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

Рис. 10 – Кэш протоколов канального уровня в Linux