Я хочу разрешить моим контейнерам libvirt / lxc использовать устройство tun / tap. Для этого я для работающего контейнера могу добавить его к разрешенным устройствам:
# echo "c 10:200 rwm" > /sys/fs/cgroup/devices/libvirt/lxc/client-1/devices.allow
в результате чего:
# cat /sys/fs/cgroup/devices/libvirt/lxc/client-1/devices.list
c 1:3 rwm
c 1:5 rwm
c 1:7 rwm
c 1:8 rwm
c 1:9 rwm
c 5:0 rwm
c 5:2 rwm
c 136:* rwm
c 10:200 rwm
Однако у меня возникают некоторые трудности с установкой этого параметра по умолчанию для каждого контейнера.
Поиск в Google показывает, что изменение /etc/cgconfig.conf к
group libvirt/lxc {
devices {
devices.allow="c 10:200 rwm";
}
}
должен исправить, но это не так (даже после перезапуска задействованных служб -libvirtd, cgconfig- во всех возможных порядке)
Немного поигрался с cgroup.clone_children настройка, но это не помогает.
Мои вопросы:
1 Как добавить это устройство в качестве разрешения по умолчанию для каждого контейнера libvirt / lxc?
2 Какой процесс отвечает за список разрешенных по умолчанию?
c 1:3 rwm
c 1:5 rwm
c 1:7 rwm
c 1:8 rwm
c 1:9 rwm
c 5:0 rwm
c 5:2 rwm
c 136:* rwm
Все пакеты взяты из современной системы Fedora 18.
libvirt_lxc заполняет гостевой /dev
дерево при запуске в соответствии с конфигурацией гостя. В документация говорит, что вы должны поместить конфигурацию в гостевой файл конфигурации XML. Использовать hostdev
с "разным" type
и с его source
указывая на char
устройство на /dev/net/tun
.
Фрагмент должен выглядеть так:
...
<devices>
...
<hostdev mode='capabilities' type='misc'>
<source>
<char>/dev/net/tun</char>
</source>
</hostdev>
</devices>
...
Чтобы отредактировать XML-файл гостя, используйте virsh
. Для локального экземпляра используйте эту команду:
virsh -c lxc:/// edit GUESTNAME
Я могу подтвердить это, работая с libvirt-1.2.1.