идея сети в xen через bridge очень простая и прозрачная (о том как эта идея реализуется в разных дистрибутивах - не знаю, у меня самосборное)
Код: Выделить всё
(network-script network-bridge)
(vif-script vif-bridge)
эти две строчки /etc/xen/config.sxp делают следующее:
- переименовывают первый сетевой интерфейс eth0 в peth0 (типа - physical eth0)
- создают bridge с именем eth0, и подключают к нему физический интерфейс peth0. в результате, dom0 подключен в сеть. для неувеличения энтропии, mac-адрес интерфейса bridge делается таким же как физический, подключенный в сеть, поэтому манипуляций xen с интерфейсами в сети никто не видит
- все стартующие domU подключаются к этому же bridge и т.образом, видят друг друга и сеть
в результате, конфигурация bridge для, например, трех работающих виртуальных машин выглядит так:
Код: Выделить всё
# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.e0cb4e520dc6 no peth0
vif4.0
vif5.0
vif6.0
при этом, конфигурация сети domU (канонически файлы конфигурации находятся в /etc/xen, как писалось ЛБ):
mac-адрес можно не указывать, xen выделит динамический, уникальный в пределах инсталляции xen. интерфейсы vifX.Y - создаются dom0 (драйвер-доменом в общем случае) при старте domU и уничтожаются при останове domU. визуально легко представить как второй конец ethernet витой пары, которая "подключается" в bridge (первый - "подключен" в виртуальный сетевой адаптер domU). X и Y идентификатор domU и номера интерфейса в domU, соответственно
более сложные конфигурации bridge-сети в xen делаются "вручную", на сколько хватит фантазии конфигуратора или/и дистрострителя, например в моем случае - каждый домен включен в два bridge, первый подключен в настоящую сеть, а второй, организует изолированную сеть, в которой domU видят только друг друга:
Код: Выделить всё
# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.e0cb4e520dc6 no peth0
vif1.0
vif2.0
vif3.0
heartbeat 8000.e2bd63e1584e no pdummy0
vif1.1
vif2.1
vif3.1
сделано таким образом (/etc/xen/config.sxp):
а /etc/xen/scripts/my-network-bridge совсем простой:
Код: Выделить всё
...
/sbin/modprobe dummy
${dir}/network-bridge start
${dir}/network-bridge start bridge=heartbeat netdev=dummy0
...
конфигурация сети в domU в этом случае будет такой:
Код: Выделить всё
...
vif = [ 'mac=0a:11:10:24:14:16',
'mac=0a:99:10:24:14:16,bridge=heartbeat,script=vif-bridge' ]
...
идеи взяты из книжки "running xen"
все написанное справедливо для xen версии < 4.1: там конфигурация сетевой инфраструктуры, говорят, полностью отдана на откуп операционной системе драйвер-домена (dom0). у меня пока до этого не руки не дошли, пока немножко подправил стартовые скрипты нового xen и 4.1 работает как 4.0