为了测试目的,我想在单个主机 (Fedora 19) 上设置一个简单的 KVM/QEMU 客户虚拟机子网。该子网将包含 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)连接到 WAN 网络并作为其余虚拟机的网关/路由器。
我目前正在尝试基于此处描述的设置:
http://csortu.blogspot.com/2009/12/building-virtual-network-with-qemu.html
但是,目前,似乎无法为除 #1 之外的其他虚拟机提供 WAN 连接。
我有两个问题:1. 有没有更简单的解决方案?2. (如果没有)我如何使用虚拟机 #1 作为网关让其他虚拟机与外界连接。
我可能应该提一下,所有虚拟机都相互连接,但 WAN 访问仅在 #1 上可用。
编辑:根据要求,这是完整的网络配置。
主机:Fedora 19 x86-64 直接连接到我家路由器(10.0.0.1)上的 10.0.0/24 网络(仅打印相关接口)
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-Debian 6 amd64 配置了两个 NIC(一个用于通过 HOST 访问我的家庭网络,另一个用于内部、仅限 VM 的 10.0.2/24 子网)
这是启动命令(我已将默认的 QEMU 用户网络配置更改为反映我的家庭网络,并将 HOST 端口 2222 重定向到 GUEST 上的端口 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
以下是接口配置:
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 - 配置了一个 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
以及接口配置
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-CentOS 6 x86-64,配置了一个 NIC(内部 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
以及接口配置
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
答案1
Debian6 VM 是否配置为转发 IP 数据包?
您是否已在指向 VM Debian 6 的其他 2 个 VM 上配置了默认路由?
如果是,您可以尝试将内部局域网更改为 10.xxx 以外的另一个主要子网,即 192.168.1.x/24 吗?
使用新的内部子网后,您需要在指向 Debian6 VM 的互联网路由器上配置到内部子网 192.168.1.x 的路由。