qemu / kvm:无法将多台计算机连接到同一套接字

时间:2015-12-14 16:39:45

标签: sockets networking port qemu kvm

我尝试使用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

这里的问题: deb1deb2之间的联系完美无缺, 但不是deb1deb3之间的那个。当我关闭deb2时,deb1deb3之间的连接就开始起作用了。看起来deb1无法同时收听deb2deb3

我做错了什么?

我实际上遵循了this guide中的内容(请参阅4.2仅限访客网络:"当您想使用三个以上的客户操作系统时,只需连接到一个。使用不同的macaddr &#34) 和this article

1 个答案:

答案 0 :(得分:0)

-net socket,{listen|connect}=...仅适用于1:1连接。

netstat -anp46|grep qemu表明deb3和deb1的qemu之间没有联系。

改为使用-net socket,mcast=...