Что такое уровни маршрутизации и зачем их различать
Уровни маршрутизации - это способ описать, на каком слое сетевого стека принимается решение о передаче трафика. L2 работает с MAC-адресами внутри одного сегмента, L3 - с IP-адресами между сетями, L4 - с портами и сессиями TCP или UDP, L7 - с содержимым прикладных протоколов: путями URL, именами хостов, заголовками HTTP.
Модель OSI делит сетевой обмен на семь уровней. К маршрутизации прямо относятся четыре из них: канальный L2, сетевой L3, транспортный L4 и прикладной L7. Физический L1 передаёт биты по среде и в разборе маршрутизации обычно не участвует. Сеансовый L5 и уровень представления L6 в современных стеках редко выделяют в отдельные механизмы передачи и относят к прикладной логике. Инкапсуляция данных по уровням и диагностика сбоев разобраны в статье про модель OSI и сетевые протоколы.
Различать уровни нужно из-за простого свойства: инструмент работает только на своём уровне и видит только свои поля. Коммутатор не читает IP-адрес, L4-балансировщик не разбирает путь URL, а прокси на L7 не поймает трафик, который не следует настройкам операционной системы. Ошибка в выборе уровня приводит к тому, что трафик не попадает туда, куда вы его направляете.
Удобная аналогия: L2 - движение внутри одного здания, L3 - выбор дороги между городами, L4 - номер квартиры, L7 - содержимое письма. Чем выше уровень, тем больше деталей видит устройство и тем дороже обработка.
Краткая шпаргалка: соответствие уровней OSI и маршрутизации
Таблица ниже связывает уровни модели OSI с задачами маршрутизации, адресацией и типовыми инструментами.
| Уровень OSI | Название | Задача в маршрутизации | Адресация | Примеры |
|---|---|---|---|---|
| L1 | Физический | Передача битов по среде, в маршрутизации не рассматривается | Нет | Кабель, разъём, оптический модуль |
| L2 | Канальный | Коммутация кадров внутри сегмента или VLAN | MAC-адрес | Коммутатор, Ethernet, VLAN 802.1Q, STP |
| L3 | Сетевой | Выбор пути между подсетями | IP-адрес | Маршрутизатор, L3-коммутатор, OSPF, BGP |
| L4 | Транспортный | Распределение и перенаправление по портам и сессиям | IP и порт, набор 5-tuple | HAProxy в TCP-режиме, IPVS, LVS |
| L5, L6 | Сеансовый и представления | Отдельно в маршрутизации не выделяют | Нет | Сессии и шифрование как часть L7-логики |
| L7 | Прикладной | Маршрутизация по URL, заголовкам, именам хостов | HTTP-хост, путь, заголовки | Nginx, HAProxy, Traefik, Ingress-контроллер |
L2: коммутация на канальном уровне
Канальный уровень работает с кадрами и MAC-адресами. Устройство читает MAC-адрес получателя в заголовке кадра и ищет его в таблице коммутации. Решение принимается без обращения к IP-адресам, поэтому L2 ничего не знает о подсетях.
Устройства: коммутатор (switch) и мост (bridge). Технологии и протоколы: Ethernet по стандарту IEEE 802.3, VLAN по стандарту 802.1Q, протокол STP (IEEE 802.1D) для защиты от петель.
Пример: коммутатор доступа с несколькими VLAN. Кадр из порта с тегом VLAN 10 проверяется по таблице MAC, и коммутатор отправляет его только в тот порт, где зарегистрирован нужный MAC. Если адрес ещё неизвестен, кадр уходит во все порты этого VLAN, кроме исходного. Так работает flooding при первом обращении к получателю.
Граница возможностей: L2 передаёт кадры внутри одной подсети или VLAN. Для трафика между разными IP-сетями нужен уровень L3.
Практический сценарий: VLAN для изоляции трафика. Гостевую сеть, серверный сегмент и сеть управления оборудованием разносят по разным VLAN. Это уменьшает широковещательный домен и не даёт устройствам одного сегмента видеть кадры другого без маршрутизации.
L3: маршрутизация на сетевом уровне
Сетевой уровень работает с пакетами и IP-адресами. Каждый пакет несёт адрес источника и адрес назначения, а маршрутизатор выбирает исходящий интерфейс по таблице маршрутизации. Побеждает маршрут с самым длинным совпадающим префиксом (longest prefix match), при равных префиксах сравниваются метрики.
Устройства: маршрутизатор, L3-коммутатор, сервер маршрутизации на базе обычной операционной системы. Протоколы: IP для адресации и пересылки, ICMP для служебных сообщений, OSPF и BGP для обмена маршрутной информацией между узлами. Как устроены таблицы маршрутов и чем отличаются статическая и динамическая маршрутизация, подробно разобрано в статье про систему маршрутизации.
Пример: маршрутизатор с двумя интерфейсами, первый смотрит в локальную сеть 192.168.10.0/24, второй в сторону провайдера. Пакет к адресу 192.168.10.25 уйдёт в локальный интерфейс по прямому маршруту, а пакет к 8.8.8.8 пойдёт по маршруту по умолчанию через шлюз провайдера.
Пример L3-маршрутизации: режим TUN в Xray и Sing-box
Режим TUN в клиентах Xray и Sing-box работает на третьем (сетевом) уровне модели OSI и превращает клиент в системный VPN-шлюз (источник).
Как это выглядит в системе: создаётся виртуальный сетевой адаптер (интерфейс в Linux или драйвер Wintun в Windows), а клиент правит таблицу маршрутизации, добавляя запись вида default dev happ-xray metric 1. Весь исходящий IP-трафик после этого уходит в сетевое ядро клиента. Охват полный: 100% трафика системы, включая браузеры, фоновые демоны, консоль, Docker, игры, DNS-запросы и системные службы.
Требования и цена решения: нужны права суперпользователя, потому что виртуальный интерфейс инициализирует фоновый сервис с правами root. Добавляется небольшой оверхед CPU на инкапсуляцию и обработку сетевых пакетов на лету.
Вариантов TUN несколько: нативный от команды Project X, полностью интегрированный со связкой VLESS + Reality, высокопроизводительное сетевое ядро на Go с собственным драйвером TUN и легковесный модуль на Rust, который перехватывает L3 IP-пакеты и транслирует их в локальный SOCKS5-порт (источник).
Это чистый L3-подход. Клиент не разбирает прикладные протоколы, он забирает все IP-пакеты без исключения, поэтому в туннель попадают и те приложения, которые о прокси ничего не знают.
L4: балансировка на транспортном уровне
Транспортный уровень работает с сессиями TCP и UDP. Балансировщик L4 принимает соединение и выбирает backend по набору из пяти полей: IP-адрес и порт источника, IP-адрес и порт назначения, номер протокола. Этот набор называют 5-tuple, и по нему же строят хеширование, чтобы клиент стабильно попадал на один и тот же сервер.
Инструменты: HAProxy в режиме TCP, IPVS в ядре Linux, LVS. Балансировщик не разбирает содержимое пакета, поэтому не зависит от прикладного протокола и держит высокую пропускную способность при низких задержках.
Пример: пул из трёх серверов MySQL. Балансировщик слушает порт 3306 и раскидывает входящие TCP-соединения по бэкендам. Клиент не знает, к какой реплике попадёт, а балансировщик не видит, какие SQL-запросы идут внутри соединения.
Ограничения: маршрутизация по URL, имени хоста или заголовкам на L4 невозможна. Полезную нагрузку зашифрованного TLS-трафика без терминации тоже не разобрать. Для этого нужен уровень L7. Основы портов, TCP и UDP разобраны в материале про стек TCP/IP.
L7: маршрутизация на прикладном уровне
Прикладной уровень разбирает содержимое запроса: метод HTTP, путь, заголовки, имя хоста, версию протокола, имя gRPC-сервиса или DNS-запись. Решение о backend принимается по этим данным, а не по IP-адресу и порту.
Инструменты: reverse proxy и API Gateway, Ingress-контроллеры в Kubernetes, прокси сервисных сетей. Примеры ПО: Nginx, HAProxy, Traefik. Сравнение этих трёх решений по производительности, конфигурации и поддержке HTTP/3 и gRPC собрано в статье про Nginx, HAProxy и Traefik.
Пример правила: запросы с префиксом /api/v1 уходят на сервис API, /static отдаёт сервер статики, остальные идут на фронтенд. Такое разделение невозможно на L4, потому что балансировщик там видит только TCP-соединение.
Дополнительные возможности L7: терминация TLS, канареечные релизы по весу, маршрутизация по cookie или user-agent, ретраи и таймауты на уровне HTTP, ограничение частоты запросов.
Пример L7-маршрутизации: System Proxy в Xray и Sing-box
Режим System Proxy у Xray и Sing-box работает на прикладном уровне. Клиент запускает на локальном хосте порты прослушивания (обычно HTTP), затем через системный API рабочего окружения (Windows Settings, GNOME, KDE) указывает эти порты как системный прокси по умолчанию (источник). Права суперпользователя не требуются, сетевые драйверы не устанавливаются, нагрузка на CPU минимальна, потому что трафик не упаковывается в виртуальные сетевые пакеты.
Охват зависит от приложения. Прокси используют программы, которые читают настройки операционной системы: веб-браузеры (Chrome, Firefox), Telegram, часть десктопных клиентов. Не используют консольные утилиты, Docker-контейнеры, базы данных, IDE, торрент-клиенты, сетевые игры и ICMP-запросы. Чтобы терминал пошёл через прокси, переменные среды приходится экспортировать вручную.
Известная проблема: в ряде клиентов, например Happ на Linux, периодически возникает ошибка формирования поля в GNOME или KDE. Локальные адреса подсети из-за неё по ошибке направляются в прокси, и доступ к домашней инфраструктуре нарушается. Перед включением режима проверьте, что адреса вашей локальной сети исключены из проксирования.
Ограничение исходных данных: описание смешанного режима Mixed Mode, который пытается совместить оба подхода, в разобранном материале обрывается, поэтому его поведение здесь не приводится.
Сравнение уровней: что выбрать для конкретной задачи
Критерии выбора сводятся к четырём параметрам: какое поле использует устройство для решения, какой трафик оно охватывает, какие права нужны и сколько ресурсов CPU расходует обработка.
| Критерий | L2 | L3 | L4 | L7 |
|---|---|---|---|---|
| Поле решения | MAC-адрес | IP-адрес | Порты и протокол | Данные приложения |
| Охват трафика | Кадры внутри VLAN | Все IP-пакеты | Сессии TCP и UDP | Только разобранные протоколы |
| Права | Не требуются | Для правки таблиц нужен root | Обычно не требуются | Не требуются |
| Оверхед CPU | Минимальный | Есть при туннелях и инкапсуляции | Низкий | Выше за счёт разбора запросов |
| Гибкость правил | Только по MAC и VLAN | По IP и префиксам | По адресам и портам | По URL, хостам, заголовкам |
| Типовая задача | Изоляция сегментов | Связь между подсетями, VPN | Балансировка TCP-сервисов | HTTP-маршрутизация, API Gateway |
Примеры выбора. Для изоляции гостевого трафика хватит L2 с VLAN. Для связи между подсетями и для VPN-шлюза нужен L3. Для распределения нагрузки на высоконагруженный TCP-сервис без разбора протокола подойдёт L4. Для маршрутизации HTTP по путям и доменам нужен L7.
В реальных системах уровни комбинируются. В Kubernetes pod-сеть строится на L3: каждый под получает IP-адрес. Сервис Service распределяет трафик на L4 через kube-proxy и IPVS. Ingress работает на L7 и маршрутизирует HTTP-запросы по хостам и путям. Ни один уровень не заменяет остальные.
Для подбора оборудования под корпоративную сеть полезно сравнение платформ маршрутизации по параметрам производительности и поддержке протоколов в отдельной статье про маршрутизаторы в корпоративной сети.
Типичные ошибки и ограничения при работе с уровнями маршрутизации
- Ожидание, что коммутатор L2 передаст трафик между подсетями. Без маршрутизации на L3 разные IP-сети остаются изолированными.
- Использование L7-балансировщика для не-HTTP трафика. Сырые TCP-соединения, например к MySQL или Redis, распределяются на L4, потому что L7-правила опираются на разбор прикладного протокола.
- Запуск TUN без прав суперпользователя. Виртуальный интерфейс инициализирует фоновый сервис с правами root, без привилегий режим не поднимется.
- Локальные подсети в системном прокси. Ошибка формирования поля в GNOME или KDE у Happ на Linux отправляет адреса локальной сети в прокси и ломает доступ к внутренним сервисам.
- Недооценка оверхеда CPU при L3-туннелях. Инкапсуляция и разбор пакетов на лету расходуют ресурсы, на слабом железе это заметно при высокой нагрузке.
- Проверка доступности только через ICMP. В режиме System Proxy ICMP-запросы не идут через прокси, поэтому ping отвечает, а приложение доступа не имеет. Проверяйте тем же протоколом, который использует сервис.
- Правки таблицы маршрутизации без сохранения исходного состояния. Перед изменениями сохраните вывод ip route и ip rule, чтобы вернуть сеть в рабочее состояние.
Что учесть по актуальности: уровни L2, L4 и L7 здесь описаны по общепринятым определениям модели OSI, а поведение конкретного ПО отличается между версиями. Перед настройкой сверяйтесь с документацией своей версии клиента или балансировщика.
Заключение: как уровни маршрутизации помогают в повседневной работе
L2 отвечает за кадры внутри сегмента, L3 за путь между сетями по IP-адресам, L4 за распределение сессий по портам, L7 за решения по данным приложения. Понимание этой границы убирает большую часть ошибок: вы сразу видите, какой инструмент поймает нужный трафик и какие права для этого понадобятся.
Практический вывод по разобранным примерам: TUN у Xray и Sing-box перехватывает весь IP-трафик системы на L3 и требует root, а System Proxy работает на L7, обходится без привилегий, но охватывает только приложения, читающие настройки операционной системы. Docker, консоль и ICMP остаются вне прокси.
Дальше логично перейти к конкретным настройкам из кластера: сравнить Nginx, HAProxy и Traefik для L7-маршрутизации, разобрать выбор маршрутизаторов для L3 и посмотреть на таблицы маршрутов в Linux. Шпаргалку с уровнями из начала статьи удобно держать под рукой при проектировании сети и разборе инцидентов.