Fedoara 14和RHEL 6[kvm]中为虚拟化提供了3种配置支持,1. Network Address Translation [NAT]2. 直接分配物理设备 [PCI passthrough or SR-IOV]3. 共享物理设备[Bridge]
其中NAT是默认开启的,如果要想外网能访问虚拟机多使用直接分配物理设备或者桥接网络。
NAT:几乎所有标准的libvirt都支持NAT作为虚拟网络[default virtual network],virsh net-list –all 可以查看
# virsh net-list –allName State Autostart—————————————–default active yes
如果相应的xml配置文件丢失,可以从模板中提取:
# virsh net-define /usr/share/libvirt/networks/default.xml
然后将虚拟网络标识为自动启动:
# virsh net-autostart default# virsh net-start default
查看桥接情况,virbr0 通过NAT和IP转发与实体网络连通,不添加其它接口。
# brctl showbridge name bridge id STP enabled interfacesvirbr0 8000.000000000000 yes
一般情况下libvirt会自动添加一些规则到iptables,并尝试打开ip_forward功能,但其它应用程序可能会禁止ip_forward,,所以最好在/etc/sysctl.conf中添加一项:
net.ipv4.ip_forward = 1
Briged:一般用于多网卡机器上,NetworkManager不支持桥接,所以需要关闭NetworkManager服务,或者在网络设备的配置文件中添加一选项’NM_CONTROLLED=no’参数
# vim /etc/sysconfig/network-scripts/ifcft-eth0
DEVICE=eth0HWADDR=00:16:76:D6:C9:45ONBOOT=yesBRIDGE=br0
添加br0配置
DEVICE=br0ONBOOT=yesTYPE=BridgeBOOTPROTO=dhcpDELAY=0
重启网络服务
service network restart
brctl查看
# brctl showbridge name bridge id STP enabled interfacesbr0 8000.f0def1341ae6 no eth0virbr0 8000.000000000000 yes
配置iptables,允许桥接网络的流量转发[用到physdev模块]
# iptables -I FORWARD -m physdev –physdev-is-bridged -j ACCEPT
配置以下内核参数也可以实现:
net.bridge.bridge-nf-call-ip6tables = 0net.bridge.bridge-nf-call-iptables = 0net.bridge.bridge-nf-call-arptables = 0
问候不一定要慎重其事,但一定要真诚感人