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
-----------------------------------------------