VRF в Linux
Материал из Xgu.ru
VRF в Linux реализован с помощью функционала network namespaces(netns), начиная с версии ядра 2.6.29. netns это изолированная копия сетевого стека, имеющая свои собственный политики маршрутизации(ip rule), таблицы маршрутизации, arp/nd-таблицу, фаервол(iptables), индексы интерфейсов.Контейнерная виртуализация использует netns в качестве инструмента изоляции сетевого стека контейнера.
Содержание |
[править] Создание, просмотр списка, удаление netns(vrf)
Создание netns:
# ip netns add VRF1 # ip netns add VRF2
Просмотр списка netns:
# ip netns list VRF2 VRF1
Удаление netns:
# ip netns del VRF1
Также существует netns по умолчанию(глобальный netns), который не имеет имени и не отображается в списке.
[править] Перенос интерфейса в netns
# ip link set eth0 netns VRF2
[править] Выполнение команд в netns
# ip netns exec VRF2 ifconfig eth0 192.0.2.254/30 up # ip netns exec VRF2 ip route show 192.0.2.252/30 dev eth0 proto kernel scope link src 192.0.2.254 # ip netns exec VRF2 ping 192.0.2.253 -c 3 ... # ip netns exec VRF2 arp -a -n ? (192.0.2.253) at <incomplete> on eth0
Приложение может быть netns-capable (man 2 setns (англ.)), однако большинство приложений на сегодняшний день не оперируют явным образом netns.
[править] Связь с внешним миром
Связь с внешним миром может осуществляться следующим образом:
- путём переноса физического интерфейса в netns (ethX, wlanX и т.п.)
- dot1Q-подынтерфейс(802.1q vlan). В netns по умолчанию создаётся подынтерфейс, затем переносится в нужный netns. Требуется поддержка 802.1q со стороны сетевого оборудования
- macvlan. В netns по умолчанию создаётся macvlan-интерфейс, затем переносится в нужный netns
- venet (vznetdev), доступно только в openvz-ветке ядра (не включено в апстрим)
- veth-пара. В netns по умолчанию создаётся veth-пара интерфейсов, затем один veth-интерфейс переносится в netns, второй остаётся в netns по умолчанию(если нужна связь с внешним миром) или в другой netns(если нужна связность между netns). Выход во внешний мир возможен как на втором уровне(коммутация(bridge), тогда получается аналог macvlan), так и на третьем(маршрутизация)
[править] Дополнительная информация
- Namespaces in operation, part 7: Network namespaces - LWN.net
- Примеры применения Linux network namespaces (netns)
- Introducing Linux Network Namespaces
Сетевой уровень
|
---|