Kvm 虚拟化技术中,网络访问方式分为三种,分别是:
(1)虚拟网络'default':NAT (默认方式,支持虚拟机上网但不支持互访)
(2)主机设备 vnet0(根据实际情况而定):macvtap (支持互访)
(3)主机设备 vnet0 (桥接'br0') (bridge 方式,使虚拟机成为网络中具有独立IP的主机)
推荐采用 bridge 方式,要采用 bridge 方式,需要在宿主机网络上建立一个桥接器.
①启动kvm虚拟机,会多出一个vnet0网络设备,这是虚拟机启动后生成的。
查看:ifconfig
②kvm虚拟机启动后,vnet0默认桥接到了virbr0上,关闭后消失。
查看:brctl show
关机:virsh shutdown CentOS-7-x86_64
再查看:brctl show
③此时的kvm虚拟机出去的流量是桥接到virbr0上,然后经过宿主机的iptables的nat,再经过eth0出去。
这有网络瓶颈,而且依靠iptables,如果你把iptables关闭无法上网了。同时ip地址是地址池中分配的内网地址。
查看:iptables -t nat -vnL
④kvm获取的地址来源于下面。
ps aux | grep dns
cat /var/lib/libvirt/dnsmasq/default.conf
⑤生产中,网络的配置如下:
一般是添加一个网络设备桥,把宿主机的网卡桥接到这上面。
删除原先宿主机的IP地址,把宿主机的地址配置到这个网络设备桥上。
最后修改kvm配置文件,让kvm也桥接到这个网络设备桥上。
【命令配置】
1,查看网桥:brctl show
2,重新添加网桥:brctl addbr br0
3,查看网桥:brctl show
⑥下面操作过程中会断网。可以写成脚本形式执行。
1,创建脚本edit-net.sh,如下:
brctl addif br0 eth0
ip addr del dev eth0 192.168.145.133/24
ifconfig br0 192.168.145.133/24 up
route add default gw 192.168.145.2
2,可以看到eth0上就没有ip地址了,同时eth0桥接到了br0上了。
查看:brctl show
查看:ifconfig
【对于既存的虚拟机,修改为桥接的方法如下:】
虚拟机配置文件(.xml)的路径:cd /etc/libvirt/qemu
3,修改虚拟机的配置文件,把kvm也桥接到br0上。
★interface这里原先配置如下:
<interface type='network'>
<mac address='52:54:00:83:f7:a0'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
★修改配置如下:
修改命令:virsh edit CentOS-7-x86_64
<interface type='bridge'>
<mac address='52:54:00:83:f7:a0'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
4,此时,查看kvm虚拟机,可以看到IP已经和主机同一网段了。
-----------------------------------------------
●【修改桥接为永久生效】
上述桥接操作,让宿主机的eth0桥接到br0上是临时生效的,重启宿主机,就失效了。
★brctl命令来自于下面包:
①which brctl
显示:/usr/sbin/brctl
②查询包名:rpm -qf /usr/sbin/brctl
bridge-utils-1.5-9.el7.x86_64
③创建了一个ifcfg-br0文件,然后更改eth0的配置文件,桥接上去。
配置完成后,重启主机。
【手动配置】//不用上面命令配置法,直接执行手动配置法更方便。
★ ifcfg-eth0的配置文件如下:
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
★ ifcfg-br0的配置文件如下:
TYPE=Bridge
BOOTPROTO=static
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.145.133
NETMASK=255.255.255.0
GATEWAY=192.168.145.2
NAME=br0
-----------------------------------------------
------山的那一边