Архитектурные решения: когда использовать Router-on-a-Stick и L3 коммутатор
Выбор метода маршрутизации между VLAN определяет производительность, стоимость и сложность управления всей сетевой инфраструктуры. В корпоративных сетях применяют два основных архитектурных решения: маршрутизатор на Linux (Router-on-a-Stick) и аппаратный L3 коммутатор. Правильный выбор зависит от масштаба сети, требований к пропускной способности и уровня контроля над политиками безопасности.
Router-on-a-Stick: гибкость и контроль на Linux
Концепция Router-on-a-Stick предполагает использование одного физического интерфейса сервера Linux для маршрутизации трафика между несколькими VLAN. Этот интерфейс настраивается как trunk-порт, принимающий тегированные фреймы, а маршрутизация осуществляется через логические VLAN-интерфейсы (например, vlan10, vlan20) внутри операционной системы.
Преимущество этого метода - полный контроль над политиками безопасности через инструменты iptables или nftables. Вы можете реализовать сложные правила фильтрации, учитывающие состояние соединений (stateful firewall). Это решение имеет низкую стоимость начальной реализации, так как использует существующий сервер и стандартные сетевые карты.
Основное ограничение - нагрузка на один физический интерфейс и CPU сервера. Все меж-VLAN трафик проходит через один канал и обрабатывается программно, что создает bottleneck для высокоскоростных потоков данных (свыше 1 Gbps). Этот подход оптимален для малых и средних сетей, где трафик между сегментами не превышает сотни мегабит, или для сетей с критически важными требованиями к гибкости межсетевого экрана.
Сценарии применения:
- Сети с менее чем 10 VLAN и умеренным межсегментным трафиком.
- Среда, где требуется сложная логика фильтрации, недоступная на стандартных коммутаторах.
- Промежуточное решение перед переходом на аппаратное оборудование.
L3 коммутатор: производительность и масштабирование в аппаратном решении
Аппаратный коммутатор уровня L3 выполняет маршрутизацию между VLAN внутри собственного чипа (ASIC). Маршрутизация происходит на Switched Virtual Interface (SVI) - логическом интерфейсе, связанном с каждым VLAN.
Этот метод обеспечивает скорость коммутации на уровне оборудования, что означает минимальные задержки и пропускную способность, равную физическим портам (10 Gbps, 40 Gbps). Он масштабируется для крупных корпоративных сетей с десятками VLAN и высокими требованиями к производительности.
Ограничение заключается в менее гибких возможностях фильтрации трафика. ACL (Access Control Lists) на коммутаторах Cisco, MikroTik или Huawei обычно работают на основе статических правил для IP адресов и портов, без глубокого анализа состояния соединений.
Критерии сравнения:
| Критерий | Router-on-a-Stick (Linux) | L3 коммутатор (Cisco/MikroTik) |
|---|---|---|
| Пропускная способность (throughput) | Ограничена CPU и одним интерфейсом (~1 Gbps) | Определяется аппаратными портами (10+ Gbps) |
| Задержка (latency) | Выше, из-за обработки в ОС | Минимальная, аппаратная коммутация |
| Сложность администрирования | Выше, требует знаний Linux и firewall | Специализированный интерфейс команд |
| Гибкость политик безопасности | Высокая (iptables/nftables) | Средняя (стандартные ACL) |
| Стоимость для масштабирования | Низкая начальная, высокая при росте (серверы) | Высокая начальная, но линейная |
Выбор очевиден для высоконагруженных сетей: аппаратный L3 коммутатор. Для сетей, где безопасность и гибкость правил преобладают над скоростью, Linux-сервер остается оптимальным вариантом.
Готовые конфигурации для маршрутизации между VLAN на Linux
Ниже приведены проверенные конфигурации для современных дистрибутивов Linux (RHEL 9, Ubuntu 22.04+). Они используют инструменты iproute2, netplan и systemd-networkd, актуальные в 2026 году.
Настройка VLAN интерфейсов и базовой маршрутизации с iproute2
Это фундаментальные команды для создания логической основы. Предполагается, что физический интерфейс eth0 подключен к trunk-порту коммутатора.
# Создание VLAN интерфейсов
ip link add link eth0 name vlan10 type vlan id 10
ip link add link eth0 name vlan20 type vlan id 20
# Включение интерфейсов
ip link set vlan10 up
ip link set vlan20 up
# Назначение IP адресов
ip addr add 192.168.10.1/24 dev vlan10
ip addr add 192.168.20.1/24 dev vlan20
# Добавление статических маршрутов (обычно не требуется, так как сети локальные)
# Но для маршрутизации через этот сервер в другие сети:
ip route add 10.0.0.0/8 via 192.168.10.100 dev vlan10
Эти команды создают два VLAN интерфейса с идентификаторами 10 и 20, назначают им IP адреса и включают их. Убедитесь, что на подключенном коммутаторе порт для eth0 настроен как trunk и разрешает VLAN 10 и 20.
Статическая конфигурация через netplan или systemd-networkd
Для устойчивости к перезагрузкам используйте статические конфигурации через netplan (Ubuntu) или systemd-networkd (RHEL, общие дистрибутивы).
Пример конфигурации netplan (/etc/netplan/01-vlan.yaml):
network:
version: 2
ethernets:
eth0:
dhcp4: no
vlans:
vlan10:
id: 10
link: eth0
addresses:
- 192.168.10.1/24
vlan20:
id: 20
link: eth0
addresses:
- 192.168.20.1/24
Примените конфигурацию: netplan apply.
Пример конфигурации systemd-networkd (/etc/systemd/network/vlan10.network):
[Match]
Name=vlan10
[Network]
Address=192.168.10.1/24
VLAN=vlan10
Для файла vlan20.network используйте аналогичную структуру с Address=192.168.20.1/24. После создания файлов перезапустите службу: systemctl restart systemd-networkd.
Эти методы обеспечивают персистентность настроек и интеграцию с дистрибутивом, заменяя традиционные скрипты и ручные команды ip.
Для более глубокого понимания базового администрирования Linux, включая работу с сетями, обратитесь к практическому руководству по Linux для IT специалистов.
Обеспечение безопасности: ACL и правила межсетевого экрана
Маршрутизация между VLAN должна сопровождаться контролем трафика. Без фильтрации сегменты остаются логически разделенными, но доступ между ними не ограничен.
Правила iptables/nftables для контроля трафика между сегментами
На Linux-маршрутизаторе используйте iptables или его современную замену nftables. Пример политики: разрешить из VLAN пользователей (192.168.10.0/24) в VLAN серверов (192.168.20.0/24) только SSH (порт 22) и HTTP/HTTPS (порты 80,443), запретив все остальное.
Конфигурация iptables:
# Разрешить SSH
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -p tcp --dport 22 -j ACCEPT
# Разрешить HTTP/HTTPS
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -p tcp --dport 443 -j ACCEPT
# Запретить весь остальный трафик между этими VLAN
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -j DROP
# Полная изоляция инфраструктурного VLAN (например, VLAN 30 для управления)
iptables -A FORWARD -s 192.168.30.0/24 -d 192.168.10.0/24 -j DROP
iptables -A FORWARD -s 192.168.30.0/24 -d 192.168.20.0/24 -j DROP
iptables -A FORWARD -d 192.168.30.0/24 -j DROP
Аналогичные правила для nftables (современный и рекомендуемый вариант):
table inet filter {
chain forward {
type filter hook forward priority 0;
# Правила для VLAN 10 -> VLAN 20
ip saddr 192.168.10.0/24 ip daddr 192.168.20.0/24 tcp dport {22,80,443} accept
ip saddr 192.168.10.0/24 ip daddr 192.168.20.0/24 drop
# Изоляция VLAN 30
ip saddr 192.168.30.0/24 ip daddr {192.168.10.0/24, 192.168.20.0/24} drop
ip daddr 192.168.30.0/24 drop
}
}
Порядок правил критически важен. Более специфичные правила должны предшествовать общим.
Настройка Access Control Lists (ACL) на L3 коммутаторах
На аппаратных коммутаторах политики реализуются через ACL. Пример для Cisco IOS (стиль команд):
access-list 101 permit tcp 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 eq 22
access-list 101 permit tcp 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 eq 80
access-list 101 permit tcp 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 eq 443
access-list 101 deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
access-list 101 permit ip any any
# Применение ACL к интерфейсу VLAN
interface Vlan10
ip access-group 101 in
Для MikroTik (RouterOS) используется фильтрация через Firewall rules в IP > Firewall. ACL на коммутаторах работают быстрее, но предлагают менее детальный контроль, чем stateful firewall на Linux.
Принципы построения правил межсетевого экрана, включая анализ уровней L3 и L7, подробно рассмотрены в статье о методах защиты от DDoS атак.
Диагностика и решение типовых проблем связи между VLAN
Если после настройки связь между VLAN отсутствует, используйте системный чек-лист для диагностики.
Чек-лист диагностики: от интерфейса до таблицы маршрутизации
Выполните проверки последовательно:
- Проверка состояния VLAN интерфейсов и IP адресов:
ip addr show vlan10
Убедитесь, что интерфейс UP и имеет правильный IP адрес (например, 192.168.10.1/24). - Проверка таблицы маршрутизации:
ip route show
Сети VLAN (192.168.10.0/24, 192.168.20.0/24) должны быть связаны с соответствующими интерфейсами (dev vlan10, dev vlan20). - Проверка ARP таблицы:
ip neigh show
При попытке связи с устройством в другом VLAN (например, ping 192.168.20.50) должна появиться ARP запись для этого IP на интерфейсе маршрутизатора. - Проверка trunk-порта и native VLAN на коммутаторе:
Убедитесь, что физический порт коммутатора, подключенный к маршрутизатору, настроен как trunk и разрешает необходимые VLAN ID. Native VLAN должен совпадать с ожиданиями (обычно 1 или untagged). - Проверка правил firewall/ACL:
iptables -L FORWARD -nvилиnft list ruleset
Проверьте, что правила не блокируют тестовый трафик.
Пример успешного вывода ip route show:
192.168.10.0/24 dev vlan10 proto kernel scope link src 192.168.10.1
192.168.20.0/24 dev vlan20 proto kernel scope link src 192.168.20.1
Разбор частых ошибок конфигурации и их исправление
Ошибка 1: Несовпадение native VLAN на коммутаторе и ID VLAN на маршрутизаторе.
Если на коммутаторе native VLAN для trunk-порта установлен в 1, а на маршрутизаторе вы создали интерфейс vlan1 без IP адреса, untagged трафик может не маршрутизироваться. Решение: либо назначить IP адрес на vlan1 на маршрутизаторе, либо изменить native VLAN на коммутаторе на неиспользуемый ID.
Ошибка 2: Отсутствие IP адреса на SVI интерфейсе коммутатора.
На L3 коммутаторах для маршрутизации внутри VLAN необходимо создать SVI интерфейс и назначить ему IP адрес:
interface Vlan10
ip address 192.168.10.1 255.255.255.0
Ошибка 3: Пропуск шага включения маршрутизации на L3 коммутаторе.
На многих коммутаторах маршрутизация по умолчанию отключена. Включите ее:
ip routing (Cisco)
или в системных настройках MikroTik.
Ошибка 4: Неверная маска подсети или шлюз по умолчанию на клиентских устройствах.
Убедитесь, что клиенты в VLAN 10 имеют IP адрес из сети 192.168.10.0/24 и шлюз по умолчанию 192.168.10.1 (адрес маршрутизатора для этого VLAN).
Для комплексной диагностики маршрутизации, включая использование traceroute и mtr, полезно ознакомиться с практическим руководством по диагностике сетевой маршрутизации.
Интеграция маршрутизации между VLAN с инфраструктурными сервисами
После настройки базовой маршрутизации необходимо обеспечить работу сетевых сервисов, таких как DHCP и динамическая маршрутизация.
Настройка DHCP Relay для клиентов в разных VLAN
Если DHCP сервер находится в одном VLAN (например, VLAN 20), а клиенты в другом (VLAN 10), их запросы не достигнут сервера. Для решения этой проблемы настройте DHCP Relay агент.
На Linux-маршрутизаторе используйте dhcrelay из пакета dhcp-server:
dhcrelay -d -i vlan10 -i vlan20 192.168.20.100
Эта команда запускает relay агент в режиме демона, принимая запросы на интерфейсах vlan10 и vlan20 и отправляя их на DHCP сервер 192.168.20.100.
На L3 коммутаторах Cisco используется команда ip helper-address на SVI интерфейсе:
interface Vlan10
ip address 192.168.10.1 255.255.255.0
ip helper-address 192.168.20.100
На MikroTik функция реализуется через DHCP Relay в разделе IP > DHCP Server.
Динамическая маршрутизация (OSPF) для интеграции в большую сеть
Чтобы маршрутизатор между VLAN стал частью динамической маршрутизации предприятия, настройте OSPF на его интерфейсах.
На Linux с использованием FRRouting (пакет frr):
! Конфигурация FRRouting (фрагмент)
interface vlan10
ip ospf area 0
!
interface vlan20
ip ospf area 0
!
router ospf
network 192.168.10.0/24 area 0
network 192.168.20.0/24 area 0
На L3 коммутаторах Cisco:
interface Vlan10
ip ospf 1 area 0
!
interface Vlan20
ip ospf 1 area 0
!
router ospf 1
network 192.168.10.0 0.0.0.255 area 0
network 192.168.20.0 0.0.0.255 area 0
Эта конфигурация анонсирует сети VLAN 10 и 20 в OSPF область 0, позволяя другим маршрутизаторам в сети узнать пути к этим подсетям. Убедитесь, что область и другие параметры OSPF согласованы с существующей сетевой инфраструктурой.
Для реализации сложных маршрутизационных политик, таких как селективная маршрутизация через специализированные инструменты, можно обратиться к руководству по настройке селективной маршрутизации через V2RayTUN.
Настройка маршрутизации между VLAN - фундаментальная задача для построения безопасной и управляемой корпоративной сети. Выбор между гибким Router-on-a-Stick на Linux и высокопроизводительным аппаратным L3 коммутатором зависит от конкретных требований к throughput, безопасности и масштабированию. Используйте готовые конфигурации из этого руководства, дополняйте их правилами firewall и ACL, и интегрируйте решение с DHCP и динамической маршрутизацией для полноценной работы. Для проверки конфигураций в реальных условиях, например, на платформе TrueNAS, полезно изучение пошагового руководства по маршрутизации между VLAN в TrueNAS Scale.