我正在尝试使用 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
deb1
问题在于:和之间的连接deb2
可以正常工作,但deb1
和之间的连接却不行deb3
。当我关闭时,和deb2
之间的连接开始正常工作。看起来无法同时监听和。deb1
deb3
deb1
deb2
deb3
我究竟做错了什么?
我实际上遵循了本指南(查看第 4.2 节仅限客户机的网络:“当您想使用三个以上的客户机操作系统时,只需连接到一个。使用不同的 macaddr。”)和本文
答案1
-net socket,{listen|connect}=...
仅适用于1:1连接。
netstat -anp46|grep qemu
说明 deb3 的 qemu 与 deb1 之间没有任何联系。
改用-net socket,mcast=...
。