Что делает роутер с подсетью

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей, напомню, что эти записи основаны на программе Cisco ICND1 и помогут вам подготовиться к экзаменам CCENT/CCNA. Ранее мы разобрались с назначением коммутаторов и хабов, то есть поговорили об устройствах канального и физического уровня соответственно. Теперь же давай разберемся с устройством сетевого уровня — маршрутизатором и посмотрим зачем он нужен.

Роутеры нужны для того чтобы объединить или более канальные среды (подсети) в единую сеть, то есть роутер умеет работать с IP-адресами, а также умеет перекладывать Ethernet кадры из одной сети в другую, как это происходит — тема данной записи.

Перед началом я хотел бы вам напомнить, что ознакомиться с опубликованными материалами первой части нашего курса можно по ссылке: «Основы взаимодействия в компьютерных сетях».

1.19.1 Введение

Содержание статьи:

  • 1.19.1 Введение
  • 1.19.2 Почему для работы компьютерной сети недостаточно коммутаторов?
  • 1.19.3 Коротко о назначении маршрутизаторов
  • 1.19.4 Простой пример настройки и использования домашнего роутера
  • 1.19.5 Выводы

Перед началом разговора о том как связать две подсети в одну сеть, я бы хотел вам напомнить последний раздел темы, в которой мы говорили о назначении коммутаторов, там мы столкнулись с проблемой: при использовании коммутатора два узла из разных подсетей не могут общаться друг с другом, то есть, например, узел А с IP-адресом 192.168.1.22 не может передать данные узлу Б с IP-адресом 10.12.34.55, тогда я отметил, что эти узлы находятся в разных подсетях (можно сказать в разных канальных средах или разных широковещательных доменах), а классический L2 коммутатор не в состояние работать с IP-адресами, более того, у некоторых L2 свичей вообще нет IP-адресов, так как это устройства канального уровня модели OSI.

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

1.19.2 Почему для работы компьютерной сети недостаточно коммутаторов?

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

Во-первых, давайте вспомним схему, в которой мы подключали к коммутатору узлы из разных подсетей, такая схема показана на Рисунке 1.19.1. На этом рисунке стационарные ПК находятся в сети 192.168.2.0/24, «/24» означает маску 255.255.255.0, а ноутбуки находятся в подсети 192.168.1.0/24. На первый взгляд, казалось бы, почему ноутбук не может связаться с компьютером, ведь они подключены к одному коммутатору, значит физическая связь между ними есть, но тут нам нужно вспомнить, что коммутатор – это устройство канального уровня в модели TCP/IP, на канальном уровне устройства работают с физическими, то есть мак-адресами, но компьютерам мы вручную задаем еще и IP-адреса, то есть логическая адреса, с которыми умеют работать маршрутизаторы, то есть устройства, которые относятся к сетевому уровню модели передачи данных, то есть в классическом исполнении коммутаторы не понимают IP адресов (хотя на самом деле это не так, даже простенькие L2+ коммутаторы умеют анализировать IP-адреса и выполнять простенькие операции в зависимости от IP-адреса, указанного в пакете).

Рисунок 1.19.1 Узлы из разных подсетей подключены к одному коммутатору

Рисунок 1.19.1 Узлы из разных подсетей подключены к одному коммутатору

Для понимания того, почему узел с IP-адресом 192.168.1.1 и маской 255.255.255.0 не сможет передавать данные узлу 192.168.2.1 с маской 255.255.255.0, нужно немного понимать, как работает протокол ARP (этот протокол нужен для определения мак-адреса по известному IP-адресу), в дальнейшем мы более подробно изучим работу протокола ARP, сейчас же посмотрим на принцип его работы, но для этого немного модифицируем нашу схему, добавив в каждую подсеть по два устройства, это нужно для наглядности.

Рисунок 1.19.2 Две подсети по четыре узла

Рисунок 1.19.2 Две подсети по четыре узла в каждой

Теперь у нас есть две подсети, в каждой из них по четыре узла, чтобы добавить в верхнюю подсеть узел, мы должны задать ему маску 255.255.255.0 и любой свободный IP-адрес вида 192.168.1.х, где х – это число от 1 до 254, 255 использовать для узла нельзя, так как это широковещательный IP-адрес. Тоже самое касается и нижней подсети, чтобы добавить в нее еще один узел, нужно задать ему маску 255.255.255.0 и любой свободный IP-адрес из диапазона 192.168.2.х. Также стоит отметить, что наша компьютерная сеть имеет топологию звезда, следует добавить следующее: если бы вместо коммутатора мы бы использовали хаб, то такая сеть приняла бы топологию общая шина практически со всеми ее недостатками.

Теперь давайте посмотрим, как работает протокол ARP, но не забывайте, что для работы в канальной среде, то есть, например, для передачи данных от узла 192.168.1.1 к узлу 192.168.1.2, устройства используют MAC-адреса, а нам они неизвестны, у нас есть только IP, тут-то как раз и нужен ARP. Давайте настроим фильтр для режима симуляции Cisco Packet Tracer так, как показано на Рисунке 1.19.3.

Рисунок 1.19.3 Оставляем в фильтре Cisco Packet Tracer только ARP и ICMP

Рисунок 1.19.3 Оставляем в фильтре Cisco Packet Tracer только ARP и ICMP

После того, как настроите фильтр, не выходите из режима симуляции Cisco Packet Tracer, а откройте командую строку ноутбука с адресом 192.168.1.1, и выполните пинг до ноутбука 192.168.1.2.

Рисунок 1.19.4 Ноутбук сфомировал два пакета: один с ICMP вложением, второй с ARP-запросом

Рисунок 1.19.4 Ноутбук сфомировал два пакета: один с ICMP вложением, второй с ARP-запросом

Обратите внимание: как только вы нажмете Enter, ноутбук сформирует два пакета: фиолетовый пакет с ICMP вложением, который он пока не собирается отправлять, потому что не знает MAC-адреса, который принадлежит узлу 192.168.1.2, чтобы выяснить эту информацию, ноутбук формирует пакет с ARP-запросом, в котором он говорит: я узел с IP-адресом 192.168.1.1, у меня есть вот такой мак-адрес: 00D0.5819.42A8, друзья, скажите, пожалуйста, есть ли среди вас узел с IP-адресом 192.168.1.2 и, если такой узел есть, то какой у тебя мак-адрес? Естественно, для отправки такого пакета (он на рисунке обозначен зеленым) используется широковещательный запрос, который будет направлен всем физическим устройствам компьютерной сети, подключенным к коммутатору.

Следующим шагом зеленый пакет будет отправлен на коммутатор, это показано на Рисунке 1.19.5.

Рисунок 1.19.5 Кадр с вложенным ARP-запросом пришел на коммутатор

Рисунок 1.19.5 Кадр с вложенным ARP-запросом пришел на коммутатор

Коммутатор по каким-то, пока не важно каким, критериям понял, что это широковещательный запрос, а раз запрос широковещательный, то его нужно отправить всем участникам, которые подключены к коммутатору, что он и сделал, показано на Рисунке 1.19.6. При этом обратите внимание: все узлы, кроме узла с IP-адресом 192.168.1.2 проигнорировали полученный пакет, так как они видят, что IP-адрес 192.168.1.2 им не принадлежит, это видно по красному крестику на рисунке.

Рисунок 1.19.6 Коммутатор разослал ARP-запрос всем узлам, подключенным к нему

Рисунок 1.19.6 Коммутатор разослал ARP-запрос всем узлам, подключенным к нему

Тут стоит обратить внимание на один минус, связанный с широковещательными запросами: коммутатор рассылает его всем узлам, которые к нему подключены (а это означает, что пропускная способность каналов связи в такой сети используется не очень эффективно), если к коммутатору будет подключен другой коммутатор, то и он получит ARP-запрос и разошлет его всем своим узлам, даже если эти узлы находятся в другой подсети, таким образом мы загружаем наши каналы связи ненужной информацией, а наши узлы из разных подсетей не полностью изолированы друг от друга, этот минус нас будет сопровождать до тех пор, пока мы не познакомимся с технологией VLAN.

Давайте теперь посмотрим на то, как разные конечные узлы обрабатывают полученный кадр с ARP-запросом, сначала посмотрим на то, что сделал с кадром узел из другой подсети, например, узел 192.168.2.1, показано на Рисунке 1.19.7. Обратите внимание: чтобы увидеть текст, выделенный на рисунке синим, нужно сперва нажать на графу с текстом Layer 2 так, чтобы она стала подсвечена желтым цветом, так как в данном случае обработка идет на канальном уровне, до сетевого уровня в данном случае мы даже не добрались.

Рисунок 1.19.7 Что произошло с ARP-запросом, который пришел на узел из другой подсети

Рисунок 1.19.7 Что произошло с ARP-запросом, который пришел на узел из другой подсети

Итак, пункт один из синего списка говорит о том, что MAC-адрес назначения, указанный в кадре, соответствует мак-адресу получателя, широковещательному или мультикаст адресу, пока все ок. Во втором пункте сказано, что узел вытаскивает информацию из Ethernet-кадра (вспоминайте принцип инкапсуляции данных), в данном случае в Ethernet кадре содержится ARP-сообщение, о чем и говорится в третьем пункте. В четвертом пункте сказано, что это не просто ARP-сообщение, а ARP-запрос, узел это понял. Далее узел начинает сравнивать свой IP-адрес с IP-адресом, который находится в ARP-запросе, но при этом сравнение используется не только IP-адреса узла, который принял ARP-запрос, но и маска этого узла, поэтому узел понимает, что этот кадр не просто не предназначен для него, но он еще и из другой подсети, об этом сказано в пункте 5, в шестом пункте говорится, что узел дропнул (откинул) этот арп-запрос и не собирается на него отвечать.

Теперь стоит взглянуть на то, что сделал с полученным кадром узел с адресом 192.168.1.254, этот узел находится в одной подсети с ноутбуком, пославшим ARP-запрос, но его IP-адрес не совпадает с тем адресом, который указан в ARP-запросе. Это показано на Рисунке 1.19.8, и, по сути, ничем, кроме пятого пункта, не отличается от того, что происходило в узле из другой подсети.

Рисунок 1.19.8 Что произошло с ARP-запросом, который пришел на узел из той же подсети, но с другим IP-адресом

Рисунок 1.19.8 Что произошло с ARP-запросом, который пришел на узел из той же подсети, но с другим IP-адресом

В пятом пункте сказано, что IP-адрес, указанный в ARP-запросе, не соответствует IP-адресу узла, который его получил, поэтому шестым пунктом узел его отбрасывает, все просто. Теперь посмотрим, как обрабатывает ARP-запрос узел, которому предназначен этот ARP-запрос, показано на Рисунке 1.19.9.

Рисунок 1.19.9 Что делает с Ethernet-кадром узел, которому предназначен ARP-запрос

Рисунок 1.19.9 Что делает с Ethernet-кадром узел, которому предназначен ARP-запрос

На пятом шаге узел понимает, что ARP-запрос предназначен для него, это он понимает по указанному IP-адресу, а шестым шагом этот узел вносит в свою ARP-таблицу информацию, полученную из ARP-запроса (другими словами делает arp-запись), чтобы потом было проще общаться и не надо было лишний раз делать ARP-запрос, чтобы узнать какой мак-адрес у узла с IP 192.168.1.1. Эту ARP-таблицу можно посмотреть, для этого откроем командую строку ноутбука с IP-адресом 192.168.1.2 и повторим команды из листинга ниже.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

Packet Tracer PC Command Line 1.0

C:\>help

Available Commands:

? Display the list of available commands

arp Display the arp table

cd Displays the name of or changes the current directory.

delete Deletes the specified file from C: directory.

dir Displays the list of files in C: directory.

exit Quits the CMD.EXE program (command interpreter)

ftp Transfers files to and from a computer running an FTP server.

help Display the list of available commands

ide Starts IoX development environment

ioxclient Command line tool to assist in app development for Cisco IOx

platforms

ipconfig Display network configuration for each network adapter

ipv6config Display network configuration for each network adapter

js JavaScript Interactive Interpreter

mkdir Creates a directory.

netsh

netstat Displays protocol statistics and current TCP/IP network

connections

nslookup DNS Lookup

ping Send echo messages

python Python Interactive Interpreter

quit Exit Telnet/SSH

rmdir Removes a directory.

snmpget SNMP GET

snmpgetbulk SNMP GET BULK

snmpset SNMP SET

ssh ssh client

telnet Telnet client

tracert Trace route to destination

C:\>arp

Packet Tracer PC ARP

Display ARP entries: arp a

Clear ARP table: arp d

C:\>arp a

Internet Address Physical Address Type

192.168.1.1 00d0.5819.42a8 dynamic

C:\>

Сначала мы выполнили команду «help», чтобы посмотреть список всех доступных команд на компьютере в среде Cisco Packet Tracer, по подсказкам мы поняли, что нам нужна команда «arp», попробовали ее выполнить, но терминал нам сообщил, что команде нужно передавать еще и параметры: «arp -a» — показать arp-таблицу, а «arp -d» очистить arp-таблицу. Нам подходит первый вариант, поэтому мы и выполнили его, и увидели, что IP-адресу 192.168.1.1 соответствует мак-адрес 00d0.5819.42a8.

Если в данный момент посмотреть на arp-таблицу узла 192.168.1.1, то в ней не будет никаких записей, так как ARP-ответ еще не получен, это показано в листинге ниже:

C:\>arp a

No ARP Entries Found

C:\>

На реальных ПК тоже можно посмотреть ARP-таблицу, той же самой командой, вот, например, ARP-таблица моего ПК с Windows 10:

C:\Users\Dell>arp a

Интерфейс: 192.168.0.100 0x9

адрес в Интернете Физический адрес Тип

192.168.0.1 a12d39aab839 динамический

192.168.0.255 ffffffffffff статический

224.0.0.22 01005e000016 статический

224.0.0.251 01005e0000fb статический

224.0.0.252 01005e0000fc статический

255.255.255.255 ffffffffffff статический

C:\Users\Dell>

Давайте посмотрим, что дальше будет происходить с кадрами, которые переносят ARP сообщения, сделаем следующий шаг в режиме симуляции Cisco Packet Tracer. А дальше все очень просто: узел 192.168.1.2 сформирует ARP-ответ, и отправит его уже не на широковещательный IP-адрес, а на юникастовый IP-адрес (не все операционные системы так поступают, когда будет рассматривать ARP более детально, мы об этом поговорим), то есть на адрес конкретного узла, а именно 192.168.1.1, в котором будет примерно следующее: дорогой узел с IP-адресом 192.168.1.1 и мак-адресом 00d0.5819.42a8, я узел с IP-адресом 192.168.1.2, у меня вот такой мак-адрес: 00D0.9741.51D1, я готов с тобой пообщаться

Рисунок 1.19.10 ARP-ответ пришел на узел, который хочет отправить данные

Рисунок 1.19.10 ARP-ответ пришел на узел, который хочет отправить данные

На Рисунке 1.19.10 показано, что происходит на узле, который хотел отправить данные (192.168.1.1), и тут видно, что светло-зелёный пакет с ARP-ответом был успешно получен и обработан, а тёмно-зелёный пакет был сформирован и в нем находится ICMP вложение, так как светлый пакет успешно обработан, это станет понятно, если посмотреть внутрь пакетов. Сначала заглянем в светлый пакет, так как он обрабатывается первым, показано на Рисунке 1.19.11.

Рисунок 1.19.11 Что делает узел после того, как он получил ARP-ответ

Рисунок 1.19.11 Что делает узел после того, как он получил ARP-ответ

Первых четыре пункта ничем не отличаются от того, что мы видели ранее, все по стандартной схеме, а вот на пятом шаге есть изменения: компьютер, получив ARP-ответ, вносит соответствующую запись в свою ARP-таблицу (теперь в этой таблице будет соответствие для узла с IP-адресом 192.168.1.2), а на шестом шаге, узел извлекает кадр с ICMP вложением из своего буфера и отправляет его узлу 192.168.1.2. В этом можно убедиться, посмотрев на темный кадр, он показан на Рисунке 1.19.12.

Рисунок 1.19.12 ICMP запрос извлекается из буфера ПК и инкапсулируется в Ethernet кадр

Рисунок 1.19.12 ICMP запрос извлекается из буфера ПК и инкапсулируется в Ethernet кадр

Подпись к рисунку все хорошо разъясняет, пояснений не требуется. В дальнейшем будет происходит обмен ICMP запросами и ICMP ответами между машинами, а команда Ping будет заполнять командую строку соответствующими записями.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Packet Tracer PC Command Line 1.0

C:\>ping 192.168.1.2

Pinging 192.168.1.2 with 32 bytes of data:

Reply from 192.168.1.2: bytes=32 time=8ms TTL=128

Reply from 192.168.1.2: bytes=32 time<1ms TTL=128

Reply from 192.168.1.2: bytes=32 time<1ms TTL=128

Reply from 192.168.1.2: bytes=32 time=1ms TTL=128

Ping statistics for 192.168.1.2:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milliseconds:

Minimum = 0ms, Maximum = 8ms, Average = 2ms

C:\>arp a

Internet Address Physical Address Type

192.168.1.2 00d0.9741.51d1 dynamic

C:\>

Обратите внимание: первый цикл работы команды Ping был самым долгим, так как именно во время него происходило определение мак-адреса удаленного устройства, если повторить команду Ping, то результат будет другим, так как у узла есть уже ARP-запись и он знает мак-адрес, с помощью которого можно отправлять боевые данные.

Давайте теперь попробуем запустить Ping с узла 192.168.1.2 к узлу 192.168.1.1 и посмотрим, что из этого выйдет, конечно, в режиме симуляции.

Рисунок 1.19.13 Теперь узел сформировал только один кадр с ICMP вложением

Рисунок 1.19.13 Теперь узел сформировал только один кадр с ICMP вложением

Обратите внимание: теперь узел сформировал только один кадр с ICMP вложением, у нас нет кадра с ARP-запросом, так как при первом пинге узел 192.168.1.2 узел внес в свою ARP-таблицу информацию про 192.168.1.1 и его мак-адрес. Еще одним интересным моментом здесь будет поведение коммутатора, он уже знает кому направлять кадр с ICMP-запросом, это показано на Рисунке 1.19.14.

