作者:郑子宜4262 | 来源:互联网 | 2014-05-27 21:08
网上关于这种网络的配置方式很少,大多都是介绍桥接方式的。也许是这种网络配置很少出现问题的原因?可是偏偏在我这老是有问题。就是guest可以pingHOST,但是不能访问网络上的其他主机。最后终于找到为什么在我的机器上总是失败的原因了。那就是问题出在了ipt
网上关于这种网络的配置方式很少,大多都是介绍桥接方式的。也许是这种网络配置很少出现问题的原因?可是偏偏在我这老是有问题。就是guest可以ping
HOST,但是不能访问网络上的其他主机。最后终于找到为什么在我的机器上总是失败的原因了。那就是问题出在了iptable上关于NAT的配置上,因为我的IPTABLE被我清空了,所有没有NAT功能了。
环境介绍:
HOST是FC11, GUEST是RHEL5.4。虚拟机可以用系统自带的virt manager
或者virt-install安装。默认的网络配置是default
network。HOST和GUEST的IP获得方式都是DHCP。
1.在HOST上用ifconfig确认virbr0存在。
virbr0是在在安装libvirt套件的时候自动创建的虚拟接口。它是个桥,用来连接guest与外部的,不需要手动为他加入任何的网卡接口。他具有NAT+DHCP功能.2.启动GUEST后,确认在
virbr0中显示专门为虚拟机服务的虚拟网卡vnetx,如果有多个guest,那么就对应的有多个vnetx.
启动GUSET前:
[root@localhost ~]# brctl show
bridge name
bridge id STP
enabled interfaces
pan0 8000.000000000000 no
virbr0 8000.000000000000 yes
启动GUEST后:
[root@localhost ~]# brctl show
bridge name bridge id STP
enabled interfaces
pan0 8000.000000000000 no
virbr0 8000.f205a89720e2 yes vnet0
3. 确认iptable关于NAT的配置无误。
[root@localhost ~]# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 16924 packets, 2759K bytes)
pkts bytes
target prot opt
in
out
source
destination
Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
pkts bytes
target prot opt
in
out
source
destination
421 31847 MASQUERADE all
--
*
*
192.168.122.0/24
!192.168.122.0/24
----------->这条是关键,它配置了NAT功能。
Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
pkts bytes
target prot opt
in
out
source
destination
[root@localhost ~]# iptables -t filter -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes
target prot opt
in
out
source
destination
1 74
ACCEPT udp
-- virbr0
*
0.0.0.0/0
0.0.0.0/0
udp dpt:53
---->由libvirt脚本自动写入
0 0
ACCEPT tcp
-- virbr0
*