LINUX.ORG.RU
решено ФорумAdmin

Сеть между виртуалками qemu

 , , ,


0

3

Привет всем. Знатоки, помогите, задолбался уже.

Надо настроить сеть между двумя виртуалками в qemu. Строка запуска первой виртуалки:

qemu-system-i386 -s -kernel bzImage -drive file=alt.raw,if=virtio,cache=none -smp 2 -machine type pc,accel=kvm -cpu host -m 256 -append 'root=/dev/vda vga=0x315' -net nic -net tap, ifname=tap0,script=no,downscript=no

У второй такая же, только ifname=tap1 и без -s.

После старта делаю бридж, конфигурю и добавляю свежесозданные tap:

brctl addbr br0
ifconfig realtek promisc
ifconfig tap0 0.0.0.0 promisc
ifconfig tap1 0.0.0.0 promisc
brctl addif br0 realtek
ifconfig br0 192.168.1.1 up
brctl addif br0 tap0 tap1
sysctl net.ipv4.ip_forward=1

realtek это железная сетёвка на хосте.

затем в виртуалках делаю ifconfig 192.168.1.{2,3}, соответственно.

и тут начинается самое интересное. с виртуалок можно пинговать только хост, но не другую виртуалку, с хоста же пингуются обе без проблем. что делать?

★★★★★

Зачем так мучаться, когда есть libvirt и рулить виртуалками и сетью на порядок проще чем в ручную.

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

Потому что qemu под рукой, а про libvirt сейчас почитал, хз что проще, на вид точно так же.

false ★★★★★ ()

Создаём tap

# vde_switch -tap tap0 -mod 660 -group kvm -daemon
# ip addr add 10.0.2.1/24 dev tap0
# ip link set dev tap0 up

Включаем проброс

# sysctl -w net.ipv4.ip_forward=1

Добавляем правило для NAT

# iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -j MASQUERADE

Запускаем виртуалки

$ qemu-system-i386 -kernel bzImage -drive file=alt.raw,if=virtio,cache=none -smp 2 -machine type=pc,accel=kvm -cpu host -m 256 -append 'root=/dev/vda vga=0x315' -net nic,model=virtio,macaddr=52:54:00:12:34:56 -net vde
$ qemu-system-i386 -kernel bzImage -drive file=alt.raw,if=virtio,cache=none -smp 2 -machine type=pc,accel=kvm -cpu host -m 256 -append 'root=/dev/vda vga=0x315' -net nic,model=virtio,macaddr=52:54:00:12:34:57 -net vde

И заводим сеть в виртуалках:

# ip addr add 10.0.2.{100,101}/24 dev eth0
# ip link set dev eth0 up
# ip route add default via 10.0.2.1

$ ping 10.0.2.100
PING 10.0.2.100 (10.0.2.100) 56(84) bytes of data.
64 bytes from 10.0.2.100: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 10.0.2.100: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 10.0.2.100: icmp_seq=3 ttl=64 time=0.039 ms
^C
--- 10.0.2.100 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.039/0.042/0.046/0.008 ms

Пока всё ок, дальше посмотрим. Кстати, попробовал через virt-manager заводить виртуалки, визуально работают медленнее, чем просто qemu с kvm-accel, хотя настроек кучу перепробовал. Так что вот.

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

Кстати, попробовал через virt-manager заводить виртуалки, визуально работают медленнее, чем просто qemu с kvm-accel, хотя настроек кучу перепробовал

Да-да, я ведь хотел тебе подлянку сделать, чтобы все медленно работало.

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

Я так и думал.

Хз, может на моём железе так, оно быстрее, чем qemu в софтверном режиме, но медленнее qemu с accel kvm. Тупо смотрел, за сколько выведется dmesg, с разными vga.

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

Ты при запуске из под вирт-менеджера не догадался посмотреть ps -ef | grep kvm (qemu) ??? Может он не включил "ускоритель квм"

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

Завтра посмотрю, сегодня уже нет возможности

false ★★★★★ ()

что делать?

Задать разные MAC-адреса

terradot ()
2 января 2015 г.
Ответ на: комментарий от false

...

ip_forward, iptables... Какой IP на уровне моста (bridge)? Brige работает на ISO уровне 2, а IP --- это уровень 3.

Ему плевать на IP, незачем заморачиваться лишними штуками.

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