【问题标题】:qemu/kvm: cannot connect multiple machines to the same socketqemu/kvm:不能将多台机器连接到同一个套接字
【发布时间】:2015-12-14 16:39:44
【问题描述】:

我正在尝试使用 QEMU 模拟一个由 3 台机器组成的小型网络,其中一台机器 (deb1) 直接与主机连接,另外两台机器 (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。”) 和this article

【问题讨论】:

    标签: sockets networking port qemu kvm


    【解决方案1】:

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

    netstat -anp46|grep qemu表示deb3的qemu和deb1没有连接。

    请改用-net socket,mcast=...

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 2021-05-15
      • 2011-08-16
      相关资源
      最近更新 更多