LINUX.ORG.RU
ФорумAdmin

libvirt, bridge, filter

 , ,


0

1

На сервере установлен qemu-kvm и libvirt.
Задача: прокинуть интерфейс eth0 хоста в виртуальную машину для того, что бы виртуальная машина могла получить ip-адрес локальной сети.

eth0 <==> br0 <==> vnet0
eth0 = 192.168.1.10
vnet0 = 192.168.1.11

Настроил bridge:

<interface type='bridge' name='br0'>
  <start mode='onboot'/>
  <protocol family='ipv4'>
    <ip address='192.168.1.10' prefix='24'/>
    <route gateway='192.168.1.1'/>
  </protocol>
  <bridge stp='on' delay='0'>
    <interface type='ethernet' name='eth0'>
    </interface>
  </bridge>
</interface>

Настроил интерфейс виртуальной машины:

<interface type='bridge'>
  <mac address='52:54:00:b8:c5:f0'/>
  <source bridge='br0'/>
  <target dev='vmnet1'/>
  <model type='virtio'/>
  <filterref filter='clean-traffic'>
    <parameter name='IP' value='192.168.1.11'/>
  </filterref>
  <alias name='net0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

Сеть работает. Из локальной сети виден и хост (192.168.1.10) и ВМ (192.168.1.11). Но не работает фильтр. Если я правильно понимаю, он должен создавать правила iptables, но в правилах iptables пусто. Как пофиксить?

★★

Зачем нужен фильтр?

Задача: прокинуть интерфейс eth0 хоста в виртуальную машину для того, что бы виртуальная машина могла получить ip-адрес локальной сети.

Чё?

Для того что бы гость получил ip от dhcpd (который в реальной локалке) просто нужно врубить его (гостя) сетевой интерфейс в бридж хоста. Простейший пример сети:

<network>
  <name>bridged</name>
  <uuid>205af5da-f2f5-ed46-413b-cfb3629b779c</uuid>
  <forward mode='bridge'/>
  <bridge name='br0' />
</network>
Нужен настроенный бридж на хосте, вестимо.

invokercd ★★★★ ()

статей на эту тему уже миллионы

dyasny ★★★★★ ()
Ответ на: комментарий от invokercd

Вы думаете, что я не читал документацию? :)

В доках есть пример:

<devices>
  <interface type='bridge'>
    <mac address='00:16:3e:5d:c7:9e'/>
    <filterref filter='clean-traffic'/>
  </interface>
</devices>

у меня практически аналогично:

<interface type='bridge'>
  <mac address='52:54:00:b8:c5:f0'/>
  <source bridge='br0'/>
  <target dev='vmnet1'/>
  <model type='virtio'/>
  <filterref filter='clean-traffic'>
    <parameter name='IP' value='192.168.1.11'/>
  </filterref>
  <alias name='net0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

Но фильтр не работает.

SaBo ★★ ()
Ответ на: комментарий от SaBo

Какой дистр?

Резонно проверить нет ли ошибок, возможно libvirtd не может найти какой то бинарник или либу.

В Debian

/var/log/libvirt/libvirtd.log

invokercd ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.