# убираем ip адрес у интерфейса eth0 /sbin/ip addr flush eth0 # "Опускаем" eth0 /sbin/ip link set eth0 down # Переименовываем reth0 (тут нам нужно знать MAC-адрес инрефейса) /sbin/nameif reth0 00:11:22:33:44:55 # "Подымаем" reth0 (eth0 в девичестве) /sbin/ip link set reth0 up # Создаём мост с именем eth0 /usr/sbin/brctl addbr eth0 # "Подымаем" eth0 /sbin/ip link set eth0 up # Добавляем к мосту интерфейс reth0 /usr/sbin/brctl addif eth0 reth0 # Назначаем IP для eth0, тут надо отметить, что в случае получения адреса по DHCP нужно будет # убить dhcpcd (/usr/sbin/dhcpcd -k) перед тем как освободить адрес eth0, а потом снова запустить (/sbin/dhcpcd -n) ifconfig eth0 192.168.0.3 # Так как DHCP я не использую, а default route погибает вместе с опусканием eth0, его нужно восстановить route add -net default gw 192.168.0.1 # Создаём tap интерфейс tunctl -u _имя_пользователя_из_под_которого_пускается_qemu_ -t qeth0 # "Подымаем" qeth0 # добавляем tap-интерфейс в мост /usr/sbin/brctl addif eth0 qeth0 # Т.к. моя машина смотрит в несколько сетей, дефолтовое действие для цепочки FORWARD у меня DROP. # Нужно добавить правило, которое выглядит слегка не логично :) # Если у вас не разрешён форвардинг, надо его разрешить (echo 1 > /proc/sys/net/ipv4/ip_forward) /sbin/iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT
Теперь из под пользователя запускаем qemu (или kvm, что конечно лучше ), опции по вкусу Без подсветки
1:
kvm -m 128 -hda gw.img -cdrom /mnt/frenzy-1.1-std-RU.iso -net nic,vlan=0,macaddr=52:54:00:12:34:57 -net tap,vlan=0,ifname=qeth0,script=no -monitor stdio -vnc localhost:0
Всё работает как часы, qemu/kvm даже получает адрес по DHCP
Несколько замечаний:
Зачем нужно переименовывать eth0? У меня eth0 не однократно фигурирует в правилах iptables, если у Вас нет такой проблемы можно дать мосту имя по умолчанию (br0) и не усложнять процедуру.
Если Вы хотите запустить несколько виртуальных машин, то вам понадобится отдельный интерфейс для каждой машины, либо (что ИМХО более разумный выход) воспользоваться программой vde_switch, но это уже другая история
Если Вы используете несколько виртуальных машин, не забудьте назначить им разные MAC-адреса (я на эти грабли умудрился наступить )
Ну что ж, вроде я ничего не забыл. Желаю удачи
Комментариев нет:
Отправить комментарий