VRF в Linux

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

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), так и на третьем(маршрутизация)

[править] Дополнительная информация