[Comm] LXC, etcnet

Egor Vyscrebentsov evyscr на gmail.com
Вт Сен 13 12:15:53 UTC 2011


On Mon, 12 Sep 2011 23:52:40 +0400 Алексей Синицын wrote:

>  Очевидно нужно ещё один интерфейс который будет смотреть в
> контейнеры, например veth0. Но, по меньшей мере, я не знаю какой у
> него должен быть тип. С типом eth он конечно не поднялся, с типом bri
> поднялся но я не уверен что это правильно. Конфигурацию для него я
> скопировал с опустевшего eth0, у которого вся она является одним
> файлом options с двумя строчками: тип интерфейса и BOOTPROTO.

Вы путаетесь. Ничего этого не надо. Подробнее - ниже.

>  И, соответственно, у breth0 сейчас указано HOST=eth0, то есть не
> указан второй интерфейс, куда делать туннель, очевидно за отсутствием
> такового. При указании вторым интерфейсом veth0 он не может быть
> использован когда тот не поднят (с типом eth), либо не может делать
> туннель сам на себя при указании типа bri.

Для этого придумываются всякие скрипты в которых выполняется включение
свежесозданного интерфейса в бридж (на которые скрипты указывает, например,
субопция script параметра -net tap для qemu/kvm, либо параметр EXTERNAL_SCRIPT
в vznet.conf для openvz с соответствующим указанием bridge=... в параметре NETIF
конфига контейнера.)

В LXC, как Вам показали ниже, используется параметр конфигурации lxc.network.link
Этого достаточно.

> > На хосте, чтобы получить желаемый эффект, нужно проделать некоторые
> > дополнительные телодвижения.
> > Создается бридж (br0) из двух интерфейсов - хостовый eth0 и veth0. Тот
> > ip, который стоял у вас на eth0, нужно перенести на интерфейс бриджа
> > (br0). На eth0 и veth0 никаких ip не ставим.
> 
>  Итого три интерфейса: eth0, venet0 и br0, из которых:
> 
> eth0: Физический, адреса не имеет.
> venet0: Виртуальный(?), смотрит в контейнеры, адреса не имеет.
> Ниоткуда сам не берётся.
> br0: Объединяет первые два. Имеет адрес, через него же получает сеть сам хост.

venet - не veth. Не надо его в бридж. Никогда. Интерфейс veth$CTID.$NUM
на хостноде смотрит _только_ в контейнер $CTID и создаётся при поднятии
этого контейнера.

Рекомендую http://wiki.openvz.org/Differences_between_venet_and_veth
Мне кажется, должно помочь понять, где Вы сейчас заблуждаетесь.

Созданного же моста с единственным включенным по умолчанию eth0 достаточно.

> 10 сентября 2011 г. 20:01 пользователь Yury Bushmelev написал:
> > На всякий случай привожу свой кусок конфига lxc-контейнера, касающийся сети.
> >
> > lxc.network.type = veth
> > lxc.network.veth.pair = veth0
> > lxc.network.flags = up
> > lxc.network.link = br0
> > lxc.network.hwaddr = DE:AD:BE:EF:C0:00

Этих настроек Вам должно хватить для автоматического добавления
свежесозданного интерфейса в бридж br0. Не забывайте указывать
разные veth.pair и hwaddr для разных контейнеров. veth.pair вообще
является необязательным, в этом случае lxc сам назначит ему имя, под
которым интерфейс виден на стороне хостноды.

Это всё, в принципе, написано в man lxc.conf на второй странице.

-- 
WBR, Egor Vyscrebentsov


Подробная информация о списке рассылки community