我尝试使用QEMU模拟3台机器的小型网络,其中机器(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
。
我做错了什么?
我实际上遵循了this guide中的内容(请参阅4.2仅限访客网络:"当您想使用三个以上的客户操作系统时,只需连接到一个。使用不同的macaddr &#34) 和this article
答案 0 :(得分:0)
-net socket,{listen|connect}=...
仅适用于1:1连接。
netstat -anp46|grep qemu
表明deb3和deb1的qemu之间没有联系。
改为使用-net socket,mcast=...
。