如何将多个kvm / qemu VM guest连接到一个子网

我想设置一个简单的KVM / QEMU访客虚拟机的子networking(居住在一台主机上(Fedora 19))进行testing。 该子网将包含3个服务器:

1 Debian 6.x

eth0 ip:10.0.0.7 eth1 ip:10.0.2.1

2 Debian 7.x

eth0 ip:10.0.2.2

2 CentOS 6.x

eth0 ip:10.0.2.3

和(可能)多个客户端。

这个想法是模拟一个子网,其中只有一个虚拟机(从上面的#1)连接到WANnetworking,其余的作为网关/路由器。

我目前正在试验一个基于这里描述的设置:

http://csortu.blogspot.com/2009/12/building-virtual-network-with-qemu.html

但是,目前看来除了#1以外的其他虚拟机都提供了广域网连接。

我有两个问题:1.有一个更简单的解决scheme? 2.(如果没有)如何使用VM#1作为网关使其他VM与外界连接。

我大概应该提到的是,所有的虚拟机都是相互连接的,但是广域网访问只能在#1上使用。

编辑:按要求,这里是完整的networkingconfiguration。

主机:Fedora 19 x86-64在10.0.0 / 24networking上直接连接到我家的路由器(10.0.0.1)(只打印相关的接口)

3: wlp12s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 0c:60:76:64:c5:9d brd ff:ff:ff:ff:ff:ff inet 10.0.0.3/28 brd 10.0.0.15 scope global wlp12s0 valid_lft forever preferred_lft forever inet6 fe80::e60:76ff:fe64:c59d/64 scope link valid_lft forever preferred_lft forever 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 2e:47:f7:fc:f2:fb brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 

虚拟机:

1 – configuration了两个NIC的Debian 6 amd64(一个用于通过HOST访问我的家庭networking,另一个用于内部虚拟机10.0.2 / 24子网)

这里是启动命令(我已经改变了默认的QEMU用户networkingconfiguration,以反映我的家庭networking和redirect的主机端口2222访问端口22-ssh在客人)

 qemu-system-x86_64 -cpu host -enable-kvm --name Debian6-amd64 -hda VMs/Debian6/sda.img -hdb VMs/Debian6/sdb.img -net nic,vlan=1 -net user,vlan=1,hostfwd=tcp::2222-:22,net=10.0.0.0/24,dhcpstart=10.0.0.7 -net nic,vlan=2,macaddr=52:54:00:00:02:01 -net socket,vlan=2,listen=localhost:1234 -m 512 -boot c -nographic 

这里是接口configuration:

 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff inet 10.0.0.7/24 brd 10.0.0.255 scope global eth0 inet6 fe80::5054:ff:fe12:3456/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:00:02:01 brd ff:ff:ff:ff:ff:ff inet 10.0.2.1/24 brd 10.0.2.255 scope global eth1 inet6 fe80::5054:ff:fe00:201/64 scope link valid_lft forever preferred_lft forever 

2 – configuration了一个NIC的Debian 7 amd64(内部10.0.2 / 24子网)

启动命令:

 qemu-system-x86_64 -cpu host -enable-kvm --name Debian7-amd64 -hda VMs/Debian7/sda.img -hdb VMs/Debian7/sdb.img -net nic,vlan=2,macaddr=52:54:00:00:02:02 -net socket,vlan=2,connect=localhost:1234 -m 512 -boot c -nographic 

和接口configuration

 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:00:02:02 brd ff:ff:ff:ff:ff:ff inet 10.0.2.2/24 brd 10.0.2.255 scope global eth0 inet6 fe80::5054:ff:fe00:202/64 scope link valid_lft forever preferred_lft forever 

3 – configuration了一个NIC的CentOS 6 x86-64(内部10.0.2 / 24子网)

启动命令:

 qemu-system-x86_64 -cpu host -enable-kvm --name CentOS6-x86_64 -hda VMs/CentOS6/sda.img -hdb VMs/CentOS6/sdb.img -net nic,vlan=2,macaddr=52:54:00:00:02:03 -net socket,vlan=2,connect=localhost:1234 -m 512 -boot c -nographic 

和接口configuration

 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:00:02:03 brd ff:ff:ff:ff:ff:ff inet 10.0.2.3/24 brd 10.0.2.255 scope global eth0 inet6 fe80::5054:ff:fe00:203/64 scope link valid_lft forever preferred_lft forever 

Debian6虚拟机是否configuration为转发IP数据包?

你是否在另外两台虚拟机上configuration了指向虚拟机Debian 6的默认路由?

如果是的话,你可以尝试改变内部LAN到10.xxx以外的另一个主要子网,即192.168.1.x / 24?

在使用新的内部子网之后,您将需要在指向Debian6虚拟机的Internet路由器上configuration到内部子网192.168.1.x的路由。