Рисунок 1.19.14 Коммутатор уже тоже знает кому направлять ICMP-запрос

Рисунок 1.19.14 Коммутатор уже тоже знает кому направлять ICMP-запрос

Коммутатор уже тоже знает кому направлять ICMP-запрос, так как ранее он внес запись о том, что мак-адрес 00D0.5819.42A8 находится за портом fa0/4, именно к этому порту подключен ноутбук с IP-адресом 192.168.1.1, а также в этой таблице есть информация о том, что за портом fa0/3 находится узел с мак-адресом 00D0.9741.51D1, ему мы присвоили IP-адрес 192.168.1.2. Дальнейшие шаги мы уже видели не раз, поэтому давайте взглянем на таблицу мак-адресов коммутатора, для этого у нас есть команда: show mac address-table, выполним ее, как показано на Рисунке 1.19.15.

Рисунок 1.19.15 Коммутатор уже тоже знает кому направлять ICMP-запрос

Рисунок 1.19.15 Коммутатор уже тоже знает кому направлять ICMP-запрос

Чтобы появилось такое окно, нажмите два раза левой кнопкой мыши по коммутатору, а затем откройте вкладку с названием CLI, таким образом перед вами появится интерфейс управления коммутатором, в который можно вводить различные команды, но особенность оборудования Cisco заключается, в том, что изначально оно предоставляет интерфейс управления с ограниченным набором команд (это видно по приглашению ко вводу, которое выглядит так: «switch>», символ >, как раз и говорит о том, что это ограниченный режим), чтобы перейти в привилегированный режим, в котором доступны все команды, нужно написать команду «enable» или сокращенно «en», а затем уже написать show mac address-table, если вы забыли как пишется команда или не знаете: есть ли вообще нужная вам команда, то можно воспользоваться символом «?», а затем нажать Enter, таким образом вы получите подсказку, всё это показана на рисунке выше, как и сама таблица мак-адресов коммутатора.

А теперь давайте удалим таблицу мак-адресов на коммутаторе, это делается при помощи команды clear mac address-table и показано на Рисунке 1.19.16.

Рисунок 1.19.16 Удалим существующую таблицу мак-адресов на коммутаторе

Рисунок 1.19.16 Удалим существующую таблицу мак-адресов на коммутаторе

Теперь коммутатор не знает: за каким портом какой мак-адрес находится, и мы можем попробовать выполнить Ping с узла 192.168.1.1 до узла 192.168.1.2, посмотрим, что при этом изменится, но не забывайте, что у первого узла уже есть мак-адрес второго узла в ARP таблице, не забудьте в этом убедиться перед тем, как начать пинг, дело в том, что у записей в таблице ARP есть время жизни и через определенный интервал времени они удаляются, в Cisco Packet Tracer этот механизм реализован.

Рисунок 1.19.17 Повторный Ping при условии, что ARP-запись в таблице узла есть

Рисунок 1.19.17 Повторный Ping при условии, что ARP-запись в таблице узла есть

Наш узел сформировал Ethernet-кадр с ICMP вложением и отправил его узлу 192.168.1.2, но делает он это через коммутатор с пустой таблицей мак-адресов. Далее мы увидим, что коммутатор получит этот кадр, тут всё ясно, поэтому я не буду даже показывать этот шаг, гораздо интереснее то, что будет делать коммутатор дальше, ведь его таблица мак-адресов пустая и он не знает в какой порт отсылать полученные кадр. А поступит он просто: просто разошлет полученный кадр с ICMP-запросом во все порты, за которыми подключены другие устройства, а там кто ответит, тот и молодец, этот процесс называется unknown unicast flooding, и это может привести к очень печальным последствиям, если несколько коммутаторов будут включены кольцом, и один из них сделает такую вот штуку, но в нашем случае кольца нет, поэтому бояться нечего.

Рисунок 1.19.18 Коммутатор рассылает полученный кадр во все порты (unknown unicast flooding)

Рисунок 1.19.18 Коммутатор рассылает полученный кадр во все порты (unknown unicast flooding)

На Рисунке 1.19.18 мы видим unknown unicast flooding, а также мы видим, что все узлы, кроме узла назначения, откинули этот кадр, так как он принадлежит не им. Тут стоит добавить, что коммутатор уже внес мак-адрес узла 192.168.1.1 в свою таблицу, а после того, как через него пройдет ответ от узла 192.168.1.2, он внесет и его мак-адрес в таблицу и в дальнейшем, если активность этих узлов будет достаточно высока, то коммутатор при обращении к ним не будет запускать процесс unknown unicast flooding, так как их мак-адреса уже есть в таблице. Ради интереса можете самостоятельно попробовать следующий пример: поменяйте мак-адрес узлу 192.168.1.1 и сделайте пинг с узла 192.168.1.2, посмотрите, что из этого выйдет (арп-таблица второго узла и таблица мак адресов коммутатора должна содержать старый мак-адрес первого узла).

Мы рассмотрели несколько интересных моментов, но пока никак не приблизились к проблеме, которую должны решать маршрутизаторы, скорее наоборот, мы увидели, что кадры (не путать с пакетами) отправленные узлом из одной подсети, могут добраться до другой подсети, правда это была какая-то односторонняя и бесполезная связь. Давайте теперь попробуем с узла 192.168.1.1 запустить пинг до узла 192.168.2.1 и посмотрим, что из этого выйдет.

Начало этого процесса показано на Рисунке 1.19.19, узел 192.168.1.1 формирует Ethernet кадр, в него вкладывает IP-пакет, в этот пакет он аккуратно запаковывает ICMP-вложение, но тут возникает неувязочка: наш компьютер уже сейчас видит IP-адрес 192.168.2.1, он видит, что для этого IP-адреса нет записи в таблице ARP, он даже понимает, что этот IP-адрес находится в другой подсети, так как может сравнить свой IP-адрес и маску с IP-адресом, на который собирается послать ICMP-запрос, но все равно формирует ARP-запрос, чтобы попробовать выяснить мак-адрес удаленного узла, а вдруг тема выгорит, но делает он это по особенному, на IP-адрес 0.0.0.0.

Рисунок 1.19.19 Пробуем выполнить пинг узла из другой подсети без маршрутизатора

Рисунок 1.19.19 Пробуем выполнить пинг узла из другой подсети без маршрутизатора

А теперь давайте заглянем внутрь зеленого пакета, именно он у нас содержит ARP-запрос, внутренности показаны на Рисунке 1.19.20.

Рисунок 1.19.20 ARP-запрос, отправленный по маршруту по умолчанию

Рисунок 1.19.20 ARP-запрос, отправленный по маршруту по умолчанию

Тут стоит обратить внимание на то, что в ARP-запросе содержится как IP-адрес отправителя, так и IP-адрес получателя, в нашем случае IP-адрес получателя находится в другой подсети, а ноутбук отправитель — устройство не очень умное, он не знает, как из своей подсети попасть в другую подсеть, поэтому вместо IP-адреса другой подсети, ноутбук подставляет IP-адрес 0.0.0.0, этот адрес еще иногда называют шаблонным или неопределенным адресом. Этот IP-адрес является зарезервированным и его не стоит задавать своим машинам.

Следующим шагом ARP-запрос будет передан на коммутатор, а затем коммутатор разошлет его всем узлам, которые к нему подключены, понятно, что любой узел, получив такой пакет, просто отбросит его, после того как сравнит шаблонный IP-адрес с тем адресом, который ему задали мы.

Рисунок 1.19.21 Все узлы дропают кадры с арп-запросом, в котором указан неопределенный IP-адрес

Рисунок 1.19.21 Все узлы дропают кадры с арп-запросом, в котором указан неопределенный IP-адрес

На Рисунке 1.19.21 показано, что ни один узел ни в одной подсети не счел нужным отвечать на ARP-запрос, в котором используется в качестве IP-адреса назначения 0.0.0.0, что в принципе логично. При этом, при анализе содержимого ARP-запроса узел, получивший его, определит, что IP-адрес 0.0.0.0 находится в отличной подсети от подсети узла, и поэтому не станет на него отвечать, это можно увидеть, если посмотреть на содержимое пакета.

В общем, мы попали в ситуацию, когда нам необходимо организовать взаимодействие между двумя подсетями, но сделать этого мы не может, так как L2 коммутатор не способен оперировать IP-адресами, он работает с кадрами и мак-адресами. А вот маршрутизатор уже умеет обрабатывать IP-адреса, и он как раз и используется для того, чтобы объединить две подсети в одну сеть, в этой теме мы просто посмотрим, как маршрутизатор это делает, а в дальнейшем мы детально разберемся с этим процессом.

1.19.3 Коротко о назначении маршрутизаторов

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

Рисунок 1.19.22 Объединяем две подсети при помощи роутера

Рисунок 1.19.22 Объединяем две подсети при помощи роутера

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

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

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

Рисунок 1.19.23 Добавляем роутер в проект Cisco Packet Tracer

Рисунок 1.19.23 Добавляем роутер в проект Cisco Packet Tracer

Когда вы наведете на этот роутер курсор мыши, то в самом низу интерфейса Cisco Packet Tracer прямо по центру вы увидите надпись: Router-PT-Empty, именно он нам и нужен, у этого роутера нет портов и нам их предстоит добавить, перетащите этот роутер в свой проект, а затем кликните на него два раза левой мышкой, вы увидите примерно такое окно, как показано на Рисунке 1.19.24, нас пока интересует вкладка Physical.

Рисунок 1.19.24 Добавляем роутер в проект Cisco Packet Tracer

Рисунок 1.19.24 Роутер без интерфейсов в Cisco Packet Tracer

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

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

Я добавил четыре модуля PT-ROUTER-NM-1CFE и у меня получилось так, как показано на Рисунке 1.19.25, эти порты с разъемами для витой пары, способные работать в режиме full duplex на скорости до 100 Мбит/c.

Рисунок 1.19.25 Добавим несколько модулей в наш маршрутизатор

Рисунок 1.19.25 Добавим несколько модулей в наш маршрутизатор

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

Теперь нам нужно настроить роутер так, чтобы он смог передавать IP-пакеты из одной подсети в другую, а также нам придется немного перенастроить наши хосты, но об этом позже. Для настройки роутера нужно кликнуть по нему два раза левой кнопкой мыши, у вас появится такое окно, как показано на Рисунке 1.19.26.

Рисунок 1.19.26 Интерфейс командной строки маршрутизатора Cisco при первом запуске

Рисунок 1.19.26 Интерфейс командной строки маршрутизатора Cisco при первом запуске

Обратите внимание на еще одно отличие коммутаторов Cisco от маршрутизаторов: при первом запуске интерфейса командной строки, операционная система маршрутизатора предлагает нам выполнить быструю настройку в диалоговом режиме, нам это не нужно, поэтому нужно написать «no» и нажать Enter, а затем повторно нажать Enter, что получить приглашение ко вводу, тогда вы увидите в своем окне примерно то же самое, что и в листинге ниже.

System Configuration Dialog

Would you like to enter the initial configuration dialog? [yes/no]: no

Press RETURN to get started!

Router>

Теперь нам нужно перейти в привилегированный режим роутера, чтобы были доступны все команды, для этого используем команду «enable». Как вы помните, я добавил четыре модуля в свой роутер, давайте посмотрим, увидел ли их наш роутер, для этого можно воспользоваться следующими командами: «show ip interface» или «show ip interface brief», эти команды можно написать сокращенно, Cisco поймет: «sh ip int» и «sh ip int br».

Router#show ip interface brief

Interface IPAddress OK? Method Status Protocol

FastEthernet0/0 unassigned YES unset administratively down down

FastEthernet1/0 unassigned YES unset administratively down down

FastEthernet2/0 unassigned YES unset administratively down down

FastEthernet3/0 unassigned YES unset administratively down down

Router#show ip interface

FastEthernet0/0 is administratively down, line protocol is down (disabled)

Internet protocol processing disabled

FastEthernet1/0 is administratively down, line protocol is down (disabled)

Internet protocol processing disabled

FastEthernet2/0 is administratively down, line protocol is down (disabled)

Internet protocol processing disabled

FastEthernet3/0 is administratively down, line protocol is down (disabled)

Internet protocol processing disabled

Разница между двумя этими командами в том, что «show ip interface brief» предоставляет более ёмкую и сжатую информацию. По выводу этих команд можно понять, что у нашего маршрутизатора четыре порты, способных работах в режиме full duplex на скорости 100 Мбит/c (это понятно из FastEthernet), первый порт имеет номер 0/0, а последний 3/0. Ни одному порту роутера еще не задан IP-адрес, порты находятся в выключенном состояние, причем отключены они административно (надпись administratively down).

Давайте теперь включим порты, дам небольшое пояснение: порт роутера FastEthernet0/0 смотрит в сеть 192.168.2.x/24 (на Рисунке 1.19.22 она выделена оранжевым), а порт FastEthernet1/0 смотрит в сеть 192.168.1.х/24, которая выделена голубым цветом, следовательно, нам нужно включить этих два порта. Тут стоит упомянуть, что операционная система Cisco имеет несколько режимов работы в интерфейсе командной строки, более подробно об этом мы будем говорить чуть позже, сейчас нам нужно просто перейти в режим конфигурации порта FastEthernet0/0 и включить его, как это сделать показано в листинге ниже.

Router#configure terminal

Enter configuration commands, one per line. End with CNTL/Z.

Router(config)#interface fa0/0

Router(configif)#no shutdown

Router(configif)#

%LINK5CHANGED: Interface FastEthernet0/0, changed state to up

%LINEPROTO5UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

Router(configif)#

Давайте этот листинг разберем построчно:

  1. Сначала мы выполнили «configure terminal», таким образом мы попали в глобальный режим конфигурации всего роутера, это видно по тому, как изменилось приглашение ко вводу: «Router (config)#».
  2. Затем мы выполнили команду «interface fa0/0», эта команда сказала роутеру, что мы хотим конфигурировать порт FastEthernet0/0, кстати, fa0/0 – это сокращение FastEthernet0/0, о том, что мы находимся в режиме конфигурации интерфейса говорит изменившееся приглашение ко вводу: «Router (config-if)#».
  3. Далее мы выполнили команду «no shutdown», таким образом мы включили выбранный порт. Чтобы выключить порт на оборудование Cisco используется команда «shutdown», многие команды имеют приставку no для того, чтобы выполнить обратное действие.
  4. После того как мы включили порт, операционная система нам сообщила, что между нижним коммутатором и роутером появилась физическая связь, об этом говорит сообщение: «%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up», а затем появилась связь на канальном уровне, это видно по сообщению: «%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up».

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

Рисунок 1.19.27 В данный момент включен только один порт маршрутизатора

Рисунок 1.19.27 В данный момент включен только один порт маршрутизатора

Обратите внимание: сейчас мы находимся в режиме конфигурации интерфейса FastEthernet0/0, отсюда можно сразу перейти в режим конфигурации интерфейса FastEthernet1/0, достаточно написать: «FastEthernet1/0» или «fa1/0», можно вернуться в режим глобальной конфигурации, выполнив команду «exit» или вовсе выйти из режима конфигурации, написав команду «end». Думаю, вы без труда справитесь и включите интерфейс fa1/0 по аналогии.

Я включил порт fa1/0 и теперь предлагаю посмотреть на вывод команд «sh ip int» и «sh ip int br». Но тут стоит сказать про одну особенность: команды просмотра обычных параметров не работают в режиме конфигурации, чтобы их выполнить, нужно выйти из режима конфигурации, хотя если очень сильно нужно, то перед командой типа show можно использовать ключевое слово «do» в режиме конфигурации, тогда Cisco вас поймет.

Router#sh ip int br

Interface IPAddress OK? Method Status Protocol

FastEthernet0/0 unassigned YES unset up up

FastEthernet1/0 unassigned YES unset up up

FastEthernet2/0 unassigned YES unset administratively down down

FastEthernet3/0 unassigned YES unset administratively down down

Router#sh ip int

FastEthernet0/0 is up, line protocol is up (connected)

Internet protocol processing disabled

FastEthernet1/0 is up, line protocol is up (connected)

Internet protocol processing disabled

FastEthernet2/0 is administratively down, line protocol is down (disabled)

Internet protocol processing disabled

FastEthernet3/0 is administratively down, line protocol is down (disabled)

Internet protocol processing disabled

Теперь мы видим, что первых два порта маршрутизатора включены, но им не назначены IP-адреса, а это означает, что в данный момент мы еще не сможем пропинговать узел 192.168.2.1 с узла 192.168.1.1, так как наши сети еще не связаны роутером, чтобы их связать, нужно задать IP-адреса на порты маршрутизатора, при этом не просто так, а так, чтобы порт, смотрящий вверх оказался в одной посети с верхними узлами, то есть этому порту нужно задать IP-адрес из диапазона 192.168.1.х/24, а порт, который смотрит вниз, должен быть в одной канальной среде с нижними узлами (192.168.2.х/24).

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

Теперь наша задача заключается в том, чтобы задать соответствующие IP-адреса интерфейсам нашего роутер, напомню, что интерфейс fa1/0 смотрит вверх, поэтому я ему задам IP-адрес 192.168.1.25 (вместо 25 можно было бы задать любое свободное число от 1 до 254, которое еще не занято) с маской 255.255.255.0. Интерфейс fa0/0 смотрит вниз, я задам ему IP-адрес 192.168.2.77.

Router#conf t

Enter configuration commands, one per line. End with CNTL/Z.

Router(config)#int fa1/0

Router(configif)#ip address 192.168.1.25 255.255.255.0

Router(configif)#int fa0/0

Router(configif)#ip address 192.168.2.77 255.255.255.0

В листинге выше показано, что я задал IP-адреса интерфейсам роутера, для этого я сперва перешел в режим конфигурации и выбрал порт fa1/0, а затем командой «ip address» задал этому порту IP-адрес и маску, затем я переключился на порт fa0/0 командой «int fa0/0» и задал этому порту IP и маску.

