Статическая маршрутизация между VLAN и подсетями: рабочие схемы, таблицы маршрутов и чек-лист проверки | AdminWiki

Статическая маршрутизация между VLAN и подсетями: рабочие схемы, таблицы маршрутов и чек-лист проверки

20 сентября 2026 13 мин. чтения
Содержание статьи

Когда нужна статическая маршрутизация между VLAN и подсетями

Статическая маршрутизация между VLAN подходит небольшим офисным сетям: 3-10 VLAN, до 200 хостов, одна точка маршрутизации, предсказуемая топология. В этих условиях OSPF и BGP добавляют служебный трафик и усложняют разбор инцидентов, а выигрыша не дают.

Рабочих схем две. «Маршрутизатор на палочке» (router on a stick): один физический интерфейс роутера работает trunk-портом, для каждого VLAN создан sub-интерфейс с тегом 802.1Q. L3-коммутатор: держит SVI для каждого VLAN и маршрутизирует трафик между сегментами аппаратно.

Ниже пошаговые конфигурации для обеих схем, эталонные таблицы маршрутов для роутера, коммутатора и L3-коммутатора, разбор чёрных дыр из-за маршрута на одном устройстве и чек-лист проверки связности по уровням L1, L2, L3.

Чем статическая маршрутизация отличается от динамической в контексте VLAN

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

Порог применимости: 3-10 VLAN и одна точка маршрутизации. В этом диапазоне статика проще и надёжнее динамических протоколов. Переходить на OSPF стоит, когда сегментов больше десяти, появляется второй маршрутизатор для резервирования, топология меняется чаще раза в квартал или нужна автоматическая перестройка при отказе линка.

Цена решения статикой видна на простом примере. Добавили VLAN 40 с подсетью 192.168.40.0/24. Маршрут к ней придётся прописать вручную на каждом устройстве, которому нужен доступ в этот сегмент. При динамической маршрутизации анонс ушёл бы сам.

Что понадобится перед настройкой: адресация, шлюзы, план VLAN

План адресации для примеров этой статьи:

VLAN IDПодсетьШлюзНазначение
VLAN 10192.168.10.0/24192.168.10.1Пользователи
VLAN 20192.168.20.0/24192.168.20.1Серверы
VLAN 30192.168.30.0/24192.168.30.1Management

Что подготовить до первой команды:

  • VLAN ID и подсети для каждого сегмента;
  • адрес шлюза по умолчанию для каждого VLAN;
  • CLI-доступ к роутеру и коммутатору;
  • свободный порт на обоих устройствах под trunk.

Ключевое правило: шлюз по умолчанию на хостах должен указывать на интерфейс маршрутизации, то есть на sub-интерфейс роутера или SVI коммутатора. Ставить шлюзом физический access-порт коммутатора нельзя: L2-порт не маршрутизирует и не отвечает на ARP за другой сегмент.

Схема 1: «маршрутизатор на палочке» - конфигурация и таблица маршрутов

Топология: роутер соединён с коммутатором одним физическим линком в режиме trunk. На роутере для каждого VLAN создаётся sub-интерфейс с инкапсуляцией 802.1Q. Хосты подключены к access-портам коммутатора в своих VLAN и отправляют весь трафик за пределы сегмента на IP своего sub-интерфейса.

Настройка sub-интерфейсов на роутере (Cisco IOS, Linux, MikroTik)

Cisco IOS:

interface GigabitEthernet0/0.10
 description VLAN10_USERS
 encapsulation dot1Q 10
 ip address 192.168.10.1 255.255.255.0
!
interface GigabitEthernet0/0.20
 description VLAN20_SERVERS
 encapsulation dot1Q 20
 ip address 192.168.20.1 255.255.255.0
!
interface GigabitEthernet0/0.30
 description VLAN30_MGMT
 encapsulation dot1Q 30
 ip address 192.168.30.1 255.255.255.0

Linux (vlan-интерфейсы):

