Ноя
11

Сеть в виртуальной машине на OpenVZ




  • KVM в Linux

  • История Олимпийских Игр


  • Запись опубликована Bozaro. Пожалуйста, оставляйте комментарии там.

    В догонку к посту Установка OpenVZ на Ubuntu Linux решил описать результаты копаний по поводу настройки сети в виртуальной машине OpenVZ.

    Итого в vzctl можно добавить сетевой интерфейс следующими способами:

    1. vzctl set 101 –ipadd 192.168.0.1 –save
      Данный способ добавляет виртуальной машине интерфейс точка-тока с хост-машиной. В общем целом для простых случаев этого достаточно, но данный способ, к примеру, не позволяет работать с broadcast-ами (он не подходит, если на виртуальную машину нужно установить Samba или DHCP-cервер).
    2. vzctl set 101 –netdev_add eth0 –save
      Тут все тоже достаточно просто. Указанный сетевой интерфейс переносится в виртуальную машину. То есть он будет доступен только в указанной виртуальной машине (в хост-машине или нескольких виртуальных машинах его использовать нельзя).
      Так же данный способ не работает если попытаться перебросить в виртуальную машину VLAN-интерфейс.
    3. vzctl set 101 –netif_add eth0 –save
      vzctl set 101 –netif_add eth0,00:18:51:d8:04:98,veth101.0,00:18:51:0f:a6:ab
      Самое интересное - данный способ создает пару интерфейсов (один в виртуальной машине - eth0, и один в хост-машине - veth101.0), но аргумент для указания моста в версии 3.0.22 еще отсутствует.

    Речь далее пойдет о 3-ем способе.

    При старте интерфейса нужно принудительно добавить его в интерфес моста. Описание этого процесса было взято из статьи: OpenVZ on Ubuntu 8.10 с небольшими правками (мне надо было иметь возможность указать разные мосты для разных интерфейсов), но суть та же.

    Разница в реализации следующая:

    1. Соответствие моста и интерфейса я задавал через переменную:
      VZBRIDGE="veth101.0,br0 veth101.1,br1"
    2. Скрипт /etc/vz/bin/vznetaddbr получился следующим:
      #!/bin/bash
      CONFIGFILE=/etc/vz/conf/${VEID}.conf
      . $CONFIGFILE
      for iter in $VZBRIDGE; do
          IFACE=${iter%,*}
          BRIDGE=${iter#*,}
          if [ "$IFACE" == "$3" ]; then
              echo Adding interface $IFACE to bridge $BRIDGE
              /sbin/ifconfig $IFACE up
              /usr/sbin/brctl addif $BRIDGE $IFACE
          fi
      done






  • KVM в Linux

  • История Олимпийских Игр



  • Социальные сети

    Рубрики

    Последние записи