[Comm] LXC, etcnet

Алексей Синицын asinitsinster на gmail.com
Пн Сен 12 19:52:40 UTC 2011


10 сентября 2011 г. 20:01 пользователь Yury Bushmelev
<jay4mail на gmail.com> написал:
> 10 сентября 2011 г. 18:50 пользователь Алексей Синицын
> <asinitsinster на gmail.com> написал:
>> 7 сентября 2011 г. 23:57 пользователь Yury Bushmelev
>> <jay4mail на gmail.com> написал:
> [skip]
>>> Я себе на ArchLinux делал вот по этому руководству
>>> https://wiki.archlinux.org/index.php/Linux_Containers
>>>
>>
>>  Спасибо, хорошее описание. В принципе для нашего случая несколько
>> избыточно, но избыточность лучше недостаточности. Можно попробовать
>> убрать лишние части, как например компилирование ядра, и переписать в
>> контексте данного дистрибутива.
>>
>>  В прошлый раз у меня возникло затруднение при подготовке сетевого
>> интерфейса, но это тоже место которое как раз различается. Если Вы
>> используете /etc/net то не поделитесь ли конфигурационными файлами
>> моста? Тогда я читал какое то также постороннее описание, но так и не
>> смог распутаться на кого назначать адреса и какие. Это как раз одно из
>> мест, которые в ovz уже автоматизированы.
>
> Ну, как я выше указал, у меня на этой машине сейчас ArchLinux. Но, на
> самом деле, там это место уже тоже сломали. Я могу словами описать,
> что там надо сделать, а уж как это переложить на etcnet я не советчик
> :)
>

 Это очень хорошо. Понимание это чуть лучше пошаговой инструкции :) А
по etcnet, думается, специалистов здесь найти можно.

> Для начала надо прочитать man lxc.conf. Потом перечитать секцию
> NETWORK на предмет желаемого типа (lxc.network.type). Мне нужен был
> доступ к контейнеру, как к обычной машине в локальной сети, но
> выделять ей свою собственную сетевуху я не хотел. Поэтому выбрал тип
> veth. Собственно, этот вариант ничем не отличается от qemu/kvm c
> tun/tap-интерфейсами или virtualbox с бриджем.
>

 Кажется я понял что меня сбивало с толку. Хотя везде в описании
написано "мост", я оглядывался на ovz, где по умолчанию используется
venet без моста.

> В этом режиме создается пара интерфейсов, которые соединены друг с
> другом. Один из них "торчит" в хосте (veth0), другой - в контейнере
> (eth0).
>

 Вот с мостом что-то у меня никак не выходило. По крайней мере до тех
пор, пока я не вспомнил про acc в котором можно накликать что
интерфейс работает как мост :) . В общем, теперь у меня есть
интерфейсы: eth0 без адреса и мост breth0 с адресом. И сеть (на хосте)
при этом работает. Но похоже здесь как раз и становится нужно участие
тех, кто использует lxc с etcnet.

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

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

> В контейнере все просто - конфигурим его так, как будто это выделенный
> компьютер, который подключен в вашу локалку. При желании даже dhcp
> можно использовать.
>

 Насколько я в понял, можно просто взять готовую файловую систему от
ovz (в котором так и есть) и она просто заработает. По крайней мере я
на это рассчитываю :)

> На хосте, чтобы получить желаемый эффект, нужно проделать некоторые
> дополнительные телодвижения.
> Создается бридж (br0) из двух интерфейсов - хостовый eth0 и veth0. Тот
> ip, который стоял у вас на eth0, нужно перенести на интерфейс бриджа
> (br0). На eth0 и veth0 никаких ip не ставим.
>

 Итого три интерфейса: eth0, venet0 и br0, из которых:

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

> Чтобы проще было понять - представьте, что это виртуальный свитч, в
> который воткнуты три хвоста - от вашей хост-системы (собственно, сам
> br0), от вашего контейнера (veth0) и аплинк в домашний свитч (eth0).
>
> Примечание: именование интерфейсов в вашем случае может отличаться.
>
> Почитайте также http://www.altlinux.org/Etcnet, раздел "Настройка
> Ethernet-моста".
>
> На всякий случай привожу свой кусок конфига 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
>
> --
> Yury Bushmelev
> _______________________________________________
> community mailing list
> community на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/community


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