ip link add link eth0 name eth0.10 type vlan id 10
ip link add link eth0 name eth0.20 type vlan id 20
ip link add link eth0 name eth0.30 type vlan id 30
ip addr add 192.168.10.1/24 dev eth0.10
ip addr add 192.168.20.1/24 dev eth0.20
ip addr add 192.168.30.1/24 dev eth0.30
ip link set eth0.10 up
ip link set eth0.20 up
ip link set eth0.30 up
sysctl -w net.ipv4.ip_forward=1

MikroTik:

/interface vlan add name=vlan10 vlan-id=10 interface=ether1
/interface vlan add name=vlan20 vlan-id=20 interface=ether1
/interface vlan add name=vlan30 vlan-id=30 interface=ether1
/ip address add address=192.168.10.1/24 interface=vlan10
/ip address add address=192.168.20.1/24 interface=vlan20
/ip address add address=192.168.30.1/24 interface=vlan30
/ip settings set ip-forward=yes

Для Linux не забудьте включить форвардинг: без net.ipv4.ip_forward=1 ядро не станет передавать пакеты между vlan-интерфейсами. Расширенные сценарии маршрутизации между VLAN на Linux с правилами iptables и nftables разобраны в отдельном руководстве.

Native VLAN на trunk-порту коммутатора должен совпадать с настройкой нетегированного трафика на роутере. По умолчанию native VLAN равен 1. Если на роутере нет sub-интерфейса без тега, оставьте native VLAN 1 и не передавайте по нему пользовательские данные. На физическом интерфейсе роутера не должно быть IP-адреса, когда он несёт только тегированный трафик: иначе роутер получит адрес в native VLAN и начнёт отвечать на ARP в нём.

Настройка trunk-порта на коммутаторе

Сторона коммутатора в сторону роутера:

interface GigabitEthernet0/1
 description TO_ROUTER
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
 switchport trunk native vlan 1

Access-порты для хостов настраиваются в своих VLAN:

interface GigabitEthernet0/2
 description PC_VLAN10
 switchport mode access
 switchport access vlan 10

Native VLAN mismatch - частая причина потери management-трафика. Проверить согласованность тега с обеих сторон trunk помогает:

show interfaces trunk

Вывод показывает режим (trunking), список allowed VLAN и native VLAN. Если native VLAN на двух концах не совпадает, нетегированные кадры уходят в другой сегмент, и коммутатор перестаёт отвечать по управляющему адресу.

Таблица маршрутов роутера и коммутатора: что должно быть

После поднятия sub-интерфейсов на роутере появляются connected-маршруты. Default route добавляется вручную:

DestinationТипInterfaceNext-hop
192.168.10.0/24connectedGi0/0.10-
192.168.20.0/24connectedGi0/0.20-
192.168.30.0/24connectedGi0/0.30-
0.0.0.0/0staticGi0/0ISP next-hop

Коммутатор в этой схеме не маршрутизирует. Ему нужен только шлюз для собственного управления:

DestinationТипNext-hop
0.0.0.0/0static192.168.30.1

Здесь 192.168.30.1 - адрес роутера в management VLAN. Коммутатор не знает о других подсетях: весь трафик за пределами своей management-подсети он отправляет на роутер, а решение о дальнейшем пути принимает роутер.

Проверить таблицу маршрутов на любой из платформ:

show ip route
route -n
ip route show

Пропускная способность trunk-линка задаёт потолок для всего межсегментного трафика: все VLAN делят один физический порт. Типичные параметры: MTU 1500, скорость 1 или 10 Гбит/с, native VLAN 1. При росте трафика между VLAN этот линк становится узким местом, и тогда переходят к схеме на L3-коммутаторе.

Схема 2: L3-коммутатор - SVI, ip routing и статические маршруты

Топология: L3-коммутатор держит SVI для каждого VLAN, хосты подключены access-портами, шлюзом по умолчанию для хостов служит IP SVI. Маршрутизация между VLAN идёт внутри коммутатора, во внешнюю сеть - через отдельный роутер.

