我试图模拟使用QEMU的机器(deb1)直接连接到主机和其他2台机器(deb2,deb3)的3台机器的一个小networking:
Host | -----------deb1----------- | | deb2 deb3
deb1连接到两个不同的networking,一个(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
之间的deb3
。 当我closuresdeb2
, deb1
和deb3
之间的连接开始工作。 看起来deb1
不能同时收听deb2
和deb3
。
我究竟做错了什么?
实际上,我遵循本指南中的内容 (请参阅4.2 Guest-onlynetworking:“当您要使用三个以上的客户操作系统,只需连接到一个。使用不同的macaddr”)和本文
-net socket,{listen|connect}=...
仅适用于1:1连接。
netstat -anp46|grep qemu
显示deb3和deb1的qemu之间没有连接。
使用-net socket,mcast=...
来代替。