Я пытаюсь смоделировать небольшую сеть из 3 машин с помощью QEMU, где машина (deb1) напрямую связана с хостом, а другие 2 машины (deb2, deb3):
Host
|
-----------deb1-----------
| |
deb2 deb3
deb1 подключен к 2 разным сетям, одна (vlan 1) соединяет deb1 с хостом, другая (vlan 2) соединяет deb1 с двумя другими машинами, поэтому deb1 должен прослушивать порт 1234:
kvm -hda deb1.img -m 256 \
-net nic,vlan=1 -net user,vlan=1 -net nic,vlan=2,macaddr=52:54:00:12:34:57 \
-net socket,vlan=2,listen=localhost:1234
deb2 и deb3 оба должны быть подключены к deb1, единственная разница - их MAC-адрес:
deb2:
kvm -hda deb2.img -m 256 -net nic,vlan=2,macaddr=52:54:00:12:34:01 \
-net socket,vlan=2,connect=localhost:1234
deb3:
kvm -hda deb3.img -m 256 -net nic,vlan=2,macaddr=52:54:00:12:34:02 \
-net socket,vlan=2,connect=localhost:1234
После запуска трех машин я просто устанавливаю их IP-адрес:
deb1:
ifconfig eth1 192.168.10.2
deb2:
ifconfig eth0 192.168.10.3
deb3:
ifconfig eth0 192.168.10.4
Здесь проблема: связь между deb1
и deb2
работает отлично, но не между deb1
и deb3
. Когда я выключаюсь deb2
тогда связь между deb1
и deb3
начать работать. Это выглядит как deb1
не может слушать одновременно deb2
и deb3
.
Что я делаю не так?
Я действительно следил за тем, что написано в это руководство (см. раздел 4.2 Сеть только для гостей: «Если вы хотите использовать более трех гостевых ОС, просто подключитесь к одной. Используйте другой macaddr.») и Эта статья
-net socket,{listen|connect}=...
подходит только для соединений 1: 1.
netstat -anp46|grep qemu
показывает, что нет связи между qemu из deb3 и deb1.
Использовать -net socket,mcast=...
вместо.