Создание SVI и включение ip routing

Базовая конфигурация L3-коммутатора Cisco:

ip routing
!
vlan 10
vlan 20
vlan 30
!
interface Vlan10
 description VLAN10_USERS
 ip address 192.168.10.1 255.255.255.0
 no shutdown
!
interface Vlan20
 description VLAN20_SERVERS
 ip address 192.168.20.1 255.255.255.0
!
interface Vlan30
 description VLAN30_MGMT
 ip address 192.168.30.1 255.255.255.0

SVI поднимается при двух условиях: VLAN существует в базе коммутатора, и хотя бы один порт в этом VLAN находится в состоянии up. Если SVI висит в down, маршрутизация между VLAN не работает, даже когда IP-адрес назначен. Проверка:

show ip interface brief
show ip route connected

Разницу между SVI и routed port и готовые конфигурации для Inter-VLAN на Cisco Catalyst разбирает руководство по SVI и routed ports.

Статические маршруты на L3-коммутаторе и внешнем роутере

На L3-коммутаторе нужен default route в сторону внешнего роутера:

ip route 0.0.0.0 0.0.0.0 10.0.0.2

Адрес 10.0.0.2 - интерфейс внешнего роутера в транзитной подсети 10.0.0.0/30. На внешнем роутере прописываются обратные маршруты к каждой внутренней подсети:

ip route 192.168.10.0 255.255.255.0 10.0.0.1
ip route 192.168.20.0 255.255.255.0 10.0.0.1
ip route 192.168.30.0 255.255.255.0 10.0.0.1

Адрес 10.0.0.1 - интерфейс L3-коммутатора в транзитной подсети (routed port). Без обратного маршрута на роутере ответный трафик из внешней сети до внутренних VLAN не вернётся: пакет дойдёт до роутера и будет отброшен. Это и есть чёрная дыра.

Таблица маршрутов L3-коммутатора: эталон

PrefixТипInterfaceNext-hop
192.168.10.0/24connectedVlan10-
192.168.20.0/24connectedVlan20-
192.168.30.0/24connectedVlan30-
0.0.0.0/0static (S*)-10.0.0.2

Connected-маршруты появляются автоматически при поднятии SVI. Статический default route добавляется вручную. В формате Cisco IOS этот маршрут помечается звёздочкой: S* 0.0.0.0/0 [1/0] via 10.0.0.2.

Почему маршрут на одном устройстве приводит к чёрным дырам

Маршрут должен существовать на обоих концах пути. Когда он настроен только на одном устройстве, обратный трафик не находит путь и отбрасывается. Классический случай: на L3-коммутаторе есть default route в сторону роутера, а на роутере нет маршрута к 192.168.20.0/24.

Что происходит с пакетом из внешней сети в хост VLAN 20. Пакет доходит до роутера. Роутер ищет в таблице маршрутизации запись для 192.168.20.0/24, не находит её и отправляет пакет по своему default route обратно в сторону интернета либо отбрасывает с ICMP unreachable. Хост в VLAN 20 ответа не получает.

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

Как диагностировать чёрную дыру: ping, traceroute, show ip route

Порядок проверки:

  1. ping с хоста в VLAN 20 до внешнего адреса. Если проходит, значит исходящий путь и NAT работают.
  2. ping с внешнего адреса до хоста в VLAN 20. Если не проходит, проблема в обратном пути.
  3. traceroute с внешнего адреса. Последний хоп показывает, где теряется трафик.
  4. show ip route на роутере. Отсутствие записи для 192.168.20.0/24 подтверждает причину.

Решение: добавить статический маршрут на роутере. Дополнительные команды для Linux: ip route get 192.168.20.5 покажет, какой маршрут будет выбран, а tcpdump -i any icmp позволит увидеть, доходят ли ICMP-пакеты до узла.