Теперь можно попробовать пропинговать узел 192.168.2.1 с узла 192.168.1.1, посмотрим, появилась ли связь между двумя сетями. Как видно по Рисунку 1.19.28, наши сети все еще не связаны, пинг не проходит.

Рисунок 1.19.28 Проверяем связь между подсетями

Рисунок 1.19.28 Проверяем связь между подсетями

Так в чем же проблема? Роутер есть, IP-адреса на его порты мы задали, может, они не применились, давайте выполним команду «sh ip int br», чтобы это проверить, посмотрим, что она нам покажет.

Router(configif)#do sh ip int br

Interface IPAddress OK? Method Status Protocol

FastEthernet0/0 192.168.2.77 YES manual up up

FastEthernet1/0 192.168.1.25 YES manual up up

FastEthernet2/0 unassigned YES unset administratively down down

FastEthernet3/0 unassigned YES unset administratively down down

Router(configif)#

Как видим, IP-адреса есть, и они заданы верно, но проблема в том, что конечный узел не имеет ни малейшего представления о том, что в сети появился маршрутизатор, более того, конечный узел вообще не имеет представления о том, как выглядит наша сеть, нам нужно сказать конечному узлу, что в сети появился маршрутизатор, через который этот узел сможет попадать в другие сети, делается это путем задания основного шлюза и в качестве основного шлюза узлу задается IP-адрес того интерфейса маршрутизатора, который находится с этим узлом в одной канальной среде, то есть для верхних узлов, чей IP-адрес начинается на 192.168.1. основным шлюзом будет выступать IP-адрес 192.168.1.25, а для нижних узлов основным шлюзом будет 192.168.2.77.

Рисунок 1.19.29 Как задать основной шлюз узлу в Cisco Packet Tracer

Рисунок 1.19.29 Как задать основной шлюз узлу в Cisco Packet Tracer

Обратите внимание: чтобы задать основной шлюз узлу в Cisco Packet Tracer, нужно перейти в раздел IP-конфигураций, а затем вписать соответствующий IP-адрес в поле Default Gateway (шлюз по умолчанию или основной шлюз), итак теперь становится понятно, что Default Gateway – это не что-то мистическое, а просто IP-адрес маршрутизатора, через который конечный узел может попадать в другие сети, важно только, чтобы маршрутизатор и узел находились в одной канальной среде.

В дальнейшем мы поймем, что на самом деле шлюз по умолчанию — это даже не IP-адрес маршрутизатора, а целый маршрут, просто современные операционный системы компьютеров очень дружелюбны и не заставляют рядовых пользователей вникать в такие детали. Далее я задам всем верхним узлам в качестве Default Gateway 192.168.1.25, а нижним узлам 192.168.2.77, вы это можете сделать самостоятельно.

После того, как все будет готово, повторяем пинг, это показано на Рисунке 1.19.30.

Рисунок 1.19.30 Две сети связаны при помощи роутера

Рисунок 1.19.30 Две сети связаны при помощи роутера

Тут стоит обратить внимание на то, что первый кадр с ICMP пакетом потерялся, а дальше на три запроса мы получили три ответа, в дальнейшем мы поймем, почему так произошло, если же вам все-таки интересно понять сейчас, то не спешите лезть в Гугл, лучше переключите Cisco Packet Tracer в режим симуляции и посмотрите, что происходит.

На этом мы закончим первое знакомство с роутерами, осталось только добавить, что после конфигурации любого устройства Cisco нужно сохранять изменения, сами они не сохранятся, если изменения не будут сохранены, то при выключении устройства все ваши настройки будут сброшены, можете это проверить: для этого просто не сохраняйте изменения и воспользуйтесь тумблером питания на вкладке Physical, когда вы включите роутер линки не поднимутся.

Для сохранения изменений в реальной жизни используется команда «write», а на экзаменах Cisco эту команду использовать нельзя, так как Cisco собирается на новых устройствах убрать эту команду, на экзамене для сохранения нужно использовать команду «copy running-config startup-config», смысл этой команды мы поймем, когда будем говорит о том, где устройства Cisco хранит свои конфигурации и чем они отличаются. Сейчас отмечу, что многие команды одинаковы как для роутеров, так и для коммутаторов.

1.19.4 Простой пример настройки и использования домашнего роутера

Мы разобрались с тем, что делает маршрутизатор и зачем он нужен и даже немного познакомились с особенностями маршрутизаторов Cisco и их синтаксисом команд. Сейчас давайте вспомним самый простой и самый распространенный пример использования маршрутизаторов. Это, конечно, же ваш домашний Wi-Fi роутер, через который вы выходите в Интернет, а вы выходите в Интернет, иначе не читали бы этот текст.

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

Давайте представим простую домашнюю сеть, в которой роутер принимает интернет от провайдера, а затем раздает его двум-трем узлам в локальной сети, для нас сейчас даже не имеет значения как подключены компьютеры к роутеру: по Wi-Fi или проводами, нас больше интересует как компьютер попадает в Интернет через домашний маршрутизатор, для наглядности я нарисовал схему, ее можно посмотреть на Рисунке 1.19.31.

Рисунок 1.19.31 Примерная схема домашней подсети и доступа в Интернет

Рисунок 1.19.31 Примерная схема домашней подсети и доступа в Интернет

Домашний роутер в душе еще немного коммутатор, а также Wi-Fi радиоантенна. Для примера давайте посмотрим на мой домашний роутер: TP-Link Archer C20. У этого роутер на задней панели есть несколько портов: один выделен синим цветом и подписан Internet, этот порт еще иногда называют WAN, именно в этот порт вставляется кабель провайдера, а также есть четыре желтых порта с подписью LAN, в эти порты подключаются витой парой устройства локальной сети.

Рисунок 1.19.32 Домашний роутер TP-Link Archer C20

Рисунок 1.19.32 Домашний роутер TP-Link Archer C20

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

Рисунок 1.19.33 Настройки WAN-интерфейса на роутере

Рисунок 1.19.33 Настройки WAN-интерфейса на роутере

Здесь видно, что провайдер выдает мне IP-адрес по протоколу DHCP, то есть по динамике, о том, как работает этот протокол, мы поговорим чуть позже, сейчас прошу обратить внимание на маску: 255.255.255.128, она говорит о том, что со мной в одной подсети может находиться еще до 125 узлов, которые подключены к этому же провайдеру. А также следует сказать следующее: я от провайдера получаю белый IP-адрес по динамике, но это не означает, что при перезагрузке роутера IP-адрес поменяется, есть специальные настройки, которые позволяют выдавать всегда один и тот же IP-адрес по DHCP.

Следующее поле MTU, стандартное значение MTU 1500 байт, про MTU будет отдельная тема, этот параметр этого заслуживает, сейчас я лишь отмечу, что MTU – это количество полезной информации в Ethernet кадре или IP-пакете, а при несовпадении MTU связи может не быть. Почему-то роутер не показывает DNS-сервера, которые я также получаю по динамике, но они есть. Мой роутер получает IP-адреса DNS серверов провайдера, DNS сервер выполняет очень важную задачу: он преобразует IP-адреса в доменные имена сайтов, на которые мы заходим и наоборот, хотя на самом все несколько сложнее и про DNS пишут отдельные книги.

Теперь давайте посмотрим на настройки роутера, которые касаются локальной сети или настройки LAN интерфейса, эти настройки показаны на Рисунке 1.19.34.

Рисунок 1.19.34 Настройки LAN-интерфейса на роутере

Рисунок 1.19.34 Настройки LAN-интерфейса на роутере

Обратите внимание: на рисунке указан IP-адрес 192.168.0.1, этот IP-адрес прописан на роутере, компьютер его использует как шлюз по умолчанию для выхода во внешний мир, так же здесь указана маска подсети, из этой маски следует, что в данный момент в моей домашней сети может быть до 253 узлов, хотя с таким количеством узлов этот маршрутизатор не справится.

Еще обратите внимание на MAC-адрес (B0:4E:26:AA:B8:39), это физический адрес роутера, который видят устройства моей локальной сети, устройства, которые находятся в сети провайдера видят другой MAC, если говорить о домашних роутерах, то обычно этот адрес на единицу больше, то есть в моем случае: B0:4E:26:AA:B8:3A.

Обычно у каждого физического интерфейса роутера свой мак-адрес и каждый из этих мак-адресов находится в своей канальной среде или в своей подсети. Также стоит отметить, что на рисунке выше мы видим настройки, которые прописаны на роутере, но мы не видим настройки, которые должны быть прописаны на узлах локальной сети, давайте на них посмотрим на Рисунке 1.19.35.

Рисунок 1.19.35 DHCP настройки на домашнем роутере

Рисунок 1.19.35 DHCP настройки на домашнем роутере

Из рисунка видно, что домашний роутер работает не только в качестве коммутатора и маршрутизатора, но и в качестве DHCP-сервера, то есть он выдает сетевые настройки машинам, находящимся в локальной сети при этом выдаваемые IP-адреса, находятся в диапазоне: от 192.168.0.100 до 192.168.0.199, и все эти IP-адреса находятся в одной подсети с IP-адресом роутера, прописанном на LAN-интерфейсе, это важно, так как иначе наша сеть бы не работала. Как видно из рисунка, время, на которое устройства моей локальной сети получают настройки от роутера, составляет 120 минут, то есть каждых два часа эти устройства должны продлевать аренду полученных настроек. Помимо самих IP-адресов для узлов локальной сети, роутер выдает этим узлам IP-адрес шлюза, через который эти устройства будут выходить в Интернет.

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

Стоит еще отметить, что у домашнего роутера есть таблица маршрутизации, которая для роутера является картой, при помощи нее он определяет: куда направить IP-пакет, пришедший на роутер, в нашем случае таблица очень простая и состоит из трех записей, она показана на Рисунке 1.19.36.

Рисунок 1.19.36 Таблица маршрутизации домашнего роутера

Рисунок 1.19.36 Таблица маршрутизации домашнего роутера

Первая запись в этой таблице – это есть ничто иное, как маршрут до провайдерского роутера, при помощи этой записи домашний роутер понимает, как добраться до роутера, который установлен у провайдера. Вторая запись помогает роутеру отправлять пакеты, приходящие из вне в мою локальную сеть. А третья запись – это маршрут по умолчанию, дефолтный маршрут, восьми нулевый маршрут (так как IP-адрес и маска в этом маршруте суммарно дают восемь нулей), как его не называй, назначение этой записи не изменится и вот какую инструкцию дает эта запись домашнему роутеру: если тебе пришел IP-пакет с IP-адресом назначения, до которого ты не знаешь, как добраться, отправляй этот пакет провайдерскому роутеру с IP-адресом, указанным в колонке шлюз, он разберется. Другими словами: когда машины моей локальной сети обращаются к машинам в сети Интернет, они отправляют на домашний роутер IP-пакеты, в которых указан IP-адрес назначения (то есть IP-адрес устройства, к которому они хотят обратиться) и если у роутера в таблице маршрутизации не будет информации о том, как добраться до этого IP-адреса, он отправит такой пакет провайдерскому роутеру, а тот уже разберется, куда направлять такие пакеты, тут бы можно было немного продолжить и рассказать о том, что такое BGP и full view, но пока слишком рано, кому интересно, можете погуглить.

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

Так вот, наш роутер, чтобы не генерировать лишний трафик и не делать широковещательных ARP-запросов при каждом обращении к нему со стороны локальных устройств, тем самым нагружая локальную сеть и уменьшая свою производительность, поступает несколько более хитро, он создает специальную таблицу, которая называется ARP-таблица, в которой ведет учет: какому мак-адресу соответствует тот или иной IP-адрес, пример такой таблицы показана на Рисунке 1.19.37.

Рисунок 1.19.37 ARP-таблица домашнего роутера

Рисунок 1.19.37 ARP-таблица домашнего роутера

Компьютеры также умеют делать ARP-запросы и они тоже понимают, что это не самое эффективное решение и что каждый ARP-запрос – это дополнительная загрузка локальной сети, поэтому они также ведут свою ARP-таблицу, в которую заносят записи о соответствие IP и MAC адресов в своем широковещательном домене, ARP таблица моего компьютера показана на Рисунке 1.19.38.

Рисунок 1.19.38 ARP-таблица компьютера с Windows 10

Рисунок 1.19.38 ARP-таблица компьютера с Windows 10

Как посмотреть ARP-таблицу мы разобрались, но компьютер может дать информацию о том, какие сетевые настройки он использует для работы в локальной сети, для этого в операционных системах Windows есть команда ipconfig, но нас больше интересует результат этой команды с параметром /all, то есть целиком команда будет выглядеть так: ipconfig /all. Таки образом вы сможете посмотреть все сетевые интерфейсы вашего компьютера и их настройки, настройки и параметры Wi-Fi адаптера моего ноутбука, через который идет подключение к роутеру, показаны на Рисунке 1.19.39.

Рисунок 1.19.39 Сетевые конфигурации компьютера с Windows 10

Рисунок 1.19.39 Сетевые конфигурации компьютера с Windows 10

Здесь указана модель адаптера, его мак-адрес, также видно, что компьютер получает настройки от роутера по DHCP, еще указано время, когда IP-адрес был получен, а также когда истечет срок аренды, но обратите внимание: в качестве DNS-сервера используется IP-адрес шлюза, в данном случае это означает, что компьютер будет отправлять DNS запросы домашнему роутеру, а тот в свою очередь будет пересылать запросы DNS-серверам провайдера, адреса которых у него есть. Также у любого компьютера есть своя таблица маршрутов, эту таблицу можно редактировать руками, но нам ее нужно только посмотреть, на компьютерах с ОС Windows это делается командой route print, ее вывод показан на Рисунке 1.19.40.

Рисунок 1.19.40 Таблица маршрутов компьютера

Рисунок 1.19.40 Таблица маршрутов компьютера

Здесь нас интересует первая запись в этой таблице, это маршрут по умолчанию, он здесь нужен по тем же причинам, что и роутеру, ведь наш компьютер ничего не знает о внешнем мире, да ему это и не надо. Стоит обратить внимание на крайний правый столбец, который называется «Метрика». Метрика – это стоимость маршрута, чем ниже метрика, тем лучше или дешевле маршрут, про метрики мы будем подробнее говорить, когда будем разбираться с протоколами динамической маршрутизации.

Завершая разговор, давайте приведем схему, реализованную в Cisco Packet Tracer, которая эмулирует процесс взаимодействия домашней сети с сетью провайдера. Вы ее сможете собрать самостоятельно, а затем в режиме симуляции посмотреть, что и как там происходит, схема показана на Рисунке 1.19.41.

Рисунок 1.19.41 Схема Cisco Packet Tracer моделирующее взаимодействие с провайдером

Рисунок 1.19.41 Схема Cisco Packet Tracer моделирующее взаимодействие с провайдером

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

1.19.5 Выводы

Итак, мы с вами разобрались в назначении роутеров и маршрутизаторов и сделали выводы о том, что их главное назначение заключается в перекладывание IP-пакетов из одной сети в другую, мы разобрались с базовыми принципами этого процесса, но более детально разбираться с работой роутеров мы будем в дальнейшем в рамках этих уроков. Также в процессе разговора о роутерах мы обозначили несколько интересных и полезных технологий и протоколов, принцип работы которых нужно понимать, с этими технологиями мы тоже будем разбираться (DHCP, NAT, DNS и другие).

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

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

Марутшрутизация в компьютерных сетях

Маршрутизация состоит из двух этапов:

  1. На первом этапе происходит изучение сети, какие подсети есть в этой составной сети, какие маршрутизаторы и как эти маршрутизаторы объединены между собой.
  2. Второй этап маршрутизации выполняется когда сеть уже изучена и на маршрутизатор поступил пакет, для этого пакета нужно определить куда именно его отправить. Иногда для второго этапа маршрутизации используется отдельный термин “продвижение” по-английски forwarding.

Этапы маршрутизации

Варианты действий маршрутизатора

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

Схема маршрутизации пример

Рассмотрим маршрутизатор D, на него пришел пакет, и маршрутизатор должен решить, что ему делать с этим пакетом. Начнем с того, какие вообще возможны варианты действий у маршрутизатора. Первый вариант, сеть которой предназначен пакет подключена непосредственно к маршрутизатору. У маршрутизатора D таких сетей 3, в этом случае маршрутизатор передает пакет непосредственно в эту сеть.

Сети маршрутизатора

Второй вариант, нужная сеть подключена к другому маршрутизатору (А), и известно, какой маршрутизатор нужен. В этом случае, маршрутизатор D передает пакет на следующий маршрутизатор, который может передать пакет в нужную сеть, такой маршрутизатор называется шлюзом.

Передача пакетов у маршрутизаторов

Третий вариант, пришел пакет для сети, маршрут которой не известен, в этом случае маршрутизатор отбрасывает пакет. В этом отличие работы маршрутизатора от коммутатора, коммутатор отправляет кадр который он не знает куда доставить на все порты, маршрутизатор так не делает. В противном случае составная сеть очень быстро может переполнится мусорными пакетами для которых не известен маршрут доставки.

Что нужно знать маршрутизатору для того чтобы решить куда отправить пакет?

  • Во-первых у маршрутизатора есть несколько интерфейсов, к которым подключены сети. Нужно определить в какой из этих интерфейсов отправлять пакет.
  • Затем нужно определить, что именно делать с этим пакетом. Есть 2 варианта, можно передать пакет в сеть (192.168.1.0/24), либо можно передать его на один из маршрутизаторов подключенные к этой сети. Если передавать пакет на маршрутизатор, то нужно знать, какой именно из маршрутизаторов подключенных к этой сети, выбрать для передачи пакета.

Знать какой маршрутизатор выбрать

Таблица маршрутизации

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

Таблица маршрутизации

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

Таблица маршрутизации Windows

Продолжим рассматривать маршрутизатор D, у него есть три интерфейса. Ниже на картинке представлен вид таблицы маршрутизации для windows, которые в качестве идентификатора интерфейса используют ip-адрес, который назначен этому интерфейсу. Таким образом в столбце интерфейс есть 3 ip-адреса, которые соответствуют трем интерфейсам маршрутизатора.

