NetLab Academy

Сетевые лаборатории в браузере

Войти Начать бесплатно

Теория: Статическая маршрутизация

Ручные маршруты, маршрут по умолчанию, административная дистанция и плавающие статические маршруты. Прочитайте материал, а затем пройдите тест — следующий пункт курса откроется после верных ответов.

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

Когда пакету нужно попасть в сеть, не подключённую напрямую к роутеру, роутер смотрит в свою таблицу маршрутизации и ищет наиболее точное совпадение подсети назначения — это называется 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-адрес следующего узла (... 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 всё может быть абсолютно корректно.

Плавающие статические маршруты (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-наставник, который видит ваши конфиги и ведёт к решению, не выдавая готовое.

Начать бесплатно → бета открыта, доступ бесплатный