Асимметричная маршрутизация и stateful firewall

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

Пример: два маршрута равной стоимости к одной подсети на разных устройствах, и запрос уходит через одно, а ответ приходит через другое. В небольшой офисной сети это встречается редко, но при резервировании каналов и нескольких uplink становится частой проблемой. Решение: оставить один путь, настроить session persistence или осознанно разрешить асимметрию. Механику и готовые конфигурации для диагностики разбирает материал по асимметричной маршрутизации.

Как читать таблицу маршрутов и находить ошибки

Формат вывода show ip route: код маршрута, префикс и маска, next-hop, интерфейс, административная дистанция (AD) и метрика. Код показывает, откуда взялся маршрут, а AD определяет приоритет между источниками при одинаковой длине префикса.

Коды маршрутов и что они значат

КодЗначениеОткуда берётся
CconnectedПодсеть на интерфейсе
LlocalАдрес самого интерфейса (/32)
SstaticНастроен вручную
S*default staticМаршрут по умолчанию, 0.0.0.0/0
OOSPFПолучен по OSPF (для сравнения)

Connected-маршруты имеют приоритет над static при равной длине префикса: AD connected равен 0, AD static по умолчанию 1. Если к 192.168.20.0/24 есть и connected, и static запись, трафик пойдёт по connected.

Longest prefix match на практике

При выборе маршрута побеждает самый длинный префикс. Есть default route 0.0.0.0/0 и static route 192.168.20.0/24. Пакет к 192.168.20.5 уйдёт по /24, потому что этот префикс длиннее. Если static route указывает на неверный next-hop, трафик уйдёт в никуда, хотя адрес получателя существует.

Проверить, какой маршрут реально выбран:

show ip route 192.168.20.5
ip route get 192.168.20.5
route print

Правило простое: перед поиском ошибки в конфигурации проверяйте, какой маршрут выбрала система для конкретного адреса. Основы выбора пути и работу таблиц маршрутизации на Cisco, Linux и L3-коммутаторах разбирает руководство по маршрутизации IP-пакетов. Когда в Linux нужно несколько таблиц маршрутизации под разные интерфейсы, помогает профиль маршрутизации для нескольких интерфейсов.

Чек-лист проверки связности между VLAN и подсетями

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

  1. Физические линки. Cisco: show interfaces status. Linux: ip link show. Норма: интерфейсы в состоянии up, ошибок нет.
  2. Trunk-порт. Cisco: show interfaces trunk. Норма: режим trunking, в allowed VLAN входят 10, 20, 30, native VLAN совпадает с обеих сторон.
  3. SVI и sub-интерфейсы. show ip interface brief. Норма: каждый интерфейс в состоянии up/up.
  4. Таблицы маршрутов на всех устройствах. show ip route, ip route show, route -n. Норма: connected-маршруты для каждого VLAN, default route в сторону нужного next-hop.
  5. Шлюз по умолчанию на хостах. Windows: ipconfig. Linux: ip route. Норма: шлюз равен IP SVI или sub-интерфейса в этом VLAN.
  6. ARP. Cisco: show arp. Linux: arp -a или ip neigh. Норма: записи для адресов шлюзов, без дублей.
  7. ping между VLAN и до внешнего адреса. Норма: проходит в обе стороны.
  8. traceroute в обе стороны. Норма: полный путь без таймаутов на промежуточных хопах.
  9. ACL и firewall. Cisco: show access-lists. Linux: iptables -L -v -n или nft list ruleset. Норма: нет правил, блокирующих нужные подсети.
  10. MAC-таблица коммутатора. show mac address-table. Норма: MAC-адреса хостов видны в правильных VLAN.

Проверка L2: trunk, native VLAN, MAC-таблица

Команды L2: show interfaces trunk, show vlan brief, show mac address-table. Норма для trunk: статус trunking, согласованный native VLAN, allowed VLAN включает все рабочие сегменты. Признак проблемы на L2: MAC-адреса хостов не появляются в MAC-таблице в нужном VLAN, хотя порт в состоянии up.