Интерфейс маршрутизации

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

Шлюз подсоединен (Маршрутизация)

Если же нам нужно передать пакет на следующий маршрутизатор то в поле шлюз указывается ip-адрес этого маршрутизатора.

Шлюз (Маршрутизация)

Таблица маршрутизации Linux

В операционной системе linux таблица маршрутизации выглядит немного по-другому, основное отличие это идентификатор интерфейсов. В linux вместо ip-адресов используется название интерфейсов. Например, wlan название для беспроводного сетевого интерфейса, а eth0 название для проводного интерфейса по сети ethernet.

Таблица маршрутизации в Linux

Также здесь некоторые столбцы удалены для сокращения (Flags, Ref и Use). В других операционных системах и в сетевом оборудовании вид таблицы маршрутизации может быть несколько другой, но всегда будут обязательны столбцы ip-адрес, маска подсети, шлюз, интерфейс и метрика.

Только следующий шаг!

Часто возникает вопрос, что делать, если сеть для который пришел пакет находится не за одним маршрутизатором? Чтобы в неё попасть, нужно пройти не через один, а через несколько маршрутизаторов, что в этом случае нужно вносить в таблицу маршрутизации.

Следующий шаг в маршрутизации

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

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

маршрутизатор знает следующий шаг

Метрика

Можно заметить, что в нашей схеме в одну и ту же сеть, например вот в эту (10.2.0.0/16) можно попасть двумя путями, первый путь проходят через один маршрутизатор F, а второй путь через два маршрутизатора B и E.

2 пути маршрутизации

В этом отличие сетевого уровня от канального. На канальном уровне у нас всегда должно быть только одно соединение, а на сетевом уровне допускаются и даже поощряются для обеспечения надежности несколько путей к одной и той же сети.

Какой путь выбрать? Для этого используются поле метрика таблицы маршрутизации.

Таблица метрика в маршрутизации

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

Метрика в маршрутизации

Раньше, метрика измерялось в количестве маршрутизаторов, таким образом расстояние через маршрутизатор F было бы один, а через маршрутизаторы B и E два.

метрика измерялось в количестве маршрутизаторов

Однако сейчас метрика учитывает не только количество промежуточных маршрутизаторов, но и скорость каналов между сетями, потому что иногда бывает выгоднее пройти через два маршрутизатора, но по более скоростным каналам. Также может учитываться загрузка каналов, поэтому сейчас метрика — это число, которое учитывает все эти характеристики. Мы выбираем маршрут с минимальной метрикой в данном примере выше, будет выбран первый маршрут через маршрутизатор F.

Записи в таблице маршрутизации

Откуда появляются записей в таблице маршрутизации? Есть два варианта статическая маршрутизация и динамическая маршрутизация.

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

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

Маршрут по умолчанию

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

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

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

Ниже пример маршрута по умолчанию в таблице маршрутизации в операционной системе linux.

пример маршрута по умолчанию в таблице маршрутизации в операционной системе linux

Ip-адрес и маска равны нулю, в адрес и шлюз указываются ip-адрес маршрутизатора по умолчанию.

Длина маски подсети

Рассмотрим пример. Маршрутизатор принял пакет на ip-адрес (192.168.100.23), в таблице маршрутизации есть 2 записи (192.168.100.0/24 и 192.168.0.0/16) под который подходит этот ip-адрес, но у них разная длина маски. Какую из этих записей выбрать? Выбирается та запись, где маска длиннее, предполагается, что запись с более длинной маской содержит лучший маршрут интересующей нас сети.

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

Длина маски подсети в маршрутизации

На кампусе находятся свои маршрутизаторы, на которых сеть была дальше разделена на части предназначенные для отдельных факультетов. Разделение сетей производится с помощью увеличения длины маски, весь блок адресов имеет маску / 16, блоки кампусов имеют маску / 17, а блоки факультетов / 18.

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

фрагмент таблицы маршрутизации

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

И так получается, что выбирается всегда маршрут с маской максимальной длины. Общие правила выбора маршрутов следующие.

  • Самая длинная маска 32 — это маршрут конкретному хосту, если в таблице маршрутизации есть такой маршрут, то выбирается он.
  • Затем выполняется поиск маршрута подсети с маской максимальной длины.
  • И только после этого используется маршрут по умолчанию, где маска / 0 под которую подходят все ip-адреса.

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

  • Как правило такая таблица содержит описание присоединенной сети, который подключен данный компьютер.
  • Адрес маршрутизатора по умолчанию (шлюз или gateway) через который, выполняется подключение к интернет, или к корпоративной сети предприятия.
  • А также могут быть дополнительные маршруты к некоторым знакомым сетям, но это необязательно.

Для того чтобы просмотреть таблицу маршрутизации, можно использовать команды route или ip route (route print (Windows); route и ip route (Linux)).

Маршрутизация — поиск маршрута доставки пакета между сетями через транзитные узлы — маршрутизаторы.

Эта статья подходит для: 

T1600G-18TS , T1600G-28TS , TL-R600VPN( V4 ) , T3700G-52TQ , T1700G-28TQ , T2600G-52TS , T2600G-18TS , T2600G-28TS , TL-R480T+ , T2600G-28SQ , T1600G-28PS , T2700G-28TQ , T2500G-10TS( V2 ) , T2600G-28MPS , T1600G-52MPS , T1600G-52PS , TL-ER6120 , TL-ER6020 , T1600G-52TS , T3700G-28TQ , TL-ER5120 , TL-ER604W , T1700X-16TS

Иногда нам может понадобиться разделить внутреннюю сеть на несколько подсетей, используя один маршрутизатор для подключения к Интернет. Однако, согласно настройкам по умолчанию, маршрутизаторы TP-Link будут отклонять пакеты, исходные IP-адреса которых находятся в различных подсетях от его сегмента LAN IP. Поэтому, чтобы добиться поставленной задачи, маршрутизатору необходимо иметь возможность транслировать (NAT) и доставлять пакеты, чьи исходные IP-адреса находятся в различных подсетях от сегмента LAN IP. Multi-nets – это функция маршрутизаторов TP-Link, которая делает это возможным. Но для того, чтобы разделить внутреннюю сеть на несколько сегментов, необходимо использовать коммутатор 3-его уровня, как “традиционный маршрутизатор”.

Ниже представлен пример построения сети multi-nets (с множеством подсетей), с использованием функции Multi-nets NAT на маршрутизаторе TP-Link с коммутатором 3-его уровня.

1.      Сценарий действий

Три отдела компании находятся в одном здании: отдел маркетинга, отдел финансов и отдел персонала. Существуют следующие требования:

1) Каждому отделу необходимо назначить собственную подсеть.

2) Все отделы должны иметь возможность коммуникации друг с другом.

3) Все отделы имеют доступ к Интернету через один маршрутизатор-шлюз. 

2.      Планирование и топология сети:

1) Сетевой адрес каждого отдела:

Отдел

Сетевой адрес

Маркетинг

172.16.10.0/24

Финансы

172.16.20.0/24

Персонал

172.16.30.0/24

2) Топология:

В данном примере роль маршрутизатора-шлюза для Интернет выполняет маршрутизатор TL-ER6120, и T3700G-28TQ выступает в качестве коммутатора 3 уровня. 

3.      Настройки для маршрутизатора-шлюза:

Шаг 1

Создайте запись Multi-nets NAT для отделов маркетинга, финансов и персонала. 

Шаг 2

Добавьте записи статической маршрутизации для отдела маркетинга, финансов и персонала:

Статическая маршрутизация необходима для того, чтобы маршрутизатор-шлюз TL-ER6120 имел информацию для доставки пакетов IP-адресам в различных подсетях (172.16.10.0/24, 172.16.20.0/24 и 172.16.30.0/24)

На данный момент мы произвели настройку маршрутизатора TL-ER6120. Далее мы продолжим настройку коммутатора 3 уровня T3700G-28TQ.

4.    Настройка коммутатора 3 уровня T3700G-28TQ

Согласно топологии, 4 подсети должны быть разделены на коммутаторе 3-его уровня T3700G-28TQ:

системная vlan1 (подсеть: 192.168.0.0/24, интерфейс vlan 192.168.0.11);

vlan2 для отдела маркетинга (172.16.10.0/24, интерфейс vlan 172.16.10.1);

vlan3 для отдела финансов (172.16.20.0/24, интерфейс vlan 172.16.20.1);

vlan4 для отдела персонала (172.16.30.0/24, интерфейс vlan 172.16.30.1);

Поскольку vlan1 – vlan по умолчанию, нам потребуется лишь изменить IP-интерфейс для vlan1 на значение 192.168.0.11.

Шаг 2

Создайте в разделе “802.1Q VLAN”: vlan2 для отдела маркетинга, vlan3 для отдела финансов и vlan4 для отдела персонала, и добавьте в каждую группу необходимые порты. Link type (Тип порта) должен быть установлен в значении Access (Доступ).

Шаг 3

Установите IP-интерфейс для vlan2, vlan3 и vlan4.

Шаг 4

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

Не забудьте сохранить настройки!

С помощью топологии и всех указанных выше настроек, три отдела с различными подсетями смогут поддерживать коммуникацию друг с другом через коммутатор T3700G-28TQ и получать доступ в Интернет через маршрутизатор TL-ER6120. 

Был ли этот FAQ полезен?

Ваш отзыв поможет нам улучшить работу сайта.

Что вам не понравилось в этой статье?

  • Недоволен продуктом
  • Слишком сложно
  • Неверный заголовок
  • Не относится к моей проблеме
  • Слишком туманное объяснение
  • Другое

Как мы можем это улучшить?

Спасибо

Спасибо за обращение
Нажмите здесь, чтобы связаться с технической поддержкой TP-Link.

Как раздать Интернет в две подсети?Доброго дня, ребят. Нынче тема нашего выпуска будет ориентирована на ту немногочисленную категорию подписчиков, которая уже работает на предприятиях. Ибо связана она с насущной практической проблемой, с которой за этот год, мне пришлось столкнуться уже дважды. Чтобы там не говорили по телевизору, но финансирование многих государственных учреждений каждый год понемножку урезают. Делается это в разных сферах. В том числе и в компьютерно-информационной области. Поэтому если раньше многие зажиточные предприятия могли позволить иметь в своём распоряжении основной канал доступа в Интернет, резервный канал, отдельную линию для начальства, чтобы не загружать основной и из соображений безопасности. То сейчас ситуация постепенно меняется.

Как правило, дополнительные каналы отключают, оставляя один быстрый. Следовательно, все компьютеры для доступа к Интернету используют один шлюз. Но как в такой ситуации можно обеспечить безопасность данных? Если и директор филиала Газпрома и простой эникейщик Васька находятся в одной сети, то рано или поздно может случиться страшное. Перечитает наш Вася на досуге очередной номер «Хакера» и начнёт удалённо проверять компьютер вышестоящего начальства на прочность. Для того чтобы избежать в будущем подобных ситуаций системному администратору требуется разделить единую сеть на подсети. Сделать это можно, например, в соответствии с названиями структурных подразделений.

Для лучшего понимания, давайте немного упростим. Допустим, разобьём сеть небольшого офиса на «Общую сеть» и «сеть бухгалтерии». Пускай первая сеть будет 192.168.1.X, а вторая 192.168.2.X. Тогда для компьютеров общей сети в качестве шлюза мы пропишем 192.168.1.1 (это IP адрес нашего роутера), а для бухгалтерии… Вот тут самое интересное. Что прописать для бухгалтерии в качестве шлюза, чтобы и интернет работал напрямую и подсетка, была отдельная? Да ничего. Нахрапом этот вопрос не решить. Однако существуют несколько проверенных способов решения данной задачи, о которых я и собираюсь вам сегодня рассказать. У каждого из них есть свои плюсы и минусы. Можно задействовать исключительно аппаратные средства, а также комбинировать их в связке с программным решением.

Задачка с подсетями

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

Задача «Раздача Интернета двум подсетям»

Дано:

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

Найти:

Необходимо рассмотреть способы с помощью которых, можно обеспечить бухгалтерской сети доступ к каналу Интернета таким образом, чтобы общая сеть и сеть бухгалтерии «не видели друг друга».

Решение 1. Прокси-сервер

Первое, что лично мне пришло в голову это прокси-сервер. Аппаратный или программный. Например, на базе User Gate 2.8, который мы рассматривали пару месяцев назад. Тут всё просто. Находим слабенький компьютер, даём на него интернет, накатываем проксю, прописываем пользователей и вводим в общую сеть. Подсетка бухов получает контролируемый инет. А мы вроде бы решили проблему. Но не тут то было! Во-первых, инет этот будет не такой быстрый, как на прямую с роутера. Во-вторых, если у вас не купленная навороченная прокся, а старый крякнутый гейт, то вы получите массу проблем с HTTPs сайтами и специализированными программами, использующими в своей работе хитрые протоколы. И в третьих, самое прискорбное то, что наш прокси-сервер будет выступать в роли моста между общей сетью и выделенной подсетью, а это в свою очередь влечёт за собой возможность доступа к общим ресурсам со всех компьютеров. Да я знаю, что можно ещё поднять и произвести тонкую настройку фаервола… Это уже совсем лютый вариант. Он вряд ли подойдёт новичкам.

Решение с прокси-сервером

В таких ситуациях мне всегда вспоминаются знаменитые слова Наполеона. «Самые простые решения – одновременно самые лучшие». Переосмыслив всё вышесказанное можно сделать вывод, что для маленькой офисной сети прокси-сервер в связке с фаерволом не самое лучшее решение, хотя и реализуемое при должном опыте.

Решение 2. VLANы на коммутаторе

Второй способ подойдёт тем, кто изначально грамотно спроектировал свою сеть или уже попал на предприятие с правильным расположением объектов сетевой инфраструктуры. Что лично я подразумеваю под правильным расположением? Это наличие серверной комнаты с ограниченным для посторонних лиц доступом. И расположение в этой комнате центральных узлов сети: контроллера домена, роутера и центрального коммутатора. Именно связка, в которой возможно подключение роутера в центральный управляемый коммутатор и будет являться основой для следующего решения. Ибо в нём мы будем создавать VLANы (виртуальные локальные сети) на свитче. О том к чему это приведёт, и какие недостатки имеет подобный подход, сейчас разберёмся.

Решение с VLANами

Для демонстрации я буду использовать роутер ASUS DSL-N12U и коммутатор D-LINK DGS-1224T. Ничего особенного. Вполне посредственный роутер и устаревший управляемый свитч с минимумом настроек. Подключаем кабель от роутера в 23 порт, кабель от компьютера из общей сети в 1, а кабель от одного из ПК выделенной подсети в порт №9. Все настройки я буду выполнять с ещё одного дополнительного компьютера, который подключу в 24 порт, чтоб не запутаться.

Порты на свитче

Шаг 1. Как только вся возня с проводами окончена, можем заходить на свитч. По умолчанию веб-интерфейс срабатывает по адресу 192.168.0.1 и положительно реагирует на пароль admin.

Вход на свитч

Шаг 2. Сразу рекомендую поменять IP адрес. Делается это во вкладке «System». В качестве примера изменю последнюю цифру на 24, затем пропишу IP адрес роутера и сохраню настройки, кликнув на «Apply».

Смена IP

Шаг 3. Ну что. Пора взяться за VLANы. Переходим в соответствующую вкладку и жмём «Add new VID (VLAN ID)».

Добавить новый VID

Шаг 4. В появившемся окне присваиваем правилу номер (например 2) и выделяем какие порты будут видеть друг друга в случае работы по второму правилу. Допустим с 1 по 8 и 23 (порт роутера). Должны же они как то инет получать. Первые восемь портов для компьютеров в нашем случае это общая сеть.

Порты общей сети

Шаг 5. По аналогии создаём третье правило. В котором портам с 9 по 16 открываем доступ к друг дружке и роутеру. Это будет наша подсеть. Она ни в коем случае не будет пересекаться с общей сетью, но при этом будет иметь доступ к Интернету. Сохраняемся.

Порты бухгалтерской подсети

Шаг 6. Далее в раскрывающемся вверху списке выбираем параметр «Port VID Setting» и прописываем какие из портов по какому правилу будут работать. Как мы уже определились ранее порты с 1 по 8 будут работать по правилу №2, с 9 по 16 возьмут за основу 3 правило, а с 17 по 24 останутся работать на дефолте и будут видеть всех. Подразумевается, что сеть у нас маленькая и последний диапазон портов будет свободен, и если уж и будет использоваться, то только админом и только для настройки.

Port VID setting

Шаг 7. Со свитчом всё. Полезли на роутер. По умолчанию он тоже имеет IP адрес 192.168.0.1. Меняем его на уникальный. Делается это во вкладке ЛВС. Такс. Раз уж он подключён в 23 порт, то пусть и IP имеет 192.168.0.23.

Смена IP на роутере

Шаг 8. Осталось настроить компьютеры. На первом компьютере (из общей сети) прописываем IPшник (192.168.0.1), стандартную маску (255.255.255.0) и в качестве основного шлюза и DNS — адрес роутера, который мы изменили шагом выше (192.168.0.23).

Настройка компьютера из общей сети

Шаг 9. Аналогичным образом поступаем с компьютером подключённым в 9 порт. Не волнуйтесь о том, что третий блок в их IP адресе совпадает. В сети они всё равно друг друга не увидят.

Настройка компьютера из подсети

Шаг 10. Или увидят? Давайте убедимся в этом. Но сначала проверим интернет. Для этого пошлём PING с первого компьютера на роутер. Уф. Прошёл. А теперь проверим пинганёт ли он своего собрата из другой подсети. Тааак. Кажись не пинганёт. Значит со стороны компьютера общей сети всё отлично.

PING с общего

Шаг 11. Убеждаемся в правоте наших доводов со стороны бухгалтерского компьютера. Инет работает, общую сеть не видит. PROFIT!

Проверка интернета

PING с компьютера подсети

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

Решение 3. Второй дополнительный роутер

