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这里原先配置如下:



★修改配置如下:

修改命令:virsh edit CentOS-7-x86_64



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

-----------------------------------------------