Проверка L3: маршруты, ARP, ping, traceroute

Команды L3: show ip route, show arp, ping, traceroute. Норма: connected-маршруты для всех VLAN, static default route, ARP-записи для шлюзов. Признак проблемы на L3: ping идёт в одну сторону и не идёт в обратную, traceroute обрывается на роутере. Результаты удобно фиксировать в таблице: узел, команда, ожидаемый результат, фактический результат.

Типичные ошибки и как их избежать

Большинство отказов связи между VLAN сводится к семи причинам. По каждой ниже есть симптом и решение.

  1. Маршрут только на одном устройстве. Симптом: односторонний ping, traceroute обрывается. Решение: добавить обратный static route.
  2. Неверная маска подсети. Симптом: часть адресов недоступна, трафик уходит не туда. Решение: сверить маску на интерфейсе и в маршрутах.
  3. Не включён ip routing на L3-коммутаторе. Симптом: SVI есть, но трафик между VLAN не ходит. Решение: выполнить ip routing.
  4. Native VLAN mismatch на trunk. Симптом: потеря management-трафика, коммутатор недоступен по сети. Решение: согласовать native VLAN на обоих концах.
  5. Шлюз на хосте указывает на физический порт коммутатора. Симптом: хост видит свою подсеть, но не выходит за её пределы. Решение: указать шлюзом SVI или sub-интерфейс.
  6. ACL блокирует трафик между VLAN. Симптом: ping не проходит только между конкретными подсетями. Решение: проверить show access-lists и правила firewall.
  7. Дублирование подсетей на разных интерфейсах. Симптом: часть трафика уходит не туда, нестабильная связь. Решение: сделать план адресации уникальным для каждого сегмента.

Симптом -> причина -> решение: таблица быстрой диагностики

СимптомПричинаРешение
ping не проходит в одну сторонуНет обратного маршрутаДобавить static route на втором устройстве
SVI в состоянии downVLAN не создан или порт не в этом VLANСоздать VLAN, проверить access-порт
Хост не получает IP по DHCPНет DHCP relay через сегментНастроить ip helper-address на SVI
Трафик между VLAN не идётНе включён ip routingВыполнить ip routing на L3-коммутаторе
Потерян доступ к управлению коммутаторомNative VLAN mismatchСогласовать native VLAN на trunk

DHCP в схеме с несколькими VLAN требует отдельного шага: сервер в одном сегменте не увидит широковещательные запросы из другого. На SVI или sub-интерфейсе нужен ip helper-address с адресом DHCP-сервера.

Что выбрать: «маршрутизатор на палочке» или L3-коммутатор

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

L3-коммутатор маршрутизирует между VLAN аппаратно и не ограничивает межсегментный трафик одним физическим линком. «Маршрутизатор на палочке» упирается в пропускную способность trunk-порта, зато работает на уже имеющемся оборудовании и проще в настройке для двух-трёх VLAN.

Сравнительная таблица топологий

Критерий«Маршрутизатор на палочке»L3-коммутатор (SVI)
Пропускная способностьОграничена одним trunk-линком, все VLAN делят его полосуАппаратная маршрутизация, каждый порт работает на своей скорости
СтоимостьДешевле, если роутер уже естьВыше, нужен коммутатор с поддержкой L3
МасштабируемостьПадает при росте числа VLAN и трафикаРастёт вместе с числом портов и VLAN
ОтказоустойчивостьЕдиная точка отказа: роутер и trunk-линкВыше, при наличии резервных коммутаторов
Сложность настройкиПроще для 2-3 VLANТребует понимания SVI и ip routing
Типичный сценарийМалый офис, до 3 VLAN, есть свободный роутерОфис от 4 VLAN, рост межсегментного трафика

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

Поделиться:
Сохранить гайд? В закладки браузера