Ну, хорошо. А что же делать тем, кто имеет в своём распоряжении относительно крупную сеть, щупальцы которой охватывают несколько зданий? Ведь и ежу понятно, что перепроводка всех участков этого монстра опасна для нервной системы всех работников предприятия. Всюду беспорядочно натыканы свитчи, не о какой серверной комнате и речи не идёт, а роутер находится вообще в курилке под потолком. Страшно представить? Да такое случается сплошь и рядом. И дабы не ударить в грязь лицом и показать себя как специалиста, нам нужно суметь решить поставленную задачу даже в подобных условиях.

Решение со вторым роутером

Для начала нам понадобится второй роутер. Я возьму роутер той же модели, что и в прошлом случае. Подключаем к простеньким свитчам все компьютеры. Один будет играть роль ПК из общей сети, другой роль компьютера из подсети. В один из свитчей подключаем роутер имеющий подключение к Интернету по оптоволокну (или ADSL). А второй, дополнительный роутер ставим поближе к подсети и подключаем его WANом в общую сеть, а LANом в подсеть. После того, как все работы по коммутации произведены, переходим к настройке оборудования.

Шаг 1. Заходим на дополнительный роутер и в настройках Ethernet WAN активируем функцию «Включить Ethernet WAN на порту». Далее выбираем из списка порт, в который будет вставлен провод из общей сети. В типе подключения указываем «Static IP» для того, чтобы можно было в настройках IP адреса вручную задавать IP, маску и шлюз. Чем мы собственно сейчас и займёмся. Прописываем IP адрес из диапазона общей сети, например 192.168.0.2, маска оставляем по умолчанию, а в качестве шлюза указываем адрес нашего основного интернет-роутера 192.168.0.1. Чуть ниже не забываем прописать DNSку. Её адрес будет такой же как и адрес роутера. Сохраняем все настройки, нажав внизу на кнопочку «применить».

Настройка WAN

Шаг 2. Интернет на дополнительный роутер мы дали. Но компьютеры в  подсети до сих пор его не видит. А нам нужно сделать так, чтобы для выделенной сети он выступал в качестве устройства для выхода в Интернет. Для этого на вкладочке «ЛВС» задаём роутеру адрес из диапазона сети бухгалтерии. Например, 192.168.123.45. Этот адрес мы будем указывать в качестве шлюза и DNS-сервера на всех тачках подсети.

Настройка IP для подсети

Шаг 3. В принципе можно уже проверять. Давайте пропишем все настройки для одного из компьютеров подсети. Пусть IP адрес будет 192.168.123.1, маска стандартная, шлюз и DNS как мы уже обговаривали ранее 192.168.123.45.

Настройка ПК в бухгалтерии

Шаг 4. Сохраняем и пробуем пропинговать сначала новоиспечённый роутер, а затем один из компьютеров, который находится в общей сети. В первом случае результат, как видим положительный. А вот во втором, никак. Значит и со стороны общей сети в сетевом окружении нас не видно.

Проверка связи

Шаг 5. Для полной гарантии того, что всё получилось, запустим браузер и удостоверимся в наличии Интернет-соединения. Всё работает. Отлично.

Проверка интернета

Вывод:

Таким образом, мы разобрали три реально работающих решения для конкретной ситуационной задачи, с которой может столкнуться каждый начинающий и более-менее опытный системный администратор. Можно ли ответить какой из способов самый лучший? Наверное, нет. Тут всё зависит от дополнительных условий, поставленных перед вами. А также ресурсов, которыми вы на момент постановки задачи располагаете.

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

Второй подойдёт тем, кто имеет в своём распоряжении более-менее приличную серверную с коммутационным центром. Или тем, у кого просто в шкафу завалялся старенький управляемый свитч, а сеть которую вы обслуживаете очень маленькая.

Третий же вариант подойдёт абсолютно всем. Он применим в любой ситуации. Однако требует дополнительных расходов на роутер. Либо, если уж берёте из того же дряхлого шкафа, старый, то обязательно убедитесь, что в нём есть минимум 2 порта RJ-45 и его прошивка поддерживает возможность назначения одного из них в качестве WAN-интерфейса.

Всё друзья. Я как всегда затянул выпуск. Хотя прекрасно понимаю, что ваше время это самый ценный ресурс. Но ребят. По опыту знаю, что лучше 1 раз потратить 15-20 минут и получить ценную информацию. Чем неделями сидеть на форумах и по чайной ложке вычерпывать из разных постов крупицы полезной инфы. Так, что не серчайте. До встречи через недельку. Всем добра и хорошего новогоднего настроения!

Делитесь с друзьями

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

В предыдущих статьях мы разбирали отличия сетевых устройств. А именно, чем коммутатор отличается от маршрутизатора (можно почитать здесь и здесь). То есть коммутатор в классическом понимании — это устройство, которое получает Ethernet-кадры на одном интерфейсе и передает эти кадры на другие интерфейсы, базируясь на заголовках и своей таблицы коммутации. Работает коммутатор канальном уровне.
Маршрутизаторы работают аналогично. Только оперируют IP-пакетами. И работают на сетевом уровне. Хочу заметить, что есть коммутаторы и маршрутизаторы, которые работают и на более высоких уровнях, но мы сейчас говорим о классических устройствах.
Встает вопрос. Почему мы не можем просто коммутировать весь трафик? И зачем требуются IP-адреса и маршрутизация. Ведь что MAC-адреса, что IP-адреса уникальны у каждого сетевого устройства (ПК, телефон, сервер и т.д.). Сейчас отвечу более развернуто.

На рисунке представлены 2 коммутатора, к которым подключено по 250 пользователей. Соответственно, чтобы обеспечить связность между всеми участниками, коммутаторы должны знать MAC-адреса всех участников сети. То есть таблица каждого коммутатора будет содержать 500 записей. Это уже не мало.
А если представить, что таким образом будет работать Интернет, в котором миллиарды устройств? Следовательно нужно искать выход. Проблема коммутации заключается в том, что она плохо масштабируется. И тяжело соблюдать иерархию.
Теперь посмотрим на эту ситуацию с точки зрения маршрутизации.

Здесь вводится понятие IP-адресации. Слева сеть 192.168.1.0/24 соединенная с левым маршрутизатором (R1), а справа сеть 192.168.2.0/24 соединенная с правым маршрутизатором (R2), соответственно. R1 знает, что добраться до сети 192.168.2.0 можно через соседа R2 и наоборот R2 знает, что добраться до сети 192.168.1.0 можно через соседа R1. Тем самым 500 записей в таблице коммутации заменяются одной в таблице маршрутизации. Во-первых это удобно, а во-вторых экономит ресурсы. Вдобавок к этому, можно соблюдать иерархичность, при построении.
Теперь поговорим о том, как таблица маршрутизации заполняется. Как только маршрутизатор включается «с коробки», он создает таблицу маршрутизации. Но самостоятельно он туда может записать только информацию о сетях, с которыми он связан напрямую (connected).
Покажу на примере в CPT:

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

Router#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

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

Зададим IP-адресах на интерфейсах маршрутизатора:

Router>enable 
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface fastEthernet 0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

Router(config-if)#exit
Router(config)#interface fastEthernet 0/1
Router(config-if)#ip address 192.168.2.1 255.255.255.0
Router(config-if)#no shutdown 

Router(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up

Router(config-if)#end

И посмотрим, что изменилось в таблице маршрутизации:

Router#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1

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


Packet Tracer PC Command Line 1.0
PC>ping 192.168.2.2

Pinging 192.168.2.2 with 32 bytes of data:

Reply from 192.168.2.2: bytes=32 time=0ms TTL=127
Reply from 192.168.2.2: bytes=32 time=0ms TTL=127
Reply from 192.168.2.2: bytes=32 time=0ms TTL=127
Reply from 192.168.2.2: bytes=32 time=1ms TTL=127

Ping statistics for 192.168.2.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms

Теперь детально рассмотрим, что происходит с пакетом, когда он попадает на маршрутизатор.

Пакет приходит. Маршрутизатор сразу читает IP-адрес назначения в заголовке и сверяет его со своей таблицей.

Находит совпадение, изменяет TTL и отправляет на нужный интерфейс. Соответственно, когда ответный пакет придет от PC1, он проделает аналогичную операцию.
То есть отличие в том, что маршрутизатор принимает решение исходя из своей таблицы маршрутизации, а коммутатор из таблицы коммутации. Единственное, что важно запомнить: и у коммутатора, и у маршрутизатора есть ARP-таблица. Несмотря на то, что маршрутизатор работает с 3 уровнем по модели OSI и читает заголовки IP-пакетов, он не может игнорировать работу стека и обязан работать на канальном и физическом уровне. В свою ARP-таблицу он записывает соотношения MAC-адреса к IP-адресу и с какого интерфейса к нему можно добраться. Причем ARP-таблица у каждого сетевого устройства своя. Пишу команду show arp на маршрутизаторе:

Router#show arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.1             -   0060.5C16.3B01  ARPA   FastEthernet0/0
Internet  192.168.1.2             6   00E0.F73D.E561  ARPA   FastEthernet0/0
Internet  192.168.2.1             -   0060.5C16.3B02  ARPA   FastEthernet0/1
Internet  192.168.2.2             7   0002.179D.455A  ARPA   FastEthernet0/1

Как только PC0 отправил ICMP до PC1 и пакет дошел до маршрутизатора, он увидел в заголовках IP-пакета адрес отправителя (PC0) и его MAC-адрес. Он добавляет его в ARP-таблицу. Следующее, что он видит — это IP-адрес получателя. Он не знает, куда отправлять пакет, так как в его ARP-таблице нет записи. Но видит, что адрес получателя из той же сети, что и один из его интерфейсов. Тогда он запускает ARP с этого интерфейса, чтобы получить MAC-адрес запрашиваемого хоста. Как только приходит ответ, он заносит информацию в ARP-таблицу.
Это базовый пример того, как работает маршрутизация. Прикладываю ссылку на скачивание.
Усложним немного схему.

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

RT1 (раскрыть)


RT1#show running-config 
Building configuration...

Current configuration : 571 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname RT1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 10.0.1.2 255.255.255.0
 duplex auto
 speed auto
!
interface Vlan1
 no ip address
 shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
 login
!
!
!
end

RT2 (раскрыть)


RT2#show running-config 
Building configuration...

Current configuration : 568 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname RT2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 10.0.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 10.0.2.1 255.255.255.0
 duplex auto
 speed auto
!
interface Vlan1
 no ip address
 shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
 login
!
!
!
end

RT3 (раскрыть)


RT3#show running-config 
Building configuration...

Current configuration : 571 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname RT3
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 192.168.2.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 10.0.2.2 255.255.255.0
 duplex auto
 speed auto
!
interface Vlan1
 no ip address
 shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
 login
!
!
!
end

PC0 (раскрыть)

PC1 (раскрыть)

Все устройства сконфигурированы. Теперь проверим связность между PC0 и PC1:

В консоли PC0 вылезает сообщение о недоступности узла. Но ведь все адреса прописаны и добраться можно. В чем же проблема? Переходим в режим симуляции и копаем глубже:

PC0 формирует ICMP-сообщение. Смотрит на IP-адрес назначения и понимает, что получатель находится в другой сети. Соответственно передать надо своему основному шлюзу, а дальше пускай сам разбирается.

Пакет доходит до RT1. Смотрит в Destination IP и сравнивает со своей таблицей маршрутизации.


RT1#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
C       10.0.1.0 is directly connected, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0

И вуаля. Совпадений нет. А значит RT1 понятия не имеет, что делать с этим пакетом.

Но так просто отбросить его не может, так как надо уведомить того, кто это послал. Он формирует ответный ICMP с сообщением «Host Unreachable».

Как только пакет доходит до PC0, в консоли высвечивается сообщение «Reply from 192.168.1.1: Destination host unreachable.». То есть RT1 (192.168.1.1) говорит о том, что запрашиваемый хост недоступен.
Выход из ситуации следующий: нужно «сказать» сетевому устройству, как добраться до конкретной подсети. Причем это можно сделать вручную или настроить все сетевые устройства так, чтобы они переговаривались между собой. Вот на этом этапе маршрутизация делится на 2 категории:

  • Статическая маршрутизация
  • Динамическая маршрутизация

Начнем со статической. В качестве примера возьмем схему выше и добьемся связности между PC0 и PC1. Так как первые проблемы с маршрутизацией начались у RT1, то перейдем к его настройке:


RT1#conf t
RT1(config)#ip route 192.168.2.0 255.255.255.0 10.0.1.1 

Маршрут прописывается командой ip route. Синтаксис прост: «подсеть» «маска» «адрес следующего устройства».
После можно набрать команду show ip route и посмотреть таблицу маршрутизации:


RT1#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
C       10.0.1.0 is directly connected, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0
S    192.168.2.0/24 [1/0] via 10.0.1.1

Появился статический маршрут (о чем свидетельствует код S слева). Здесь много различных параметров и о них я расскажу чуть позже. Сейчас задача прописать маршруты на всех устройствах. Перехожу к RT2:


RT2(config)#ip route 192.168.1.0 255.255.255.0 10.0.1.2
RT2(config)#ip route 192.168.2.0 255.255.255.0 10.0.2.2
RT2#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 2 subnets
C       10.0.1.0 is directly connected, FastEthernet0/0
C       10.0.2.0 is directly connected, FastEthernet0/1
S    192.168.1.0/24 [1/0] via 10.0.1.2
S    192.168.2.0/24 [1/0] via 10.0.2.2

Обратите внимание, что маршрут прописан не только в 192.168.2.0/24, но и 192.168.1.0/24. Без обратного маршрута полноценной связности не будет.
Остался RT3:


RT3(config)#ip route 192.168.1.0 255.255.255.0 10.0.2.1
RT3(config)#end
RT3#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
C       10.0.2.0 is directly connected, FastEthernet0/1
S    192.168.1.0/24 [1/0] via 10.0.2.1
C    192.168.2.0/24 is directly connected, FastEthernet0/0

Маршруты на всех устройствах прописаны, а значит PC0 сможет достучаться до PC1 и наоборот PC1 до PC0. Проверим:

Обратите внимание на то, что первые 3 запроса потерялись по тайм-ауту (не Unreachable). Это так CPT эмулирует работу ARP. По сути эти 3 потерянных пакета — это следствие того, что каждый маршрутизатор по пути запускал ARP-запрос до своего соседа. В итоге после всех работ PC0 успешно пингует PC1. Проверим обратную связь:

И с этой стороны все прекрасно.
Ссылка на скачивание.

Теперь на примере таблицы R3 объясню, что она из себя представляет:


RT3#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
C       10.0.2.0 is directly connected, FastEthernet0/1
S    192.168.1.0/24 [1/0] via 10.0.2.1
C    192.168.2.0/24 is directly connected, FastEthernet0/0

Коды (они же легенды) показывают, каким методом данный маршрут попал в таблицу. Их тут много и заострять внимание на все нет смысла (так как ныне не используются). Остановимся на двух — C(connected) и S(static).
Как только мы прописываем IP-адрес и активируем интерфейс, подсеть, к которой он принадлежит, автоматически попадает в таблицу маршрутизации. Поэтому справа от этой строки подписано directly connected и интерфейс, привязанный к этой подсети. Тоже самое с подсетью 192.168.2.0/24. А вот со статически заданным адресом чуть по другому. Подсеть 192.168.1.0/24 не напрямую подсоединена к текущему маршрутизатору, а доступна через 10.0.2.1. А вот этот next-hop уже принадлежит к 10.0.2.0/24 (которая напрямую доступна). Таким образом можно добраться до удаленной подсети, через знакомую сеть. Это может показаться немного запутанным, но именно так работает логика маршрутизатора. Тут еще можно заметить, что в строчке со статическим маршрутом присутствует запись [1/0]. Я чуть позже объясню что это, когда будет разбираться динамическая маршрутизация. Просто на фоне ее эти цифры сразу обретут смысл. А сейчас важно просто запомнить, что первое число — это административная дистанция, а второе — метрика.

Теперь перейдем к разделу динамической маршрутизации. Начну сразу с картинки:

И сразу вопрос: В чем сложность этой схемы? На самом деле ни в чем, до того момента, пока не придется это все настраивать. Сейчас мы умеем настраивать статическую маршрутизацию. И за n-ое количество времени поднимем сеть и она будет работать. А теперь несколько но:

  • На одном из маршрутизаторов появилась новая подсеть. Это значит, что нужно на всех маршрутизаторах вручную прописать маршрут до нее.
  • Допустим мы из Router0 ходили до Cloud0 по цепочке 0 -> 1 -> 3 -> 2 -> Cloud0. Теперь внезапно сгорел/умер/украли Router3. Соответственно не было запасного пути и доступ до Cloud0 закрыт. Сеть стоит и компания не может работать. Тут придется подрываться и переписать цепочку по 0 -> 1 -> 4 -> 2 -> Cloud0. То есть нет никакого резерва. Если сеть падает, то без админа ничего не решить. Сеть не может сама перестроиться.
  • Ну и еще один аргумент, почему строить сеть исключительно на статических маршрутах — зло и не практично. Это, конечно, масштабируемость. Практически любая компания рано или поздно растет, расширяется и сетевых узлов становится все больше. А значит, в конечном итоге, сеть со статическими маршрутами начнет превращаться в ад для сетевого инженера.

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

  1. Routing protocols (протоколы маршрутизации) — это как раз те протоколы, о которых чуть ниже поговорим. При помощи этих протоколов, роутеры обмениваются маршрутной информацией и строят топологию.
  2. Routed protocols (маршрутизируемые протоколы) — это как раз те протоколы, которые мы маршрутизируем. В данном случае — это IPv4, IPv6.

Протоколы динамической маршрутизации делятся на 2 категории:

  • IGP (interior gateway protocols) — внутренние протоколы маршрутизации (RIP, OSPF, EIGRP). Гости этого выпуска.
  • EGP (external gateway protocols) — внешние протоколы маршрутизации (на сегодня BGP).

Отличий в них много, но самые главные — IGP запускается внутри одной автономной системы (считайте компании), а EGP запускается между автономными системами (то есть это маршрутизация в Интернете. При помощи него автономные системы связываются между собой). Сейчас представитель EGP остался один — это BGP. Я не буду долго на нем останавливаться, так как он выходит за рамки CCNA. Да и по нему лучше делать отдельную статью, чтобы не смешивать и так довольно емкий материал.

Теперь про IGP. Это прозвучит смешно, но и они делятся на несколько категорий:

  • Distance-Vector (дистанционно-векторные)
  • Hybrid or Advanced Distance Vector (гибридные или продвинутые дистанционно-векторные)
  • Link-State (протокол состояния канала)

Начну с дистанционно-векторного. Он, на мой взгляд, самый простой для понимания.
Название ему такое дали не с проста. Дистанция показывает расстояние до точки назначения. Дальностью оперирует такой показатель, как метрика (о чем я упоминал выше). Вектор показывает направление до точки назначения. Это может быть выходной интерфейс, IP-адрес соседа.
Мне этот протокол напоминает дорожный указатель. То есть по какому направлению идти и какое расстояние до точки назначения.
Теперь покажу на практике, как он работает и по ходу детально разберем.

Чтобы не загромождать статью однообразными настройками, я заранее сконфигурировал устройства. А именно прописал IP-адреса и включил интерфейсы. Оставлю под спойлерами настройки:

Router0:

Router0#show running-config
Building configuration...

Current configuration : 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router1:

Router1#show running-config
Building configuration...

Current configuration : 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Единственное, что может показаться новым — это Loopback интерфейсы. Он практически не отличается от других интерфейсов, за исключением того, что не представлен физически и к нему ничего нельзя воткнуть. Он программно создан внутри самого устройства. Такой интерфейс есть и на многих ОС, как Windows и Linux-подобных. На примере он используется для того, чтобы не рисовать множество маршрутизаторов со своими подсетями.
Сейчас таблицы маршрутизации выглядят следующим образом:

Router0:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
C       10.1.1.0 is directly connected, Loopback1
C    192.168.1.0/24 is directly connected, FastEthernet0/0

Router1:

Router1#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
C       10.2.2.0 is directly connected, Loopback1
C    192.168.1.0/24 is directly connected, FastEthernet0/0

То есть у каждого в таблице маршрут общий с соседом (192.168.1.0/24) и недоступный другому соседу (10.1.1.0 и 10.2.2.0 соответственно).
Теперь для связности 2 маршрутизатора должны обменяться своими маршрутными информациями. И вот тут поможет протокол RIP.
Переключаю PT в режим симуляции и перехожу к настройкам:
Router0:

Router0#conf t -- переход в режим глобальной конфигурации
Enter configuration commands, one per line.  End with CNTL/Z.
Router0(config)#router rip -- переход к настройке протокола
Router0(config-router)#version 2 -- включается протокол 2-ой версии
Router0(config-router)#no auto-summary -- отключается автоматическое суммирование
Router0(config-router)#network 10.1.1.0 -- активируется RIP на интерфейсе из данной подсети
Router0(config-router)#network 192.168.1.0

Router1:

Router1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router1(config)#router rip 
Router1(config-router)#version 2
Router1(config-router)#no auto-summary 
Router1(config-router)#network 10.2.2.0
Router1(config-router)#network 192.168.1.0

Сразу оговорюсь, что протокол RIP (также как EIGRP и OSPF) не анонсирует подсети таким образом. Он включает протокол на данном интерфейсе. То есть нельзя анонсировать то, что устройство не знает. И замечу, что включена вторая версия протокола и отключено автосуммирование. Изначально RIP был придуман для сетей с классовой адресацией. Поэтому суммирование он выполняет по тем же правилам, что не корректно в применении к бесклассовой. После перехода на бесклассовую адресацию, нужно было изменить работу протокола RIP. И вот во второй версии помимо подсети, передается еще и маска.

На схеме сразу же оба маршрутизатора что-то сгенерировали:

Первый пакет:

Это первый пакет, который генерирует роутер, при включении RIP. Тут важный аспект, что ничего не анонсируется и метрика = 16. (0x10 в шестнадцатиричном значение = 16 в десятичном).

Второй пакет:

А вот этот пакет уже несет полезную информацию.

1) ADDR FAMILY: 0x2 — означает IP протокол. В большинстве случаев это поле не меняется.
2) NETWORK: 10.1.1.0 — подсеть, которая анонсируется.
3) SUBNET: 255.255.255.0 — маска
4) NEXT HOP: 192.168.1.1 — следующий узел для достижимости анонсированной подсети.
5) METRIC: 0x1 — стоимость пути (в данном случае 1).

