54:
00:
da:
c3:
dc'/>
虚拟机启动后,验证网络接口是否正常:
#brctlshow
bridgenamebridgeidSTPenabledinterfaces
br08000.4437e64a62adnoeth0
vnet0
NAT方式的影响
网桥方式的配置与虚拟机支持模块安装时预置的虚拟网络桥接接口virbr0没有任何关系,配置网桥方式时,可以把virbr0接口〔即NAT方式里面的default虚拟网络〕删除。
#virshnet-destroydefault
#virshnet-undefinedefault
#servicelibvirtdrestart
NAT模式
问题
客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信。
事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接。
KVM客户机网络连接有两种方式:
∙用户网络〔UserNetworking〕:
让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。
NAT方式。
∙虚拟网桥〔VirtualBridge〕:
这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。
Bridge方式。
本文主要解释NAT方式的配置。
NAT方式原理
NAT方式是kvm安装后的默认方式。
它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
检查当前的网络设置:
#virshnet-list--all
NameStateAutostart
-----------------------------------------
defaultactiveyes
default是宿主机安装虚拟机支持模块的时候自动安装的。
检查当前的网络接口:
#ifconfig
eth0Linkencap:
EthernetHWaddr44:
37:
E6:
4A:
62:
AD
inet6addr:
fe80:
:
4637:
e6ff:
fe4a:
62ad/64Scope:
Link
UPBROADCASTRUNNINGMULTICASTMTU:
1500Metric:
1
RXpackets:
987782errors:
0dropped:
0overruns:
0frame:
0
TXpackets:
84155errors:
0dropped:
0overruns:
0carrier:
0
collisions:
0txqueuelen:
1000
RXbytes:
109919111(104.8MiB)TXbytes:
12695454(12.1MiB)
Interrupt:
17
loLinkencap:
LocalLoopback
inet6addr:
:
:
1/128Scope:
Host
UPLOOPBACKRUNNINGMTU:
16436Metric:
1
RXpackets:
4errors:
0dropped:
0overruns:
0frame:
0
TXpackets:
4errors:
0dropped:
0overruns:
0carrier:
0
collisions:
0txqueuelen:
0
RXbytes:
240(240.0b)TXbytes:
240(240.0b)
virbr0Linkencap:
EthernetHWaddr52:
54:
00:
B9:
B0:
96
UPBROADCASTRUNNINGMULTICASTMTU:
1500Metric:
1
RXpackets:
0errors:
0dropped:
0overruns:
0frame:
0
TXpackets:
2126errors:
0dropped:
0overruns:
0carrier:
0
collisions:
0txqueuelen:
0
RXbytes:
0(0.0b)TXbytes:
100387(98.0KiB)
virbr0-nicLinkencap:
EthernetHWaddr52:
54:
00:
B9:
B0:
96
BROADCASTMULTICASTMTU:
1500Metric:
1
RXpackets:
0errors:
0dropped:
0overruns:
0frame:
0
TXpackets:
0errors:
0dropped:
0overruns:
0carrier:
0
collisions:
0txqueuelen:
500
RXbytes:
0(0.0b)TXbytes:
0(0.0b)
其中virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接口,也是一个switch和bridge,负责把内容分发到各虚拟机。
几个虚拟机管理模块产生的接口关系如下列图:
从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机。
virbr0是一个桥接器,接收所有到网络192.168.122.*的内容。
从下面命令可以验证:
#brctlshow
bridgenamebridgeidSTPenabledinterfaces
virbr08000.525400b9b096yesvirbr0-nic
#route
KernelIProutingtable
DestinationGatewayGenmaskFlagsMetricRefUseIface
192.168.122.0*255.255.255.0U000virbr0
同时,虚拟机支持模块会修改iptables规那么,通过命令可以查看:
#iptables-tnat-L-nv
ChainPREROUTING(policyACCEPT16924packets,2759Kbytes)
pktsbytestargetprotoptinoutsourcedestination
ChainPOSTROUTING(policyACCEPT2021packets,125Kbytes)
pktsbytestargetprotoptinoutsourcedestination
42131847MASQUERADEall--**192.168.122.0/24!
192.168.122.0/24----------->这条是关键,它配置了NAT功能。
ChainOUTPUT(policyACCEPT2021packets,125Kbytes)
pktsbytestargetprotoptinoutsourcedestination
#iptables-tfilter-L-nv
ChainINPUT(policyACCEPT0packets,0bytes)
pktsbytestargetprotoptinoutsourcedestination
174ACCEPTudp--virbr0*0.0.0.0/00.0.0.0/0udpdpt:
53---->由libvirt脚本自动写入
00ACCEPTtcp--virbr0*0.0.0.0/00.0.0.0/0tcpdpt:
53---->由libvirt脚本自动写入
3984ACCEPTudp--virbr0*0.0.0.0/00.0.0.0/0udpdpt:
67---->由libvirt脚本自动写入
00ACCEPTtcp--v