Теория: Статическая маршрутизация
Ручные маршруты, маршрут по умолчанию, административная дистанция и плавающие статические маршруты. Прочитайте материал, а затем пройдите тест — следующий пункт курса откроется после верных ответов.
Что такое маршрутизация
Когда пакету нужно попасть в сеть, не подключённую напрямую к роутеру, роутер смотрит в свою таблицу маршрутизации и ищет наиболее точное совпадение подсети назначения — это называется longest prefix match (правило самого длинного совпадающего префикса). Например, если в таблице есть и маршрут
10.0.0.0/8, и 10.1.1.0/24, а пакет летит на 10.1.1.5 — победит более точный /24, хотя оба маршрута технически покрывают этот адрес. Это правило работает всегда, независимо от того, как маршрут попал в таблицу — вручную или через динамический протокол. Таблица маршрутизации заполняется либо вручную (статические маршруты, тема этого урока), либо динамически (OSPF, BGP и другие протоколы, разобранные дальше в этом курсе), и оба способа спокойно живут в одной таблице одновременно.Правило одно и то же независимо от того, откуда маршрут взялся —
прописан руками или принесён OSPF. Порядок строк в таблице не значит ничего: роутер
сравнивает длину префикса, а не то, что записано выше.
Статический маршрут
Статический маршрут — запись, которую администратор прописывает вручную: «чтобы попасть в подсеть X, отправляй пакеты через next-hop Y». Типичный синтаксис (Cisco-style):
ip route 192.168.20.0 255.255.255.0 10.0.0.2. Плюс — полный контроль и стопроцентная предсказуемость: маршрут будет вести себя ровно так, как написано, никаких сюрпризов от алгоритмов выбора пути. Минус — никакой автоматической адаптации: если линк до 10.0.0.2 упадёт, маршрут просто перестанет работать и продолжит «висеть» в таблице маршрутизации как будто всё в порядке, пока кто-то не вмешается руками (если заранее не настроена плавающая резервная статика — см. отдельный раздел ниже).Next-hop или выходной интерфейс — в чём разница
Статический маршрут можно указать двумя способами: через IP-адрес следующего узла (
На широковещательных средах (Ethernet) указание только выходного интерфейса без IP next-hop иногда создаёт собственную проблему — роутер должен делать ARP-запрос для каждого адреса назначения, который подходит под этот маршрут, а не один раз для конкретного next-hop, что менее эффективно. Поэтому на Ethernet-линках обычно указывают IP next-hop, а на чисто point-to-point линках (например, serial-линки или туннели, где с другой стороны физически может быть только одно устройство) — выходной интерфейс работает прекрасно и без дополнительных сложностей.
... 10.0.0.2) или через выходной интерфейс (... GigabitEthernet0/1). На первый взгляд кажется, что разница чисто синтаксическая, но на самом деле есть важный нюанс — рекурсивный поиск (recursive lookup). Если маршрут указывает next-hop по IP, роутеру перед отправкой пакета нужно ещё раз заглянуть в таблицу маршрутизации, чтобы понять, через какой именно интерфейс физически достать до этого next-hop — то есть один пакет требует два просмотра таблицы.На широковещательных средах (Ethernet) указание только выходного интерфейса без IP next-hop иногда создаёт собственную проблему — роутер должен делать ARP-запрос для каждого адреса назначения, который подходит под этот маршрут, а не один раз для конкретного next-hop, что менее эффективно. Поэтому на Ethernet-линках обычно указывают IP next-hop, а на чисто point-to-point линках (например, serial-линки или туннели, где с другой стороны физически может быть только одно устройство) — выходной интерфейс работает прекрасно и без дополнительных сложностей.
Маршрут по умолчанию (default route)
Особый статический маршрут
0.0.0.0/0 (он же quad-zero route) покрывает буквально весь возможный диапазон IP-адресов, но с нулевой длиной префикса — поэтому в силу правила longest prefix match он всегда проигрывает любому более точному маршруту и срабатывает только тогда, когда вообще ничего более конкретного не нашлось. Это стандартный способ указать «выход в интернет» на границе сети: внутренние подсети известны точно и описаны конкретными маршрутами, а весь необъятный остальной интернет уходит по маршруту по умолчанию на провайдера. Next-hop маршрута по умолчанию часто называют gateway of last resort — «шлюз последней надежды», и это название отлично передаёт саму суть: туда отправляется всё, для чего не нашлось более точного варианта.Административная дистанция
Если один и тот же маршрут до одной и той же подсети узнан разными способами (например, и статикой, и через OSPF, и через BGP одновременно), роутеру нужно решить, какому источнику верить — это отдельная задача, не связанная с longest prefix match (тот выбирает между разными подсетями, а административная дистанция выбирает между разными источниками одной и той же подсети). Административная дистанция (AD) — мера доверия к источнику: чем меньше число, тем выше приоритет. Полная типичная таблица значений (Cisco-style; на другом оборудовании логика та же): прямо подключённая сеть — 0, статический маршрут — 1, eBGP — 20, OSPF — 110, IS-IS — 115, RIP — 120, EIGRP внешний — 170, iBGP — 200, маршрут неизвестного происхождения — 255 (фактически означает «не использовать вообще»).
Из этой таблицы вытекает практическое следствие, которое регулярно удивляет новичков: статический маршрут (AD=1) побеждает любой динамический протокол по умолчанию. Если кто-то когда-то прописал статику руками для тестирования, а потом настроил полноценный OSPF — OSPF-маршрут до той же подсети просто не попадёт в таблицу маршрутизации, пока забытая статика жива, хотя в конфигурации OSPF всё может быть абсолютно корректно.
Из этой таблицы вытекает практическое следствие, которое регулярно удивляет новичков: статический маршрут (AD=1) побеждает любой динамический протокол по умолчанию. Если кто-то когда-то прописал статику руками для тестирования, а потом настроил полноценный OSPF — OSPF-маршрут до той же подсети просто не попадёт в таблицу маршрутизации, пока забытая статика жива, хотя в конфигурации OSPF всё может быть абсолютно корректно.
Плавающие статические маршруты (floating static)
Если статическому маршруту явно указать AD выше, чем у используемого динамического протокола (например, AD=130 для маршрута, когда основной путь идёт через OSPF с AD=110), он становится резервным (floating static): пока жив основной маршрут от OSPF — таблица маршрутизации использует именно его, а статический маршрут просто ждёт «на скамейке запасных», даже не будучи активным в таблице, и появляется в ней автоматически только если основной маршрут полностью пропадёт (например, OSPF-соседство развалилось из-за отказа линка). Типичный пример конфигурации:
ip route 0.0.0.0 0.0.0.0 203.0.113.1 250 — обычный default route на резервный интернет-канал, но с явно повышенной AD (250), чтобы он включался только при отказе основного провайдера. Это простой и надёжный способ обеспечить резервный путь без сложной настройки протоколов отказоустойчивости.Когда статика лучше, а когда хуже динамики
Статика отлично подходит для маленьких и стабильных сетей (пара роутеров, топология меняется раз в год, а не каждую неделю), для маршрута по умолчанию почти всегда (даже в сетях с полноценным OSPF/BGP внутри, выход к провайдеру часто оформлен именно статикой), и для точечных резервных путей через floating static. Но при росте сети статика катастрофически не масштабируется: каждое изменение топологии требует ручной правки на каждом затронутом роутере отдельно, и в сети из полусотни роутеров одна забытая правка на одном из них — гарантированная головная боль, которую найдут далеко не сразу. Именно для этого придумали динамические протоколы (OSPF, BGP), разобранные дальше в этом курсе — они автоматически пересчитывают маршруты при любом изменении топологии без участия человека.
Асимметричная маршрутизация и забытый обратный маршрут
Частая практическая ловушка: настроили маршрут в одну сторону и проверили ping — не работает, хотя с виду всё верно. Причина почти всегда в том, что маршрутизация работает только в одну сторону: пакет уходит к получателю по только что прописанному маршруту, но у получателя нет обратного маршрута назад к отправителю, и ответ просто не может вернуться. Это особенно легко забыть при настройке статики между двумя площадками — маршрут нужно прописать на обоих концах, а не только там, откуда инициируется соединение. Похожая, но более тонкая ситуация — асимметричная маршрутизация, когда пакет туда и обратно идёт разными путями (это не всегда ошибка само по себе, но может ломать работу некоторых файрволов и систем учёта состояния соединений, которые ожидают видеть оба направления трафика на одном устройстве).
Как проверять / частые ошибки
show ip route static — посмотреть именно статические маршруты (в общем выводе show ip route они помечены буквой S, в отличие от C для прямо подключённых, O для OSPF и так далее). Частые ошибки: next-hop в статическом маршруте сам недостижим, и рекурсивный поиск пути не может разрешиться, из-за чего маршрут вообще не попадает в активную таблицу маршрутизации; забыли обратный маршрут на удалённой стороне (см. предыдущий раздел); перепутали маску подсети, и маршрут покрывает не ту область сети, которая нужна — особенно легко перепутать при ручном написании десятичной маски вместо привычной CIDR-нотации.Команды настройки — шпаргалка
# обычный маршрут: сеть, маска, адрес соседа
ip route 192.168.20.0 255.255.255.0 10.0.0.2
# три аргумента по порядку: сеть назначения,
# её маска в десятичном виде, next-hop — сосед,
# которому отдавать такие пакеты
# маршрут по умолчанию (quad-zero route)
ip route 0.0.0.0 0.0.0.0 203.0.113.1
# сеть и маска из одних нулей совпадают с ЛЮБЫМ
# адресом: одна строка закрывает всё, для чего
# не нашлось маршрута точнее
# резервный маршрут (floating static)
ip route 0.0.0.0 0.0.0.0 203.0.113.5 250
# четвёртое число — административная дистанция.
# Чем больше, тем менее охотно маршрут берут;
# 250 включит его только при отказе основного
# (у обычного статического она равна 1)
# удалить
no ip route 192.168.20.0 255.255.255.0 10.0.0.2
# приставка no отменяет команду; аргументы
# повторяются целиком, иначе непонятно, какой
# именно маршрут убирать
# то же самое на Linux
ip route add 192.168.20.0/24 via 10.0.0.2
# add добавить (del удалить), via задаёт адрес
# соседа. Маска пишется слитно с сетью
# проверка
show ip route static # только прописанное руками: слово static
# отсеивает всё остальное
show ip route # таблица целикомКонтрольные вопросы
Дальше — лабораторная работа «Маршрут своими руками»
Для неё нужен аккаунт: стенд поднимается персонально под вас — свои роутеры, свои конфиги, никто в них не мешает. Регистрация — почта и пароль.
Теория прочитана. Дальше — руками.
Личный стенд из настоящих роутеров разворачивается за секунды. Платформа проверяет не ответы на тесты, а состояние вашей сети: поднялись ли соседства, сошлись ли маршруты, ходит ли ping. Рядом — AI-наставник, который видит ваши конфиги и ведёт к решению, не выдавая готовое.
Начать бесплатно →
бета открыта, доступ бесплатный