С обратной стороны придет точно такой же анонс (только будет соответствующая подсеть, nexthop).

В итоге после получения анонсов, таблицы у обоих роутеров будут выглядеть следующим образом:

Router0:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 2 subnets
C       10.1.1.0 is directly connected, Loopback1
R       10.2.2.0 [120/1] via 192.168.1.2, 00:00:03, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0

Router1:

Router1#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 2 subnets
R       10.1.1.0 [120/1] via 192.168.1.1, 00:00:16, FastEthernet0/0
C       10.2.2.0 is directly connected, Loopback1
C    192.168.1.0/24 is directly connected, FastEthernet0/0

В таблице появилась пометка с кодом R. То есть получен по протоколу RIP.
Если пустить пинги:

Router0:

Router0#ping 10.2.2.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/1 ms

Router1:

Router1#ping 10.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms

Анонсируемые подсети достижимы. Еще важный аспект, при работе с протоколами маршрутизации — это просмотр сформированной базы. Таблица маршрутизации — это конечный итог, куда заносится маршрут. Посмотреть базу можно командой show ip rip database:

Router0:

Router0#show ip rip database 
10.1.1.0/24    auto-summary
10.1.1.0/24    directly connected, Loopback1
10.2.2.0/24    auto-summary
10.2.2.0/24
    [1] via 192.168.1.2, 00:00:03, FastEthernet0/0
192.168.1.0/24    auto-summary
192.168.1.0/24    directly connected, FastEthernet0/0

Router1:

Router1#show ip rip database 
10.1.1.0/24    auto-summary
10.1.1.0/24
    [1] via 192.168.1.1, 00:00:13, FastEthernet0/0
10.2.2.0/24    auto-summary
10.2.2.0/24    directly connected, Loopback1
192.168.1.0/24    auto-summary
192.168.1.0/24    directly connected, FastEthernet0/0

Эта команда полезна, когда маршруты никак не заносятся в таблицу, при этом вроде как RIP включен и настроено все верно. Если маршрута нет в базе, значит он никак не попадет в таблицу и тут надо копать глубже. У циски, к счастью, есть хороший инструмент для дебага, который позволяет практически моментально понять, что происходит. В CPT он урезан и многое не показать, но на реальных железках, он прекрасен.
Например:

Router0#debug ?
  aaa           AAA Authentication, Authorization and Accounting
  crypto        Cryptographic subsystem
  custom-queue  Custom output queueing
  eigrp         EIGRP Protocol information
  ephone        ethernet phone skinny protocol
  frame-relay   Frame Relay
  ip            IP information
  ipv6          IPv6 information
  ntp           NTP information
  ppp           PPP (Point to Point Protocol) information

Посмотрим, что происходит в RIP:

Router0#debug ip rip 
RIP protocol debugging is on
Router0#RIP: sending  v2 update to 224.0.0.9 via Loopback1 (10.1.1.1)
RIP: build update entries
      10.2.2.0/24 via 0.0.0.0, metric 2, tag 0
      192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
RIP: sending  v2 update to 224.0.0.9 via FastEthernet0/0 (192.168.1.1)
RIP: build update entries
      10.1.1.0/24 via 0.0.0.0, metric 1, tag 0
RIP: received v2 update from 192.168.1.2 on FastEthernet0/0
      10.2.2.0/24 via 0.0.0.0 in 1 hops

Сейчас все хорошо. Видно, что приходят/уходят апдейты и записи обновляются. Из за того, что дебажный инструмент обширен, лучше явно указывать что нужно ловить (как представлено выше). Иначе можно достаточно хорошо пригрузить устройство. Важно помнить про команду undebug all. Она отключает весь дебаг на устройстве.

Ссылка на скачивание лабы. Можете добавить еще один маршрутизатор к существующей схеме и связать их через RIP.

Теперь усложним схему и посмотрим в чем преимущество динамической маршрутизации.

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

Настраиваются аналогично предыдущему примеру. Поэтому покажу только конфигурации:

Router0

Router0#show running-config
Building configuration…

Current configuration: 736 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.3.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router rip
version 2
network 10.0.0.0
network 192.168.1.0
network 192.168.3.0
no auto-summary
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router1

Router1#show running-config
Building configuration…

Current configuration: 736 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router rip
version 2
network 10.0.0.0
network 192.168.1.0
network 192.168.4.0
no auto-summary
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router2

Router2#show running-config
Building configuration…

Current configuration: 736 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.3.3.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.3.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router rip
version 2
network 10.0.0.0
network 192.168.3.0
network 192.168.4.0
no auto-summary
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Итого на Router0 мы имеем следующую таблицу маршрутизации:

Router0# show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 3 subnets
C       10.1.1.0 is directly connected, Loopback1
R       10.2.2.0 [120/1] via 192.168.1.2, 00:00:05, FastEthernet0/0
R       10.3.3.0 [120/1] via 192.168.3.2, 00:00:14, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.3.0/24 is directly connected, FastEthernet0/1
R    192.168.4.0/24 [120/1] via 192.168.1.2, 00:00:05, FastEthernet0/0
                    [120/1] via 192.168.3.2, 00:00:14, FastEthernet0/1

Из новых маршрутов — это 10.3.3.0/24, который доступен через 192.168.3.2 (т.е. Router2). И второй маршрут — это 192.168.4.0/24, который доступен через 192.168.1.2 (т.е. Router1) и 192.168.3.2 (т.е. Router2).
Вот в тех случаях, когда маршруты от разных устройств до одной подсети приходят с одинаковой метрикой, оба заносятся в таблицу. Такой случай называют балансировкой или ECMP (Equal-cost multi-path routing).
Если пройтись по нему через traceroute:

Router0#traceroute 192.168.4.1
Type escape sequence to abort.
Tracing the route to 192.168.4.1

  1   192.168.1.2     1 msec    0 msec    0 msec    
Router0#traceroute 192.168.4.1
Type escape sequence to abort.
Tracing the route to 192.168.4.1

  1   192.168.3.2     1 msec    0 msec    0 msec   

То есть меняется next-hop по очереди. Сама тема балансировки заслуживает отдельного внимания, т.к. у балансировки есть несколько стратегий по выбору оптимального пути. Случай, когда балансировка работает по очереди, как в нашем случае — называют Round-Robin.
Посмотрим базу RIP на Router0:

Router0#show ip rip database 
10.1.1.0/24    auto-summary
10.1.1.0/24    directly connected, Loopback1
10.2.2.0/24    auto-summary
10.2.2.0/24
    [1] via 192.168.1.2, 00:00:01, FastEthernet0/0
10.3.3.0/24    auto-summary
10.3.3.0/24
    [1] via 192.168.3.2, 00:00:23, FastEthernet0/1
192.168.1.0/24    auto-summary
192.168.1.0/24    directly connected, FastEthernet0/0
192.168.3.0/24    auto-summary
192.168.3.0/24    directly connected, FastEthernet0/1
192.168.4.0/24    auto-summary
192.168.4.0/24
    [1] via 192.168.1.2, 00:00:01, FastEthernet0/0    [1] via 192.168.3.2, 00:00:23, FastEthernet0/1

То есть нет никакого запасного маршрута, на случай выхода из строя 192.168.3.2. Теперь переключаю в режим симуляции и смотрю, что произойдет, если отключить на Router0 интерфейс fa0/1:


Видим, что отключился линк на Router0 и Router2. И сразу оба устройства генерируют сообщения:
Router0:

Router1:

Сразу сообщают, что данные маршруты теперь недостижимы. Делают они это, при помощи метрики, которая становится равной 16. Исторически так сложилось, что протокол RIP был рассчитан на работу с 15 транзитными участками. В то время никто не подразумевал, что сеть может быть настолько большой:-). Называется этот механизм Poison Reverse.
Таким образом сосед, получивший такой апдейт должен удалить этот маршрут из таблицы.
Вот, что происходит на Router1:

И самое интересное, что после этого Router1 отправит Router0 следующее:

То есть я больше не знаю о 192.168.3.0/24.

На данный момент таблица на Router0 выглядит следующим образом:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 2 subnets
C       10.1.1.0 is directly connected, Loopback1
R       10.2.2.0 [120/1] via 192.168.1.2, 00:00:29, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0
R    192.168.4.0/24 [120/1] via 192.168.1.2, 00:00:29, FastEthernet0/0

То есть знает о своих подсетях и тех, что анонсировал Router1.
Двигаемся дальше:

Видим, что Router1 генерирует пакет с кучей подсетей и отправляет соседям. В том числе там подсеть 10.4.4.0.
И в таблице Router0 теперь:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 3 subnets
C       10.1.1.0 is directly connected, Loopback1
R       10.2.2.0 [120/1] via 192.168.1.2, 00:00:00, FastEthernet0/0
R       10.3.3.0 [120/2] via 192.168.1.2, 00:00:00, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0
R    192.168.4.0/24 [120/1] via 192.168.1.2, 00:00:00, FastEthernet0/0

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

Router0#ping 10.3.3.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.3.3.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/1 ms

Router0#traceroute 10.3.3.1
Type escape sequence to abort.
Tracing the route to 10.3.3.1

  1   192.168.1.2     0 msec    0 msec    0 msec    
  2   192.168.4.2     2 msec    0 msec    0 msec   

Пинги проходят, а через traceroute видим, что пакет сначала попадает на Router1, а дальше маршрутизируется на Router2.
То есть видно очевидное преимущество динамического протокола маршрутизации над статическими. При падении линка и наличии резервного пути, топология сама перестроилась. На сегодняшний день мало кто использует данный протокол. И на это есть множество причин. Одна из них — это количество транзитных маршрутов. Вдобавок ко всему — это время сходимости. По умолчанию все маршрутизаторы отправляют друг другу апдейты каждые 30 секунд. Если обновление не приходит в течении 180 секунд, маршрут помечается, как Invalid. А как время простоя доходит до 240 секунд, он удаляется. Конечно таймеры можно подкрутить. Но проблема еще в том, что в большой сети, при наличии проблемы где-нибудь по середине, апдейт с одного конца до другого может просто-напросто не дойти. Хотя он доступен. Есть еще одна проблема. RIP хранит только лучший маршрут. Поэтому когда отключился линк, маршрут пропал и резервного пути не было. А значит, пока никто из соседей не проанонсирует подсеть, она будет недоступной. Это очень ощутимо для сетей, в которых простой стоит дорого. В связи с этим были придуманы протоколы, у которых время сходимости выше и есть резервные пути. О них и поговорим. Хочу также отметить, что RIP — протокол не плохой (уж явно лучше, чем использование только статических маршрутов в растущей сети). Поэтому изучение лучше начать с него. Таким образом концепция динамической маршрутизации уляжется лучше. Да что тут говорить, если Cisco сначала убрала RIP из своих экзаменов, а теперь снова включила.

Ссылка на скачивание.

Теперь перейдем к EIGRP. Если RIP уже давно является открытым протоколом, то EIGRP был проприетарным и работал только на устройствах Cisco. Но в 2016 году Cisco решила все же открыть его, оставив авторство за собой. Ссылка на RFC7868.
Cisco называет его гибридным (имея в виду, что он взял что-то от Distance-Vector, а что-то от Link-State). В отличии от RIP он работает более «умно». В том плане, что у него есть резервные маршруты и он «хранит некую топологию сети» (хотя это верно очень частично).
Оперирует он 3-мя таблицами:

1) EIGRP Neighbor Table: Здесь представлены все напрямую соединенные соседи (то есть кто Next-Hop и с какого интерфейса к нему добраться).

2) EIGRP Topology Table: Здесь представлены все изученные маршруты от соседей (с точкой назначения и метрикой)

3) Global Routing Table: Общая для всех таблица и сюда попадают лучшие маршруты из предыдущей таблицы.

Соберем топологию и запустим на ней EIGRP. Попутно буду рассказывать, что происходит, чтобы совместить минимум теории с максимумом практики.
Топологию возьмем ту же, что и с RIP. На ней настроены все IP-адреса, подняты интерфейсы, но не запущен протокол маршрутизации.

Router0:

Router0#show running-config
Building configuration…

Current configuration: 635 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.3.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router1

Router1#show running-config
Building configuration…

Current configuration: 635 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router2

Router2#show running-config
Building configuration…

Current configuration: 635 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.3.3.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.3.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Сейчас в маршрутных таблицах роутеров только Connected подсети.
Переходим в настройки EIGRP.

Router0:

router eigrp 1 - номер автономной системы (должен совпадать на всех устройствах)
 network 10.1.1.0 0.0.0.255
 network 192.168.1.0 0.0.0.255
 network 192.168.3.0 0.0.0.255
 no auto-summary

Router1:

router eigrp 1 - номер автономной системы (должен совпадать на всех устройствах)
 network 10.2.2.0 0.0.0.255
 network 192.168.1.0 0.0.0.255
 network 192.168.4.0 0.0.0.255
 no auto-summary

Router2:

router eigrp 1 - номер автономной системы (должен совпадать на всех устройствах)
 network 10.3.3.0 0.0.0.255
 network 192.168.3.0 0.0.0.255
 network 192.168.4.0 0.0.0.255
 no auto-summary

Как описал выше, при включении EIGRP, ему присваивается номер AS. И он должен совпадать на всех соседях. В настройках анонса сети теперь добавляется wildcard маска. Если не вдаваться в подробности — это обратная запись маски (т.е. 0.0.0.255 — это 255.255.255.0). И отключение автосуммирования (наследие классовых сетей).

В итоге видим следующую картину:

Посмотрим, что сгенерировал Router0:

