Linux VRF and Namespaces: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 38: | Строка 38: | ||
=<code>VRF</code> в Linux= |
=<code>VRF</code> в Linux= |
||
| + | Прежде чем говорить о VRF перечислим проблемы которые решает VRF |
||
| + | |||
| + | * Изоляция на уровне L3 - разные VRF имеют независимые таблицы маррутизации |
||
| + | |||
| + | В Linux есть три способа получить разные таблицы маршрутизации для разных групп source адресов |
||
| + | =<code>ip rule </code>= |
||
| + | Первый, самый старый способ - использовать несколько таблиц маршрутизации |
||
| + | <BR> |
||
| + | Насколько я помню он был "всегда" :) |
||
| + | <BR> |
||
| + | <PRE> |
||
| + | ip route add default via 10.1.0.1 table 120 |
||
| + | </PRE> |
||
| + | |||
| + | Создаем правило, отправляющее нужные пакеты в нужную таблицу: |
||
| + | <PRE> |
||
| + | # ip rule add from 192.168.1.20 table 120 |
||
| + | </PRE> |
||
=Ссылки= |
=Ссылки= |
||
Версия 15:20, 30 апреля 2025
Network Namespaces или VRF
Эта статья задумывается как полуперевод-полукомпиляция и возможно с добавлением собственного опыта
Зачем нужен VRF
VRF это способ "виртуализировать" сеть, и иметь несколько полностью или частично независимых экземпляров сетевого стека.
Пример для банального небольшого провайдера на картинке:
Что тут нарисовано
- Есть 2 группу клиентов
- Беспроводные (картинка с 2 антенами это точка доступа). Им нужно строго ограничивать скорость - гонять через выделенный роутер который делает шейпинг. Если их не шейпить, то один клиент сможет занять всю полосу в эфире, остальные на той же базовой станции работать не смогут.
- Проводные, включены на скорости порта. Гонять их трафик через шейпер не только безсмысленно но и вредно - шейпер плохо работает на скоростях выше 50Мбит
|
Вместо шейпера тут может быть например файрволл для гостевой сети, суть от этого не меняется |
- Роутер/L3 свитч куда включены эти клиенты
- Шейпер, пограничный роутер и "интернет" добавлены для наглядности
(тут я не касаюсь L3VPN и вообще VPN ни в каком виде)
Задача описанная выше решается просто на любом более-менее современном L3 коммутаторе
- Для каждой группы клиентов создается свой VRF, своя таблица маршрутизации со своим шлюзом
- Так как шлюзы в разных VRF разные то часть клиентов можно направить через шейпер а другую часть мимо
- На Cisco при желании можно сделать маршрутизацию между VRF - Route Leaking что б клиенты из разных VRF могли общаться друг с другом (в случае интернет-провайдера это сделать можно, в случае с гостевой сетью конечно не желательно)
Это все было банально и все это все и так знают (VRF без MPLS в Cisco называют VRF-Lite)
Вопрос как это все сделать используя Linux
VRF в Linux
Прежде чем говорить о VRF перечислим проблемы которые решает VRF
- Изоляция на уровне L3 - разные VRF имеют независимые таблицы маррутизации
В Linux есть три способа получить разные таблицы маршрутизации для разных групп source адресов
ip rule
Первый, самый старый способ - использовать несколько таблиц маршрутизации
Насколько я помню он был "всегда" :)
ip route add default via 10.1.0.1 table 120
Создаем правило, отправляющее нужные пакеты в нужную таблицу:
# ip rule add from 192.168.1.20 table 120