Основы и настройка статической маршрутизации

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

1. Введение в маршрутизацию: таблица маршрутизации, метрики и отличия статики от динамики

Введение в маршрутизацию: таблица маршрутизации, метрики и отличия статики от динамики

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

Что такое маршрутизация?

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

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

!Схема передачи данных от отправителя к получателю через сеть маршрутизаторов.

Маршрутизатор работает на третьем уровне (сетевом) модели OSI. Его главная задача — посмотреть на IP-адрес назначения в пакете данных и решить, в какой интерфейс (порт) этот пакет нужно отправить дальше.

Таблица маршрутизации: карта местности

Чтобы маршрутизатор знал, куда отправлять пакеты, у него должна быть «карта» сети. Эта карта называется таблицей маршрутизации (Routing Table). Это база данных, хранящаяся в памяти устройства, которая содержит информацию о доступных сетях и путях к ним.

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

  • Сеть назначения (Destination Network): Адрес сети, куда мы хотим попасть.
  • Маска подсети (Subnet Mask): Определяет размер сети назначения.
  • Шлюз или Следующий переход (Gateway / Next Hop): IP-адрес соседнего маршрутизатора, которому нужно передать пакет.
  • Интерфейс (Interface): Физический порт, через который нужно отправить пакет (например, GigabitEthernet0/1).
  • Метрика и Административная дистанция: Числовые значения, помогающие выбрать лучший путь (об этом ниже).
  • Типы маршрутов в таблице

    Маршруты попадают в таблицу тремя основными способами:

    * Directly Connected (C): Прямо подключенные сети. Как только вы настраиваете IP-адрес на интерфейсе маршрутизатора и включаете его, маршрутизатор автоматически узнает об этой сети. * Static (S): Статические маршруты. Это пути, которые администратор (вы) прописал вручную. * Dynamic (D, O, R и др.): Динамические маршруты. Маршрутизатор изучил их автоматически, общаясь с другими маршрутизаторами через специальные протоколы (OSPF, EIGRP, BGP).

    Пример упрощенной таблицы маршрутизации:

    | Код | Сеть назначения | Маска | Следующий переход / Интерфейс | | :--- | :--- | :--- | :--- | | C | 192.168.1.0 | 255.255.255.0 | GigabitEthernet0/0 | | S | 10.10.10.0 | 255.255.255.0 | 192.168.1.2 | | O | 172.16.0.0 | 255.255.0.0 | 192.168.1.5 |

    Как маршрутизатор выбирает лучший путь?

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

    1. Правило самого длинного совпадения (Longest Match)

    Это самое главное правило. Маршрутизатор всегда ищет маршрут, который максимально точно совпадает с IP-адресом назначения. Чем длиннее маска подсети (чем больше бит совпадает), тем приоритетнее маршрут.

    2. Административная дистанция (Administrative Distance — AD)

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

    Чем меньше значение AD, тем надежнее маршрут.

    Представьте, что у вас есть два друга. Один (Статика) никогда не врет, а второй (Динамика) иногда может ошибаться. Вы скорее поверите первому. Так и маршрутизатор:

    * Directly Connected: AD = 0 (Самый надежный, так как это сам маршрутизатор). * Static Route: AD = 1 (Администратор сказал — значит так и есть). * OSPF (Динамический протокол): AD = 110. * RIP (Динамический протокол): AD = 120.

    Формально это можно записать так:

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

    3. Метрика (Metric)

    Если и AD одинаковая (например, два маршрута получены от одного и того же протокола OSPF), то маршрутизатор смотрит на метрику. Метрика — это стоимость пути.

    В отличие от AD, метрика рассчитывается по-разному для разных протоколов: * Для протокола RIP метрика — это количество хопов (маршрутизаторов) на пути. * Для OSPF метрика основана на пропускной способности канала.

    Рассмотрим формулу расчета стоимости для протокола OSPF:

    Где — это итоговая метрика (стоимость) пути, — это эталонная пропускная способность (Reference Bandwidth) в битах в секунду (обычно 100 Мбит/с), а — реальная пропускная способность интерфейса в битах в секунду. Чем выше скорость интерфейса, тем ниже стоимость и тем привлекательнее маршрут.

    !Иллюстрация приоритета административной дистанции и метрики при выборе маршрута.

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

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

    Статическая маршрутизация (Static Routing)

    Это метод, при котором администратор вручную вводит каждый маршрут в конфигурацию каждого маршрутизатора. Вы буквально говорите устройству: «Чтобы попасть в сеть А, отправь пакет на адрес Б».

    Преимущества: * Полный контроль: Вы точно знаете, как пойдет трафик. * Безопасность: Маршрутизатор не обменивается информацией с другими устройствами, его сложнее обмануть (спуфинг). * Экономия ресурсов: Не тратится процессорное время и оперативная память на сложные вычисления алгоритмов. * Отсутствие лишнего трафика: Полоса пропускания не занимается служебными сообщениями протоколов.

    Недостатки: * Сложность масштабирования: В сети из 3 роутеров это легко. В сети из 100 роутеров прописать все маршруты вручную — адский труд. * Отсутствие автоматического восстановления: Если кабель перережут, статический маршрут продолжит указывать в «тупик», пока администратор вручную не изменит настройки. * Человеческий фактор: Легко допустить опечатку.

    Динамическая маршрутизация (Dynamic Routing)

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

    Преимущества: * Масштабируемость: Легко работает в сетях с тысячами узлов. * Отказоустойчивость: Если основной путь пропадает, маршрутизатор мгновенно (или почти мгновенно) находит обходной путь. * Простота настройки: Достаточно включить протокол на интерфейсах, и магия произойдет сама.

    Недостатки: * Потребление ресурсов: Требует мощного CPU и RAM. * Сложность диагностики: Иногда трудно понять, почему алгоритм выбрал именно этот странный путь. * Безопасность: Требует дополнительной защиты, чтобы злоумышленник не подсунул ложный маршрут.

    Сравнительная таблица

    | Характеристика | Статическая маршрутизация | Динамическая маршрутизация | | :--- | :--- | :--- | | Настройка | Ручная, трудоемкая | Автоматическая после запуска | | Обслуживание | Сложное в больших сетях | Простое, самоадаптирующееся | | Нагрузка на CPU/RAM | Минимальная | Высокая | | Использование полосы | Нет служебного трафика | Есть служебный трафик | | Реакция на сбои | Нет (требует вмешательства) | Автоматическая перестройка | | Применение | Малые сети, тупиковые сети (Stub) | Средние и крупные корпоративные сети, Интернет |

    Когда использовать статику?

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

  • Это база для понимания логики работы сетей.
  • Она идеальна для небольших офисов.
  • Она используется для настройки шлюза по умолчанию (Default Gateway) — маршрута «последней надежды» для выхода в Интернет.
  • В следующей статье мы перейдем от теории к практике и разберем синтаксис команды для настройки статического маршрута.

    2. Базовая конфигурация: синтаксис команд, next-hop IP и выходные интерфейсы

    Базовая конфигурация: синтаксис команд, next-hop IP и выходные интерфейсы

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

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

    Топология для примеров

    Чтобы команды не выглядели абстрактным набором символов, давайте представим простую сетевую топологию. У нас есть два маршрутизатора: R1 (наш локальный роутер) и R2 (соседний роутер).

    !Схема сети: R1 подключен к R2, за которым находится целевая сеть 192.168.2.0/24.

    Наша задача: Настроить статический маршрут на R1 так, чтобы он мог отправлять пакеты в сеть 192.168.2.0/24, которая находится за маршрутизатором R2.

    Синтаксис команды ip route

    В операционной системе Cisco IOS (и многих других, наследующих этот синтаксис) для создания статического маршрута используется команда глобальной конфигурации ip route. Ее базовая структура выглядит следующим образом:

    Разберем каждый параметр:

  • network (сеть назначения): IP-адрес сети, в которую мы хотим отправить данные (в нашем примере это 192.168.2.0).
  • mask (маска подсети): Маска целевой сети (в нашем примере 255.255.255.0).
  • address (next-hop IP): IP-адрес входного интерфейса соседнего маршрутизатора (10.1.1.2).
  • interface (выходной интерфейс): Имя локального интерфейса на R1, через который пакет покинет устройство (например, GigabitEthernet0/1).
  • distance (административная дистанция): Необязательный параметр. Позволяет изменить надежность маршрута (по умолчанию для статики это 1).
  • Существует три основных способа задать маршрут, в зависимости от того, что вы укажете в качестве третьего параметра: адрес следующего перехода, выходной интерфейс или и то, и другое.

    Способ 1: Маршрут через Next-Hop IP

    Это самый распространенный и надежный способ настройки в средах с множественным доступом (например, Ethernet). Вы явно указываете маршрутизатору IP-адрес соседа, которому нужно передать эстафету.

    Команда на R1 будет выглядеть так:

    Как это работает: Рекурсивный поиск (Recursive Lookup)

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

  • Первый проход: Маршрутизатор смотрит в таблицу и находит запись: "Чтобы попасть в 192.168.2.0/24, отправь пакет на 10.1.1.2".
  • Проблема: Маршрутизатор знает IP следующего перехода (10.1.1.2), но он пока не знает, в какой физический порт нужно выплюнуть этот пакет, чтобы достичь 10.1.1.2.
  • Второй проход (Рекурсия): Маршрутизатор снова просматривает таблицу маршрутизации, теперь уже ища путь к адресу 10.1.1.2. Он находит запись Directly Connected (прямо подключенная сеть), которая говорит: "Сеть 10.1.1.0/30 находится на интерфейсе GigabitEthernet0/1".
  • Результат: Теперь маршрутизатор знает физический интерфейс и может отправить пакет.
  • Хотя это звучит как двойная работа, современные маршрутизаторы используют технологию CEF (Cisco Express Forwarding), которая заранее просчитывает эти связи и сохраняет их в специальной таблице (FIB), поэтому задержек в передаче данных не происходит.

    Способ 2: Маршрут через выходной интерфейс

    В этом методе вместо IP-адреса соседа мы указываем собственный порт, через который пакет должен уйти.

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

    Случай А: Point-to-Point интерфейсы (Serial)

    Если соединение между R1 и R2 — это старый добрый последовательный кабель (Serial), то этот метод работает идеально. В таком кабеле есть только два конца. Если вытолкнуть пакет в трубу с одной стороны, он неизбежно вылетит с другой. Указывать IP-адрес соседа необязательно.

    Случай Б: Broadcast интерфейсы (Ethernet)

    Если же R1 и R2 соединены через Ethernet (что верно для 99% современных сетей), использование только выходного интерфейса — плохая практика.

    Почему? Потому что Ethernet — это среда множественного доступа. Даже если физически кабель соединяет два роутера, логически Ethernet подразумевает, что в сегменте может быть 10, 20 или 100 устройств. Чтобы отправить пакет конкретному устройству в Ethernet, нужно знать его MAC-адрес.

    Когда вы настраиваете маршрут так: ip route ... GigabitEthernet0/1, маршрутизатор R1 начинает считать, что вся сеть 192.168.2.0/24 напрямую подключена к этому интерфейсу.

    Вот что произойдет, когда R1 попытается отправить пакет на 192.168.2.5:

  • R1 думает: «Адрес 192.168.2.5 находится прямо на моем кабеле».
  • R1 отправляет ARP-запрос в сеть: «У кого IP-адрес 192.168.2.5? Сообщите свой MAC».
  • Но адрес 192.168.2.5 находится далеко за R2! Сам хост этот запрос не услышит.
  • Здесь в игру вступает R2. Если на нем включена функция Proxy ARP, он поймет, что R1 ищет кого-то из «далекой» сети, и ответит своим собственным MAC-адресом, как бы говоря: «Да, да, это я (на самом деле нет, но кидай мне)».
  • Последствия: Огромная таблица ARP: R1 будет отправлять ARP-запрос и хранить запись для каждого* уникального IP-адреса из сети назначения, к которому идет обращение. Если вы сканируете подсеть /24, у вас будет 254 записи в ARP-таблице вместо одной. * Широковещательный шторм: Постоянные ARP-запросы забивают эфир и нагружают процессоры устройств.

    > Вывод: Никогда не используйте маршрут только через выходной интерфейс в Ethernet-сетях, если вы точно не понимаете, зачем это нужно.

    Способ 3: Полностью определенный маршрут (Fully Specified)

    Этот метод объединяет два предыдущих. Вы указываете и выходной интерфейс, и IP-адрес следующего перехода.

    Это «золотой стандарт» для некоторых ситуаций. Маршрутизатору не нужно делать рекурсивный поиск (интерфейс известен), и при этом не возникает проблем с ARP (известен конкретный Next-Hop IP, для которого нужно узнать MAC).

    В IPv6 на каналах Link-Local использование полностью определенных маршрутов часто является обязательным требованием.

    Плавающая статика (Floating Static Route)

    Иногда нам нужно настроить резервный канал. Представьте, что у нас есть основной быстрый канал через оптоволокно и медленный резервный через 4G-модем.

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

    По умолчанию статический маршрут имеет AD = 1. Если мы создадим второй маршрут с AD = 50, он попадет в таблицу маршрутизации только тогда, когда исчезнет маршрут с AD = 1.

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

    Проверка конфигурации

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

    Пример вывода:

    Здесь: * S — код источника (Static). * 192.168.2.0 — сеть назначения. * [1/0] — первая цифра это Административная дистанция (1), вторая — метрика (0 для статики). * via 10.1.1.2 — адрес следующего перехода.

    Если вы настроили маршрут через интерфейс, вывод будет немного другим:

    Обратите внимание на фразу is directly connected. Именно она заставляет маршрутизатор думать, что сеть находится прямо на кабеле, и инициировать ARP-запросы, о которых мы говорили выше.

    Резюме

  • Команда ip route — основной инструмент настройки статики.
  • Использование Next-Hop IP требует рекурсивного поиска, но это безопасно и стабильно.
  • Использование выходного интерфейса в Ethernet-сетях опасно из-за проблем с ARP и нагрузкой на CPU.
  • Полностью определенный маршрут снимает нагрузку рекурсии и решает проблемы ARP.
  • Изменяя административную дистанцию, можно создавать резервные (плавающие) маршруты.
  • Теперь, когда мы умеем прокладывать маршруты к конкретным сетям, возникает вопрос: что делать, если мы хотим дать доступ в Интернет, где миллионы сетей? Не прописывать же миллион команд? В следующей статье мы разберем маршрут по умолчанию (Default Route), который решает эту задачу одной строкой.

    3. Специальные типы маршрутов: маршрут по умолчанию (Default Route) и плавающие статические маршруты

    Специальные типы маршрутов: маршрут по умолчанию (Default Route) и плавающие статические маршруты

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

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

  • Проблема масштаба: В Интернете сотни тысяч сетей. Неужели нам нужно прописывать сотни тысяч команд ip route, чтобы наши пользователи могли открыть Google или YouTube?
  • Проблема надежности: Что произойдет, если кабель, по которому идет наш статический маршрут, порвется? Как заставить маршрутизатор автоматически переключиться на запасной канал, если мы используем статику?
  • Сегодня мы решим обе эти проблемы, изучив маршрут по умолчанию (Default Route) и плавающие статические маршруты (Floating Static Routes).

    Маршрут по умолчанию (Default Route)

    Представьте, что вы находитесь в аэропорту. На табло вы видите указатели к конкретным выходам: «Гейт 1», «Гейт 2», «Гейт 5». Но что делать, если вам нужен «Гейт 25», а указателя к нему нет? Вы ищете табличку с надписью «Все остальные гейты» (All other gates).

    В маршрутизации эту роль выполняет маршрут по умолчанию (его также называют «шлюз последней надежды» или Gateway of Last Resort).

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

    Магия нулей: 0.0.0.0/0

    Чтобы создать такой маршрут, мы используем специальный IP-адрес и маску: 0.0.0.0 с маской 0.0.0.0. На сетевом сленге это часто называют «Quad Zero» (четыре нуля).

    Почему именно нули? Вспомним, как маршрутизатор проверяет совпадение маршрута. Он берет IP-адрес назначения из пакета и накладывает на него маску подсети, используя логическую операцию И (AND).

    Формула проверки совпадения выглядит так:

    Где — результат логического умножения, — IP-адрес назначения пакета, — маска подсети из маршрута, а символ обозначает побитовую операцию «И».

    Если мы подставим в эту формулу маску, состоящую из одних нулей (), то результат всегда будет равен , независимо от того, какой IP-адрес был у пакета. Это означает, что маршрут 0.0.0.0/0 математически совпадает с любым существующим IP-адресом.

    Настройка маршрута по умолчанию

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

    Предположим, у нас есть маршрутизатор R1, который подключен к провайдеру (ISP) через интерфейс с адресом шлюза 203.0.113.1.

    !Маршрутизатор R1 использует маршрут по умолчанию для пересылки всего трафика в Интернет.

    Команда настройки:

    Теперь, если R1 получит пакет для адреса 8.8.8.8 (Google DNS), он просмотрит свою таблицу:

  • Есть ли маршрут конкретно к 8.8.8.8? Нет.
  • Есть ли маршрут к подсети 8.0.0.0? Нет.
  • Есть маршрут 0.0.0.0/0? Да! Отправляем пакет на 203.0.113.1.
  • Проверка в таблице маршрутизации

    Посмотрим, как это выглядит в выводе команды show ip route:

    Обратите внимание на код S. Буква S означает Static, а звездочка указывает на то, что этот маршрут является кандидатом на роль маршрута по умолчанию.

    > Важно: Маршрут по умолчанию — это наименее приоритетный маршрут. Вспомните правило «самого длинного совпадения» (Longest Match) из первой статьи. Маска /0 — самая короткая из возможных. Маршрутизатор использует этот путь только тогда, когда не нашел ничего более точного.

    Плавающие статические маршруты (Floating Static Routes)

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

  • Основной: Быстрое оптоволокно (через провайдера ISP1, шлюз 10.1.1.1).
  • Резервный: Медленный 4G-модем или DSL (через провайдера ISP2, шлюз 10.2.2.2).
  • Вы хотите, чтобы трафик шел через оптоволокно, а на модем переключался только в случае аварии. Если вы просто пропишете два маршрута по умолчанию:

    Маршрутизатор добавит в таблицу оба маршрута и начнет балансировать трафик (Load Balancing) между ними. Половина пакетов пойдет по быстрому каналу, половина — по медленному. Это плохое решение.

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

    Использование Административной дистанции (AD)

    В первой статье мы говорили об Административной дистанции (AD) как о мере доверия к источнику маршрута. Чем меньше число, тем больше доверия.

    * По умолчанию статический маршрут имеет AD = 1. * Прямо подключенная сеть имеет AD = 0.

    Идея плавающего маршрута проста: мы вручную увеличиваем AD для резервного маршрута, делая его «менее надежным» в глазах маршрутизатора.

    Давайте настроим нашу схему:

  • Основной маршрут (Primary): Оставляем AD по умолчанию (1).
  • Резервный маршрут (Backup): Устанавливаем AD, например, 50.
  • !Принцип работы плавающего маршрута: активен только путь с меньшей административной дистанцией.

    Команды:

    Число 50 в конце второй команды — это и есть значение distance.

    Логика работы маршрутизатора

    Вот что происходит внутри устройства:

  • Маршрутизатор видит два пути к одной и той же сети (0.0.0.0/0).
  • Он сравнивает их AD.
  • Путь через 10.1.1.1 имеет AD=1.
  • Путь через 10.2.2.2 имеет AD=50.
  • Побеждает AD=1. Маршрутизатор помещает в таблицу маршрутизации (Routing Table) только основной маршрут.
  • Резервный маршрут висит в конфигурации, но в таблицу не попадает. Он «плавает» в небытии, ожидая своего часа.

    Что происходит при сбое?

    Если интерфейс, смотрящий на основного провайдера (ISP1), упадет (статус down), маршрутизатор автоматически удалит все маршруты, связанные с этим интерфейсом.

  • Основной маршрут (AD=1) исчезает из таблицы.
  • Маршрутизатор снова смотрит в конфигурацию: «Есть ли у меня альтернативы?».
  • Он находит маршрут с AD=50.
  • Так как конкурентов больше нет, маршрут с AD=50 инсталлируется в таблицу маршрутизации.
  • Трафик начинает идти через резервный канал. Как только основной канал восстановится, маршрут с AD=1 вернется, вытеснит маршрут с AD=50 (так как 1 < 50), и схема вернется в исходное состояние.

    Проверка плавающего маршрута

    Чтобы убедиться, что резерв настроен, но не активен, используйте команду show run (просмотр конфигурации), так как в show ip route вы его не увидите.

    Чтобы протестировать переключение, можно вручную выключить основной интерфейс:

    После этого введите show ip route, и вы увидите, что шлюз изменился на 10.2.2.2, а значение дистанции в скобках стало [50/0].

    Комбинирование методов

    Эти две технологии прекрасно работают вместе. В корпоративных сетях стандартом де-факто является следующая схема:

  • Default Route используется для выхода в Интернет, чтобы не держать в памяти полную таблицу маршрутизации Интернета (BGP Full View).
  • Floating Static Route используется для резервирования этого выхода через второго провайдера.
  • Резюме

    Подведем итоги этой статьи:

    * Маршрут по умолчанию (0.0.0.0/0) — это универсальный путь для всех пакетов, адрес назначения которых маршрутизатор не знает. Он позволяет обеспечить доступ в Интернет одной командой. * Плавающий статический маршрут — это резервный маршрут, который имеет более высокую (худшую) Административную дистанцию, чем основной. * Плавающий маршрут появляется в таблице маршрутизации только тогда, когда основной маршрут выходит из строя.

    Теперь вы владеете полным арсеналом статической маршрутизации: от простых путей до отказоустойчивых схем. Однако, как мы обсуждали в самом начале курса, статика плохо масштабируется. Что если у нас 50 маршрутизаторов? Прописывать на каждом плавающие маршруты — это мучение.

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

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

    4. Оптимизация сети: суммирование маршрутов и работа с масками переменной длины (VLSM)

    Оптимизация сети: суммирование маршрутов и работа с масками переменной длины (VLSM)

    Мы подошли к финальной части курса «Основы и настройка статической маршрутизации». В предыдущих статьях мы научились создавать статические маршруты, настраивать шлюз по умолчанию и обеспечивать отказоустойчивость с помощью плавающей статики. Казалось бы, мы умеем всё. Но представьте ситуацию: вы администратор сети крупного предприятия, у которого 50 филиалов. В каждом филиале по 4 подсети. Если прописывать маршруты ко всем подсетям вручную, ваша таблица маршрутизации раздуется до 200 записей.

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

    Маски переменной длины (VLSM)

    Чтобы понять, как оптимизировать маршруты, нужно сначала разобраться, как мы распределяем IP-адреса. Раньше, на заре Интернета, использовалась классовая адресация (Classful Addressing). Сети делились на классы A, B и C с фиксированными масками (/8, /16, /24). Это было крайне неэффективно.

    Представьте, что вам нужно соединить два маршрутизатора прямым кабелем (Point-to-Point). Для этого нужно всего 2 IP-адреса. Если использовать старый классовый подход, вам пришлось бы выделить целую сеть класса C (254 адреса). В итоге 2 адреса используются, а 252 пропадают впустую.

    Решением стала технология VLSM (Variable Length Subnet Mask) — маска подсети переменной длины. Она позволяет «разрезать» подсети на еще более мелкие части, используя маски разной длины внутри одной и той же сетевой инфраструктуры.

    !Иллюстрация принципа VLSM: разбиение одной сети на подсети разного размера.

    Преимущества VLSM

  • Экономия адресов: Для каналов «точка-точка» мы используем маску /30 (4 адреса, 2 хоста) или даже /31. Для пользовательских сегментов — /24 или /25.
  • Иерархичность: VLSM позволяет группировать сети логически, что является обязательным условием для следующего шага — суммирования.
  • Формула для расчета количества доступных хостов в подсети выглядит так:

    Где — количество доступных для назначения IP-адресов (хостов), — общее количество бит в IPv4 адресе, — длина префикса (маски) сети (например, 24, 26, 30), а вычитается, так как первый адрес (адрес сети) и последний адрес (широковещательный) зарезервированы и не могут быть назначены устройствам.

    Суммирование маршрутов (Route Summarization)

    Суммирование маршрутов (также известное как агрегация маршрутов или Supernetting) — это процесс объединения нескольких маршрутов с длинными масками в один маршрут с более короткой маской.

    Вернемся к примеру с 50 филиалами. Допустим, у филиала «Москва» есть 4 подсети: * 172.16.0.0/24 * 172.16.1.0/24 * 172.16.2.0/24 * 172.16.3.0/24

    Вместо того чтобы отправлять главному маршрутизатору 4 разные записи, мы можем сказать: «Все, что начинается с 172.16.0... и до 172.16.3..., находится в Москве». Мы заменяем 4 строки одной.

    Как рассчитать суммарный маршрут?

    Для этого нужно вспомнить двоичную арифметику. Алгоритм действий следующий:

  • Выпишите все сети, которые хотите суммировать, в двоичном формате.
  • Найдите общую часть бит (слева направо), которая совпадает у всех сетей.
  • Посчитайте количество этих совпадающих бит — это и будет новая маска.
  • Оставшиеся биты заполните нулями — это будет адрес суммарной сети.
  • Пример расчета:

    Возьмем наши сети: * 172.16.0.0 * 172.16.1.0 * 172.16.2.0 * 172.16.3.0

    Первые два октета (172.16) у всех одинаковые, это уже 16 бит совпадения. Различия начинаются в третьем октете. Переведем третий октет в двоичный вид:

    | Десятичное | Двоичное (3-й октет) | | :--- | :--- | | 0 | 00000000 | | 1 | 00000001 | | 2 | 00000010 | | 3 | 00000011 |

    Посмотрите внимательно на столбец с двоичным кодом. Первые 6 бит (выделены жирным) у всех четырех чисел одинаковые: 000000. Различия начинаются только на 7-м и 8-м битах.

    Считаем новую маску: 16 бит (первые два октета) + 6 бит (совпадения в третьем октете) = 22 бита.

    Результат: Суммарный маршрут: 172.16.0.0/22.

    Этот один маршрут охватывает диапазон от 172.16.0.0 до 172.16.3.255.

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

    Настройка суммарного статического маршрута

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

    Маска /22 в десятичном виде:

    Команда на маршрутизаторе (R1), который хочет отправить трафик в сторону филиала (R2):

    Теперь R1 имеет всего одну запись вместо четырех.

    Опасности суммирования и маршрут в Null0

    Суммирование — мощный инструмент, но с ним нужно быть осторожным. Оно может привести к возникновению петель маршрутизации (Routing Loops), если суммарный маршрут охватывает сети, которых на самом деле не существует.

    Представьте, что мы настроили суммарный маршрут 172.16.0.0/22 (который включает подсети 0, 1, 2 и 3). Но физически в филиале существуют только подсети 0 и 1. Подсети 2 и 3 пока не используются.

    Что произойдет, если R1 отправит пакет на адрес 172.16.2.100?

  • R1 видит суммарный маршрут и отправляет пакет на R2 (филиал).
  • R2 получает пакет. Он смотрит в свою таблицу маршрутизации и видит, что у него нет сети 172.16.2.0.
  • Однако у R2 есть Маршрут по умолчанию (Default Route), который указывает обратно на R1 (в Интернет).
  • R2 отправляет пакет обратно на R1.
  • R1 снова смотрит в таблицу, видит суммарный маршрут и кидает пакет на R2.
  • Пакет начинает летать между роутерами, пока не истечет его время жизни (TTL). Это создает бесполезную нагрузку на канал и процессоры.

    Решение: Discard Route (Маршрут в никуда)

    Чтобы предотвратить это, на маршрутизаторе, который содержит эти сети (в нашем случае R2, филиал), создается защитный маршрут, указывающий на специальный виртуальный интерфейс Null0.

    Интерфейс Null0 — это «черная дыра». Все, что попадает туда, мгновенно уничтожается без отправки уведомлений.

    На R2 (филиале) мы должны настроить:

    Как это работает теперь? Вспомним правило Longest Match (самого длинного совпадения).

    У R2 в таблице будут:

  • 172.16.0.0/24 (Connected) — совпадение 24 бита.
  • 172.16.1.0/24 (Connected) — совпадение 24 бита.
  • 172.16.0.0/22 (Static to Null0) — совпадение 22 бита.
  • 0.0.0.0/0 (Default to R1) — совпадение 0 бит.
  • Если приходит пакет на 172.16.0.5: срабатывает маршрут №1 (24 бита > 22 бит). Пакет доставлен. Если приходит пакет на 172.16.2.100: маршрутов №1 и №2 нет. Срабатывает маршрут №3 (22 бита > 0 бит). Пакет уходит в Null0 и уничтожается. Петля предотвращена!

    CIDR: Бесклассовая междоменная маршрутизация

    Термины VLSM и CIDR часто путают или используют как синонимы. Давайте разграничим их:

    * VLSM — это когда мы берем одну сеть и делим её на более мелкие (движение от общего к частному). Используется внутри организации. * CIDR (Classless Inter-Domain Routing) — это когда мы берем много мелких сетей и объединяем их в одну большую запись для передачи информации между провайдерами в Интернете (движение от частного к общему). По сути, это и есть суммирование, но в глобальном масштабе.

    Благодаря CIDR таблица маршрутизации глобального Интернета содержит около 900 000 записей. Без CIDR она была бы в десятки раз больше, и Интернет в его нынешнем виде просто перестал бы работать.

    Резюме курса

    В этой статье мы разобрали методы оптимизации таблицы маршрутизации. Давайте подведем итоги всего курса «Основы и настройка статической маршрутизации»:

  • Маршрутизация — это процесс выбора пути на основе IP-адресов.
  • Таблица маршрутизации строится на основе трех источников: прямо подключенных сетей, статики и динамики.
  • При выборе пути главную роль играет Longest Match (длина маски), затем Administrative Distance (доверие) и Metric (стоимость).
  • Статические маршруты надежны и просты, но плохо масштабируются.
  • Маршрут по умолчанию (0.0.0.0/0) спасает нас от необходимости знать все маршруты в мире.
  • Суммирование маршрутов позволяет сократить размер таблицы, но требует грамотного планирования IP-адресации и использования защитных маршрутов в Null0.
  • Теперь вы обладаете прочным фундаментом для работы с маршрутизацией. Эти знания универсальны и применимы к оборудованию любого вендора, будь то Cisco, MikroTik, Juniper или Linux-серверы. Следующим шагом в вашем развитии станет изучение протоколов динамической маршрутизации (OSPF, BGP), но это уже тема для отдельного большого курса.

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

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

    Поздравляю! Вы прошли долгий путь от понимания того, что такое IP-адрес, до настройки сложных схем с плавающими маршрутами и суммированием сетей. Теперь вы умеете строить сети. Но любой опытный инженер скажет вам: «Настроить сеть — это полдела. Главное умение — починить её, когда она сломается».

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

    Философия поиска неисправностей

    Прежде чем вводить команды, нужно усвоить главный принцип: разделяй и властвуй. Сеть работает по модели OSI. Если у вас перерезан кабель (Физический уровень), нет смысла проверять таблицу маршрутизации (Сетевой уровень).

    Обычно диагностику проводят по одному из двух методов:

  • Bottom-Up (Снизу-вверх): Проверяем кабели, потом интерфейсы, потом IP-адреса, потом маршруты.
  • Divide and Conquer (Разделяй и властвуй): Начинаем с команды ping. Если пинг проходит, значит, нижние три уровня (физический, канальный, сетевой) работают, и проблему нужно искать выше (например, фаервол блокирует порт).
  • Мы сосредоточимся на проблемах третьего уровня (L3), так как наш курс посвящен маршрутизации.

    Инструмент №1: Проверка интерфейсов

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

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

    Пример вывода:

    Здесь важны два столбца:

    * Status: Отвечает за физический уровень (L1). Если здесь down, проверьте кабель или включено ли устройство на другом конце. * Protocol: Отвечает за канальный уровень (L2). Если здесь down, проблема может быть в несовпадении инкапсуляции или отсутствии тактовой частоты (clock rate) на последовательных каналах.

    > Если интерфейс находится в состоянии up/down или down/down, маршруты через него работать не будут.

    Инструмент №2: Ping (ICMP)

    Утилита ping использует протокол ICMP (Internet Control Message Protocol) для отправки эхо-запросов. Это основной инструмент проверки связности.

    Когда вы запускаете пинг на оборудовании Cisco, вы видите строку символов. Каждый символ имеет значение:

    * ! (Восклицательный знак): Успех. Ответ получен. * . (Точка): Тайм-аут. Запрос отправлен, но ответ не пришел в течение 2 секунд. Это значит, что пакет либо потерялся по дороге туда, либо потерялся по дороге обратно. * U (Unreachable): Недостижимо. Маршрутизатор по пути сообщил нам, что не знает, куда отправить пакет дальше (нет маршрута).

    Расширенный Ping (Extended Ping)

    Частая ошибка новичков: вы пингуете удаленную сеть с роутера R1, и пинг проходит. Но пользователи за R1 жалуются, что доступа нет. Почему?

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

    Чтобы проверить путь от лица пользователей, используйте расширенный пинг, указывая адрес источника (Source IP):

    Инструмент №3: Traceroute

    Если ping говорит «связи нет», то traceroute говорит «где именно она оборвалась». Эта утилита показывает каждый маршрутизатор (хоп) на пути к цели.

    Принцип работы основан на поле TTL (Time To Live) в заголовке IP-пакета. Каждый маршрутизатор уменьшает TTL на единицу.

    Формула изменения TTL:

    Где — новое значение времени жизни пакета после обработки маршрутизатором, — значение при поступлении на маршрутизатор, а — декремент (уменьшение) на каждом хопе.

    Когда TTL достигает 0, маршрутизатор уничтожает пакет и отправляет отправителю сообщение «Time Exceeded». Traceroute специально отправляет пакеты с TTL=1, потом TTL=2, TTL=3 и так далее, составляя карту сети.

    Пример вывода:

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

    Анализ таблицы маршрутизации: Типичные ошибки

    Теперь перейдем к самому интересному — логическим ошибкам в настройке статики. Команда show ip route — ваш главный друг.

    [VISUALIZATION: Схема сети из трех маршрутизаторов R1, R2 и R3, соединенных последовательно. R1 подключен к R2, R2 подключен к R3. Над R1 нарисовано облачко с мыслями