Видим кучу полей и попробуем разобраться, что в них. Мы помним, что RIP был не самым надежным вариантом. Он не понимал какой номер пакета, не было механизма отслеживания, подтверждения и прочего. Да и плюс нижестоящий протокол был UDP, который тоже не имеет механизма надежности. EIGRP вообще работает сразу поверх IP (не используя механизмы транспортного уровня). Поэтому все механизмы по отслеживанию ложатся на его поля.
Из важного: появились флаги, SEQ. NUM (номер отправляемого пакета), ACK.NUM (подтверждение на принятый пакет), номер автономной системы (заданный при создании), и параметры K. Вот тут остановлюсь. В RIP метрика считалась тривиально. Пакет пришел, добавляю единицу и передаю дальше. В EIGRP метрика считается исходя из K значений:

1) K1 — bandwidth (или пропускная способность)
2) K2 — load (загруженность)
3) K3 — delay (задержка)
4) K4 — reliability (надежность)
5) K5 — MTU (Maximum Transmission Unit).

Но как правило, при расчете используются только K1 и K3.
Формула таким образом выглядит:

Metric = (K1 * bandwidth) + [(K2 * bandwidth) / (256 - load)] + (K3 * delay)

.
Запоминать ее наизусть не надо. Просто важно понимать, как происходит расчет метрики.
Вот, что происходит, когда пакет доходит до Router0:

Router0(config)#
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.1.2 (FastEthernet0/0) is up: new adjacency

%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is up: new adjacency

К сожалению CPT наглухо тормозит от количества пакетов, поэтому покажу, что происходит в непосредственно таблицах Router0 (в остальных будет аналогично. Поэтому покажу на одном). А после подробно покажу процесс установления соседства в режиме дебага между двумя маршрутизаторами:

1) Neighbor Table:

Router0#show ip eigrp neighbors 
IP-EIGRP neighbors for process 1
H   Address         Interface      Hold Uptime    SRTT   RTO   Q   Seq
                                   (sec)          (ms)        Cnt  Num
0   192.168.1.2     Fa0/0          11   00:00:41  40     1000  0   42
1   192.168.3.2     Fa0/1          10   00:00:41  40     1000  0   38

Из важного. Здесь показан сосед, интерфейс (за которым он находится), hold (таймер, по истечении которого, произойдет разрыв соседства. При получении пакета от соседа, он повышается), uptime (как долго живет соседство), SRTT (время между отправкой и подтверждением), RTO (интервал между отправкой) и номер пакета.

2) Router0#show ip eigrp topology

IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - Reply status

P 10.1.1.0/24, 1 successors, FD is 128256
         via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 156160
         via 192.168.1.2 (156160/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
         via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 28160
         via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
         via Connected, FastEthernet0/1
P 192.168.4.0/24, 2 successors, FD is 30720
         via 192.168.3.2 (30720/28160), FastEthernet0/1
         via 192.168.1.2 (30720/28160), FastEthernet0/0

Тут все просто. Если все хорошо с полученным маршрутом, то он становится Passive. О других полях и их значениях расскажу чуть позже. Сейчас достаточно того, что в данной таблице все хорошо. Из нового — вводится понятие Successor. Successor-ом выбирается тот, у кого наименьшая стоимость до конкретной подсети. Сейчас на каждый маршрут по одному Successor-у и только на маршрут 192.168.4.0 их два. Причем они оба выбраны Successor-ами из за одинаковой метрики (следовательно будет работать балансировка). Теперь обращу внимание на странные числа у каждого Successor-а.
EIGRP при расчете метрики оперирует 2-мя понятиями: Advertised Distance и Feasible Distance. Оба рассчитываются той страшной формулой:

1) Advertised Distance — это анонс стоимости от соседа. То есть сколько стоит от него (соседа) и до точки назначения.
2) Feasible Distance — это стоимость от самого роутера до точки назначения. То есть — это Adverticed Distance + стоимость линка до соседа.

Возьмем для примера запись от маршрута 10.2.2.0:

P 10.2.2.0/24, 1 successors, FD is 156160
         via 192.168.1.2 (156160/128256), FastEthernet0/0

Число 128256 — это Advertised Distance, а 156160 — это Feasible Distance.
Соответственно, чем меньше Feasible Distance, тем выгоднее маршрут и такой сосед объявляется Successor-ом. После записи о количестве successors, всегда пишется какая FD была выбрана.
На текущий момент он работает приблизительно также, как и RIP. Только почему то метрика стала сложнее и добавилось больше таблиц. Но вот у EIGRP есть несколько фокусов в кармане. Один из них — это Feasible Successor (не путать с Feasible Distance). Это как раз тот самый резервный путь на случай отказа Successor. Сейчас у нас нет резервного пути (например до маршрута 10.2.2.0). Если падает 192.168.1.2, этот маршрут теряется до момента, пока о нем не расскажет другой сосед. Но мы прекрасно знаем, что о нем может рассказать Router2 (пусть и с худшей метрикой). Но EIGRP все же основан на неких правилах, что не позволяет ему так сделать. А правило заключается в следующем:

Advertised distance of feasible successor < Feasible distance of successor

.
То есть стоимость анонсируемая от Feasible Successor (потенциально backup-роутера) должна быть меньше, чем Feasible Distance Successor (то есть полная стоимость через основного).
Звучит тяжело, но если проще. Взять тот же маршрут 10.2.2.0. Через него FD = 156160. Значит AD от Feasible Successor должна принять любое число меньшее 156160. Причем не важно сколько стоит линк от текущего роутера до соседа (хоть 1000000). Главное, чтобы backup-сосед анонсировал с меньшей метрикой, чем successor. Это правило используется для предотвращения петель.
Чтобы понять, как это работает, внесем изменения в топологию.
Сейчас на Router0 таблица топологии выглядит следующим образом:

Router0#show ip eigrp topology 
IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - Reply status

P 10.1.1.0/24, 1 successors, FD is 128256
         via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 156160
         via 192.168.1.2 (156160/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
         via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 28160
         via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
         via Connected, FastEthernet0/1
P 192.168.4.0/24, 2 successors, FD is 30720
         via 192.168.1.2 (30720/28160), FastEthernet0/0
         via 192.168.3.2 (30720/28160), FastEthernet0/1

Маршрут до 10.2.2.0/24 доступен через 192.168.1.2, что верно, так как Router1 его породил и так добраться быстрее всего. Поэтому Router2 не сможет проанонсировать лучше, так как его AD будет всегда выше.
Теперь переведем скорость интерфейсов между Router0 и Router1 на 10Мбит/с. Таким образом ухудшим канал, и внесем изменения в пересчет топологии.

Router0:

interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed 10

Router1:

interface FastEthernet0/0
 ip address 192.168.1.2 255.255.255.0
 duplex auto
 speed 10

Таким образом на Router0:

Router0#show ip eigrp topology 
IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - Reply status

P 10.1.1.0/24, 1 successors, FD is 128256
         via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 158720
         via 192.168.3.2 (158720/156160), FastEthernet0/1
         via 192.168.1.2 (179200/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
         via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 51200
         via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
         via Connected, FastEthernet0/1
P 192.168.4.0/24, 1 successors, FD is 30720
         via 192.168.3.2 (30720/28160), FastEthernet0/1
         via 192.168.1.2 (53760/28160), FastEthernet0/0

Видим, что до 10.2.2.0 теперь 2 пути, но Successor выбирается тот, у кого FD выгоднее. А выгоднее, через 192.168.3.2 (то есть Router2), так как у него скорость интерфейсов 100Мбит/с, хоть и преодолеть придется 2 хопа. А теперь обратим внимание, почему попали 2 записи в этот маршрут.

  via 192.168.3.2 (158720/156160), FastEthernet0/1
         via 192.168.1.2 (179200/128256), FastEthernet0/0

А потому что AD у 192.168.1.2 лучше, чем FD у 192.168.3.2 (128256<158720).
И в таблицу маршрутизации попадет маршрут через выбранного Successor-а, то есть 192.168.3.2:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 3 subnets
C       10.1.1.0 is directly connected, Loopback1
D       10.2.2.0 [90/158720] via 192.168.3.2, 00:14:49, FastEthernet0/1
D       10.3.3.0 [90/156160] via 192.168.3.2, 00:59:42, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.3.0/24 is directly connected, FastEthernet0/1
D    192.168.4.0/24 [90/30720] via 192.168.3.2, 00:59:42, FastEthernet0/1

Для теста отказоустойчивости, запустим пинг на 1000 пакетов и в этот момент поотключаем основной канал через 192.168.3.2:

Router0#ping 
Protocol [ip]: 
Target IP address: 10.2.2.1
Repeat count [5]: 1000
Datagram size [100]: 
Timeout in seconds [2]: 
Extended commands [n]: 
Sweep range of sizes [n]: 
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 10.2.2.1, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down

%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is down: interface down
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up

%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is up: new adjacency
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (403/403), round-trip min/avg/max = 0/0/4 ms

Как видно, линк падал, но пакеты не прекращали ходить. Тем самым резервирование отрабатывало. Это одна из фишек EIGRP.
Вторая фишка — это неэквивалентная балансировка. Как помним, обычная балансировка работает, если 2 маршрута приходят с абсолютно одинаковой метрикой. EIGRP же умеет балансировать маршрутами с разной метрикой.
Проверим на существующей топологии. На Router0 имеем следующее:

Topology Table:

Router0#show ip eigrp topology 
IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - Reply status

P 10.1.1.0/24, 1 successors, FD is 128256
         via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 158720
         via 192.168.3.2 (158720/156160), FastEthernet0/1
         via 192.168.1.2 (179200/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
         via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 51200
         via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
         via Connected, FastEthernet0/1
P 192.168.4.0/24, 1 successors, FD is 30720
         via 192.168.3.2 (30720/28160), FastEthernet0/1
         via 192.168.1.2 (53760/28160), FastEthernet0/0

Route Table:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 3 subnets
C       10.1.1.0 is directly connected, Loopback1
D       10.2.2.0 [90/158720] via 192.168.3.2, 00:02:57, FastEthernet0/1
D       10.3.3.0 [90/156160] via 192.168.3.2, 00:04:45, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.3.0/24 is directly connected, FastEthernet0/1
D    192.168.4.0/24 [90/30720] via 192.168.3.2, 00:04:45, FastEthernet0/1

То есть сейчас мы имеем два маршрута до 10.2.2.0/24, но используем всего один (наилучший, исходя из метрики). Чтобы правило заработало, нужно изменить множитель метрики (или с англ. variance).
Правило его работы следующее:

 FD Feasible Successor < FD Successor

. Иначе говоря стоимость полного пути запасного маршрута должна быть «искусственно» меньше основного.
Сейчас ситуация следующая:

P 10.2.2.0/24, 1 successors, FD is 158720
         via 192.168.3.2 (158720/156160), FastEthernet0/1
         via 192.168.1.2 (179200/128256), FastEthernet0/0

Значит нужно метрику 158720 умножить настолько, чтобы она стала больше 179200. Умножать можно только на целое число, поэтому выберем 2.

Router0(config)#router eigrp 1
Router0(config-router)#variance 2
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.1.2 (FastEthernet0/0) is up: new adjacency

%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is up: new adjacency

В итоге имеем:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 3 subnets
C       10.1.1.0 is directly connected, Loopback1
D       10.2.2.0 [90/158720] via 192.168.3.2, 00:02:31, FastEthernet0/1
                 [90/179200] via 192.168.1.2, 00:02:31, FastEthernet0/0
D       10.3.3.0 [90/156160] via 192.168.3.2, 00:02:31, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.3.0/24 is directly connected, FastEthernet0/1
D    192.168.4.0/24 [90/30720] via 192.168.3.2, 00:02:31, FastEthernet0/1
                    [90/53760] via 192.168.1.2, 00:02:31, FastEthernet0/0

Оба маршрута попали в таблицу маршрутизации. Теперь проверим, что балансировка действительно работает:

Router0#traceroute 10.2.2.1
Type escape sequence to abort.
Tracing the route to 10.2.2.1

  1   192.168.3.2     0 msec    0 msec    0 msec    
Router0#traceroute 10.2.2.1
Type escape sequence to abort.
Tracing the route to 10.2.2.1

  1   192.168.1.2     0 msec    0 msec    0 msec  

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

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

Итак, топология:

Я просто удалил Router2, отключил интерфейсы, которые были соединены с ним и удалил анонсы маршрутов из EIGRP.

Теперь включаю дебаг на Router0 и наблюдаю:

Router0#debug eigrp fsm 
EIGRP FSM Events/Actions debugging is on
DUAL: rcvupdate: 192.168.1.0/24 via Connected metric 28160/0 -- connected маршрут. AD=0 (так как ему он пришел не от соседа. А вот его цена интерфейса 28160.

DUAL: Find FS for dest: 192.168.1.0/24. FD is 4294967295, RD is 4294967295 

DUAL: RT installed 192.168.1.0/24 via 0.0.0.0 -- маршрут 192.168.1.0/24 заносится в таблицу, как connected (то есть на себя).
DUAL: Send update about 192.168.1.0/24.  Reason: metric chg -- отправляет измененную метрику.

DUAL: Send update about 192.168.1.0/24.  Reason: new if -- отправляет информацию, что появился новый интерфейс

DUAL: rcvupdate: 10.1.1.0/24 via Connected metric 128256/0 -- та же история с Loopback

DUAL: Find FS for dest: 10.1.1.0/24. FD is 128256, RD is 0

DUAL: Send update about 10.1.1.0/24.  Reason: new if

%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.1.2 (FastEthernet0/0) is up: new adjacency

DUAL: rcvupdate: 10.2.2.0/24 via 192.168.1.2 metric 156160/128256 - получает маршрут с AD и накладывает свою метрику.

DUAL: Find FS for dest: 10.2.2.0/24. FD is 4294967295, RD is 4294967295

DUAL: RT installed 10.2.2.0/24 via 192.168.1.2 -- устанавливает маршрут 10.2.2.0/24 через соседа 192.168.1.2
DUAL: Send update about 10.2.2.0/24.  Reason: metric chg

DUAL: rcvupdate: 10.1.1.0/24 via 192.168.1.2 metric 4294967295/4294967295

DUAL: Find FS for dest: 10.1.1.0/24. FD is 128256, RD is 0

И еще, что стоит упомянуть — это типы EIGRP сообщений. Их 5:
1) Hello — эти пакеты отправляются на мультикастовый адрес 224.0.0.10 ближайшим соседям. Подтверждения в ответ не требуют. Нужны только для идентификации и своего рода keepalive механизмом.
2) Update — содержат маршрутную информацию. Как только обнаруживаются соседи, маршрутизатор сразу отправляет им данный пакет. После чего соседи заполняют таблицу EIGRP топологии. Может отправляться по мультикастовому адресу или юникастовому. Эти пакеты требуют ответа.
3) Query — пакет запроса потерянного маршрута. То есть когда маршрутизатор теряет запись об этом маршруте и не имеет запасного пути к нему. Может отправляться одному через unicast или группе соседей через multicast.
4) Reply — ответ на Query-запрос. Данный пакет всегда отправляется на unicast-адрес (то есть тому, кто его запросил). Требует подтверждения.
5) ACK — используется для подтверждения Update, Query и Reply пакетов. Всегда отправляется на unicast-адрес.

Помните топологию EIGRP с множеством кодов? Так вот эти коды и отображают состояние и отправляемое сообщение на каждый из маршрутов. Вот так в принципе работает EIGRP.

Переходим к последнему протоколу — это OSPF (англ. Open Shortest Path First). Относится он к группе link state или протокол состояния канала. Если RIP с EIGRP работали более-менее похоже, то OSPF работает совершенно по другому. Если дистанционно-векторные протоколы сравнивались с дорожными указателями, то протоколы состояния канала можно сравнить с дорожным навигатором. В этом как раз и отличие. OSPF сначала строит карту сети, а потом выбирает лучший путь. Да, таким образом он более ресурсозатратный протокол, нежели его коллеги, но на текущий момент это не столь критично, как было лет 25-30 назад.

Итак. Почему Link-State:
1) Link — интерфейс маршрутизатора.
2) State — его состояние и как он подключен к соседям.

Оперирует они:
1) LSA (от англ. link-state advertisements) — это как раз таки объявления, которыми они обмениваются между собой. Ниже их разберем.
2) LSDB (от англ. link-state database) — как раз эти LSA формируют базу. Или ту самую карту сети.

Тут встает вопрос. А хорошо ли то, что каждый маршрутизатор обменивается своей информацией с каждым соседом?!
Представим топологию:

Что если каждый маршрутизатор будет отсылать маршрут каждому из своих соседей?! Мы получим огромный флуд трафика. При этом один и тот же анонс будет зеркалироваться… Подумали в свое время инженеры и решили, что эффективнее держать одного маршрутизатора, которому все остальные будут отсылать уведомления, а он будет ответственным за весь флуд. Тем самым смысл тот же, только трафика будет меньше. А чтобы не случилось ситуации, когда «главный» умирает и вся сеть останавливается, придумали держать запасного маршрутизатора, который, в случае «смерти» основного, возьмет его обязанности на себя.
Маршрутизатор, который берет роль основного на себя, называется DR (от англ. Designated Router), а запасной маршрутизатор называется BDR (от англ. Backup Designated Router).
Такая логика работает автоматически в сетях с множественным доступом, которой и является Ethernet. Если у вас сеть точка-точка (пусть даже Ethernet и соединены друг с другом напрямую), то DR и BDR выбирать не обязательно, так как всего 2 участника (но в Ethernet они все же будут выбраны). Но никто не мешает вам изменить логику OSPF и прописать каждого соседа вручную. Только зачем?)
Так вот после того, как LSDB заполнена, каждый маршрутизатор начинает высчитывать самый выгодный маршрут до каждой подсети. Использует он для этого алгоритм SPF (от англ. Shortest Path First). Лучший подсчитанный маршрут попадает в таблицу маршрутизации.
Давайте перейдем к практике и по ходу разбираться.
Есть схема:

Схема самая простая. Единственное, что новое — это очерчена зона. Я специально ее нарисовал. Дело в том, что OSPF обязательно нужно указывать зону для которой включается протокол. Это сделано для того, чтобы снизить нагрузку в расчетах пути. Как я говорил ранее, протокол появился достаточно давно и для того времени производительность играла большую роль. Сейчас тоже принято делить на зоны. Но сейчас это делается для снижения не нужного трафика.
Зоной по-умолчанию всегда выбирается нулевая. Ее еще называют backbone зоной и не с проста. Если у вас в сети много различных зон, то соединены они должны быть через нулевую. То есть нельзя перейти из 11-ой в 25-ую зону напрямую. Обязательно нужно пройти через нулевую, а из нулевой проследовать в требуемую. Единственный случай, когда можно пройти из зоны в зоны, миновав нулевую — это использование Virtual Link. Почитать о ней можно здесь.
Сейчас у нас 2 маршрутизатора в нулевой зоне. На маршрутизаторах настроены IP-адреса и создан Loopback. Ниже под спойлерами конфиги.

Router0

Router0#show running-config
Building configuration…

Current configuration: 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router1

Router1#show running-config
Building configuration…

Current configuration: 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Теперь включаю OSPF для интерфейсов FastEthernet0/0 и Loopback1 обоих роутеров:

router ospf 1
 network 192.168.1.0 0.0.0.255 area 0
 network 10.1.1.0 0.0.0.255 area 0
!

router ospf 1
 network 10.2.2.0 0.0.0.255 area 0
 network 192.168.1.0 0.0.0.255 area 0
!

Конфигурация простая. Указывается подсеть, wildcard маска и номер зоны. После видим сообщения:

На Router0:

Router0#
00:56:22: %OSPF-5-ADJCHG: Process 1, Nbr 10.2.2.1 on FastEthernet0/0 from LOADING to FULL, Loading Done

На Router1:

Router1(config-router)#
00:56:21: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done

Соседство, судя по сообщению установилось. Но, если обратить внимание, то почему то соседство выбрано между адресами из Loopback интерфейсов. Это на самом деле не адрес, а идентификатор или Router ID. Если в самом процессе он явно не указывается, то выбирается автоматически. Если настроены Loopback интерфейсы, то выбирается наибольший IP-адрес из них. Если Loopback не настроены, то выбирается наибольший IP-адрес из обычного физического интерфейса. У нас Loopback был настроен, а значит он и будет выбран RID.
Так как процессы на обоих роутерах одинаковые, покажу на примере Router0:
Так как соседство установлено, посмотрим список соседей.

Router0#show ip ospf neighbor 


Neighbor ID     Pri   State           Dead Time   Address         Interface
10.2.2.1          1   FULL/BDR        00:00:38    192.168.1.2     FastEthernet0/0

Видим 10.2.2.1 (Router1). Статус Full (чуть ниже расскажу и об этом), роль BDR (то есть Router0 выбран DR). Его физический IP-адрес и с какого интерфейса доступен.
Теперь посмотрим на базу данных OSPF:

Router0#show ip ospf database 
            OSPF Router with ID (10.1.1.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
10.1.1.1        10.1.1.1        259         0x80000004 0x0047fb 2
10.2.2.1        10.2.2.1        259         0x80000004 0x00b586 2

                Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.1.1     10.1.1.1        259         0x80000002 0x00e9ca

Подробное ее содержание изучается в курсе CCNP Route, поэтому расскажу вкратце. Есть несколько типов LSA-сообщений. В нашей схеме используются только Type1 (Router) и Type2(Network). Первое генерится каждым маршрутизатором в пределах зоны и дальше зоны не уходит. Второй тип генерируется DR-ом и содержит адрес DR и инфу о всех маршрутизаторах в зоне.
Например, так выглядит Type1 с консоли Router0:

Router0#show ip ospf database router 

            OSPF Router with ID (10.1.1.1) (Process ID 1)

                Router Link States (Area 0)

  LS age: 665
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.1.1.1
  Advertising Router: 10.1.1.1
  LS Seq Number: 80000004
  Checksum: 0x47fb
  Length: 48
  Number of Links: 2

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 192.168.1.1
     (Link Data) Router Interface address: 192.168.1.1
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.1.1.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

  LS age: 665
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.2.2.1
  Advertising Router: 10.2.2.1
  LS Seq Number: 80000004
  Checksum: 0xb586
  Length: 48
  Number of Links: 2

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.2.2.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 192.168.1.1
     (Link Data) Router Interface address: 192.168.1.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

То есть LSA каждого маршрутизатора, в которых он сообщает о своих сетях.

А вот так Type2:

Router0#show ip ospf database network 

            OSPF Router with ID (10.1.1.1) (Process ID 1)

                Net Link States (Area 0)

  Routing Bit Set on this LSA
  LS age: 686
  Options: (No TOS-capability, DC)
  LS Type: Network Links
  Link State ID: 192.168.1.1  (address of Designated Router)
  Advertising Router: 10.1.1.1
  LS Seq Number: 80000002
  Checksum: 0xe9ca
  Length: 32
  Network Mask: /24
        Attached Router: 10.2.2.1
        Attached Router: 10.1.1.1

То есть как раз адрес DR (кому отправлять свои LSA и список маршрутизаторов в зоне).
И теперь можно посмотреть на таблицу маршрутизации:

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C       10.1.1.0/24 is directly connected, Loopback1
O       10.2.2.1/32 [110/2] via 192.168.1.2, 00:48:02, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0

Видим букву O (это значит, что маршрут получен из той же зоны, что и данный маршрутизатор). Можно заметить, что в таблицу записан с маской /32. Это потому что адрес из Loopback интерфейса и обычно такие адреса служат для всяких RID и прочих идентификаторов. Это не подсеть, а значит нет смысла анонсировать с тем же префиксом, что и сам интерфейс. Но такое поведение работает не на всех цисках. Поэтому тут надо быть внимательнее. Рядом видим привычную административную дистанцию (у циски это 110, но можно поменять) и метрику, которая равна 2-ум. Здесь метрика считается проще, чем у EIGRP. Формула:

Cost = Reference Bandwidth / Interface Bandwidth

.
Reference Bandwidth — это некое заданное число (здесь по-умолчанию 100). Оно прошито внутри логики и меняется командой auto-cost reference-bandwidth число в настройках OSPF процесса.
А вот Interface Bandwidth берется ровно такое, какая пропускная способность у интерфейса. На нашем интерфейсе это 100, поэтому метрика = 1. Так как Router1 анонсирует уже с метрикой 1, то накладывая свою стоимость в 1-цу, получаем 2.
OSPF для меня в свое время менялся в сложности понимания. Сначала казалось все легко, включил и все работает. Дальше, когда начинаешь углубляться в структуру LSA и как происходит формирование и расчет, теряешься. А после понимания, он снова становится легким. Его понимание приходит только после практики. Поэтому можете потренироваться на этой топологии. Ссылка на нее.
Пару слов по балансировке. Здесь она строго эквивалентная. Нельзя делать, как в EIGRP. Всего в кандидатах может быть до 16 маршрутов, но в таблицу попадут только 4.
Если предыдущая схема понятна, то двигаемся дальше. Добавим еще один маршрутизатор и соединим их, при помощи коммутатора:

Я взял за основу предыдущую, адреса все те же самые, включен OSPF. На Router2 также включен OSPF и настроены адреса согласно схеме. Теперь смотрим, что произошло со стороны того же Router0. Ввожу команду просмотра соседей:

Router0#show ip ospf neighbor 


Neighbor ID     Pri   State           Dead Time   Address         Interface
10.2.2.1          1   FULL/BDR        00:00:37    192.168.1.2     FastEthernet0/0
10.3.3.1          1   FULL/DROTHER    00:00:36    192.168.1.3     FastEthernet0/0

И вижу нового соседа, но с пометкой DROTHER. Это значит, что маршрутизатор Router2 (новый) не является DR или BDR. Обратите внимание, что DR (Router0) установил Full соседство со всеми соседями.
Ввожу нового игрока на поле — Router3:

Единственное, что у него настроено — это IP-адрес 192.168.1.4/24 на FastEthernet 0/0 и включен OSPF. Он тут для наглядности.
Со стороны Router0:

Router0#show ip ospf neighbor 


Neighbor ID     Pri   State           Dead Time   Address         Interface
10.2.2.1          1   FULL/BDR        00:00:31    192.168.1.2     FastEthernet0/0
10.3.3.1          1   FULL/DROTHER    00:00:31    192.168.1.3     FastEthernet0/0
192.168.1.4       1   FULL/DROTHER    00:00:30    192.168.1.4     FastEthernet0/0

Так как нет адреса на Loopback интерфейсе и не задан вручную RID, выбран адрес с физического интерфейса. А теперь переходим к Router2 и смотрим на его список соседей:

Router2#show ip ospf neighbor 


Neighbor ID     Pri   State           Dead Time   Address         Interface
10.2.2.1          1   FULL/BDR        00:00:32    192.168.1.2     FastEthernet0/0
10.1.1.1          1   FULL/DR         00:00:32    192.168.1.1     FastEthernet0/0
192.168.1.4       1   2WAY/DROTHER    00:00:31    192.168.1.4     FastEthernet0/0

Видим, что с ним у него не Full отношения, а 2Way. Почему не Full? На этом остановлюсь и расскажу про процесс установления соседства. В хорошо работающей сети процесс соседства происходит настолько быстро, что все состояния вы не успеете увидеть. Я только опишу их, для общего понимания:
1) Down — это самый старт, когда маршрутизатор еще не предпринял попытку соседства и ничего в ответ не получает.
2) Init — маршрутизатор переходит в это состояние после отправки Hello-сообщения, до момента получения ответа.
3) 2-WAY — маршрутизатор переходит в это состояние, если получает ответный Hello и видит внутри него свой RID. Это как раз момент установления соседства. В сетях множественного доступа (типа Ethernet) это состояние конечное между «не DR/BDR» маршрутизаторами. Как раз в этом состоянии осталось соседство между Router2 и Router3.
4) ExStart — это состояние выбора DR/BDR. Маршрутизатор с наилучшим RID берет на себя эту роль. Он начинает первым процесс обновления LSDB у всех соседей.
5) Exсhange — состояние, в котором маршрутизаторы отправляют друг другу состояние своих LSDB.
6) Loading — если маршрутизатор видит, что в присланном сообщении есть подсеть, о которой он не знает, он запрашивает информацию о ней. И вот пока запрашиваемая инфа не дойдет до него, он будет висеть в этом состоянии.
7) Full — конечное состояние. Наступает оно в том случае, когда LSDB между соседями синхронизировано.
Стоит упомянуть, что в OSPF есть таймеры соседства. Нужно для того, чтобы узнать жив ли сосед или пора исключить его. Поэтому каждые 10 секунд маршрутизаторы отсылают друг другу Hello-пакеты, чтобы подтвердить свое существование. Если в течении 40 секунд от соседа ничего не поступало, соседство с ним разрывается.
Посмотреть на таймеры и другие параметры интерфейса, на котором включен OSPF, можно командой show ip ospf interface:

Router0#show ip ospf interface 

Loopback1 is up, line protocol is up
  Internet address is 10.1.1.1/24, Area 0
  Process ID 1, Router ID 10.1.1.1, Network Type LOOPBACK, Cost: 1
  Loopback interface is treated as a stub Host
FastEthernet0/0 is up, line protocol is up
  Internet address is 192.168.1.1/24, Area 0
  Process ID 1, Router ID 10.1.1.1, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 10.1.1.1, Interface address 192.168.1.1
  Backup Designated Router (ID) 10.2.2.1, Interface address 192.168.1.2
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    Hello due in 00:00:00
  Index 2/2, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 3, Adjacent neighbor count is 3
    Adjacent with neighbor 10.2.2.1  (Backup Designated Router)
    Adjacent with neighbor 10.3.3.1
    Adjacent with neighbor 192.168.1.4
  Suppress hello for 0 neighbor(s)

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

И последнее, что стоит рассмотреть из раздела OSPF — это Multiarea OSPF (или многозонный OSPF).

Теперь есть 3 маршрутизатора. Router0 находится в нулевой зоне, Router1 в 0-ой и 1-ой зоне и Router2 в 1-ой зоне. Конфигурация проста. Я оставлю ее под спойлерами:

Router0

Router0#show running-config
Building configuration…

Current configuration: 734 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
router ospf 1
log-adjacency-changes
network 192.168.1.0 0.0.0.255 area 0
network 10.1.1.0 0.0.0.255 area 0
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router1

Router1#show running-config
Building configuration…

Current configuration: 693 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.2.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router ospf 1
log-adjacency-changes
network 192.168.1.0 0.0.0.255 area 0
network 192.168.2.0 0.0.0.255 area 1
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

Router2

Router2#show running-config
Building configuration…

Current configuration: 734 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.2.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
router ospf 1
log-adjacency-changes
network 192.168.2.0 0.0.0.255 area 1
network 10.2.2.0 0.0.0.255 area 1
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end

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

Router0#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C       10.1.1.0/24 is directly connected, Loopback1
O IA    10.2.2.1/32 [110/3] via 192.168.1.1, 00:09:27, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0
O IA 192.168.2.0/24 [110/2] via 192.168.1.1, 00:43:49, FastEthernet0/0

То добавились маршруты OIA (или OSPF inter area). То есть маршрут из другой зоны. Если посмотреть базу:

Router0#show ip ospf database 
            OSPF Router with ID (10.1.1.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
10.1.1.1        10.1.1.1        861         0x80000006 0x00c679 2
192.168.2.1     192.168.2.1     861         0x80000006 0x00dbc3 1

                Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.1.1     192.168.2.1     953         0x80000002 0x009931

                Summary Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.2.0     192.168.2.1     947         0x80000003 0x00a7dc
10.2.2.1        192.168.2.1     851         0x80000004 0x00bc22

Здесь появился Summary LSA или Type3. Его генерирует маршрутизатор, который находится на границе двух зон. Такой маршрутизатор называют пограничным или ABR (от англ. Area Border Gateway).
Если посмотреть на него поглубже:

Router0#show ip ospf database  summary 

            OSPF Router with ID (10.1.1.1) (Process ID 1)

                Summary Net Link States (Area 0)

  LS age: 1146
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 192.168.2.0 (summary Network Number)
  Advertising Router: 192.168.2.1
  LS Seq Number: 80000003
  Checksum: 0xa7dc
  Length: 28
  Network Mask: /24
        TOS: 0  Metric: 1

  LS age: 1050
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 10.2.2.1 (summary Network Number)
  Advertising Router: 192.168.2.1
  LS Seq Number: 80000004
  Checksum: 0xbc22
  Length: 28
  Network Mask: /32
        TOS: 0  Metric: 2

То можно заметить, что анонсирует его 192.168.2.1 (это RID Router1).
Если же посмотреть на таблицу маршрутизации со стороны ABR (т.е. Router1):

Router1#show ip route 
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/32 is subnetted, 2 subnets
O       10.1.1.1 [110/2] via 192.168.1.2, 00:20:49, FastEthernet0/0
O       10.2.2.1 [110/2] via 192.168.2.2, 00:20:44, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1

То для него все маршруты помечены O. Все потому что он находится в обеих зонах и для него они локальны.
А если посмотреть базу:

Router1#show ip ospf database 
            OSPF Router with ID (192.168.2.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
192.168.2.1     192.168.2.1     1326        0x80000006 0x00dbc3 1
10.1.1.1        10.1.1.1        1326        0x80000006 0x00c679 2

                Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.1.1     192.168.2.1     1417        0x80000002 0x009931

                Summary Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.2.0     192.168.2.1     1412        0x80000003 0x00a7dc
10.2.2.1        192.168.2.1     1316        0x80000004 0x00bc22

                Router Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum Link count
192.168.2.1     192.168.2.1     1326        0x80000005 0x00f3aa 1
10.2.2.1        10.2.2.1        1326        0x80000005 0x006ccc 2

                Net Link States (Area 1)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.2.1     192.168.2.1     1371        0x80000002 0x0049d0

                Summary Net Link States (Area 1)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.1.0     192.168.2.1     1413        0x80000003 0x00b2d2
10.1.1.1        192.168.2.1     1322        0x80000005 0x00d10e

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

Таким образом OSPF можно делить на зоны. То есть маршрутизатор видит соседей в своей зоне и просчитывает лучший путь сам. А вот межзоннные маршруты (Type3) диктует ABR. Поэтому на границу чаще ставят производительные маршрутизаторы. На самом деле EIGRP и OSPF уж очень много всего умеют. И заслуживают отдельных статей. Более подробно они разбираются уже в топиках CCNP. Так что для основ достаточно.
В итоге мы разобрались с маршрутизацией и встает вопрос: что использовать? Однозначного ответа тут нет. Если у вас вся сеть построена на цисках, то можно выбирать EIGRP. Если у вас сеть мультивендорная, то тут однозначно OSPF. Да, циска вроде как открыла стандарт, но относительно старые железки (не циски) не получат поддержку этого протокола, да и не на всех новых его внедрят. Более того, могу сказать, что даже в сетях построенных исключительно на цисках, выбирают OSPF. Аргументируя это тем, что OSPF более гибок в настройке, нежели EIGRP. Да и нельзя быть уверенным, что в какой то момент придется ставить сетевое устройство другого вендора. А значит внедрение такого устройства пройдет безболезненно и без перенастройки всей сети.

Подводя итоги, можно сказать, что это самая долгая статья из всех, что я писал. Все потому, что писал я ее больше 2-х лет. Постоянно что-то стопорило ее написание, а когда садился, то не мог сконцентрироваться и написать больше 2-х предложений. Но теперь она написана и можно спокойно выдохнуть. Ее как раз не хватало для основ компьютерных сетей, ведь предыдущие статьи концентрировались в большинстве на L2 уровне. Столь длительное написание привело к тому, что циска уже меняет программу своего экзамена. А значит некоторые темы, которые я хотел далее осветить, уже не актуальны. Поэтому я уберу из содержания будущие темы и буду выкладывать статьи, исходя из актуальности.

Спасибо всем, кто ждал статью и интересовался.

Другие наши интересноые статьи:

  • Что делать если алиса не видит вай фай роутер
  • Что делает роутер на компьютере
  • Что вводить для настройки роутера
  • Что делать если авторизацию роутера
  • Что делает роутер в сети

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии