kvm网络模式
Posted lriwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kvm网络模式相关的知识,希望对你有一定的参考价值。
隔离模型
隔离模型中在物理机上添加一个虚拟网卡并将该虚拟网卡后半段关联至网桥,只要虚拟机中网卡和该虚拟网卡后半段IP地址设置成同一个网段,guest1和guest2和物理机的虚拟网卡就能够通信了,但是还是无法与物理机之外的网络通信。可以将guest的网关指向物理机虚拟网卡的地址,并且在物理机上打开核心转发功能,guest就能够实现与外部网络进行通信。
这样存在一个问题:guest收不到外部网络回应的报文,路由模型需要在外部网络中为guest网段添加回程路由,这样会相当麻烦。即路由模型可以与外部网路进行通信了,但是无法作为通信目标使用。
为了解决路由模型中存在的问题,在物理主机上添加一个nat server,所有来自内部的报文通过物理网卡出去之前都将源地址转化成物理网卡的地址,所有的回应报文也都将回应给物理网卡,物理网卡由nat会话表再将物理网卡的地址转化回内部主机的地址。
桥接即在物理机上创建一个网桥并关联物理网卡至网桥,一旦将网卡设置为网桥可以将物理网卡看成是一台交换机,同时也会在物理机上为该物理网卡创建一个虚拟网卡(br0)并将物理网卡原本使用的MAC地址放至br0,同时物理网卡打开混杂模式(不管报文的目标mac地址是不是自身,该网卡将报文全部接收)。这样所有guest通过eth*发往vnet*的报文直接发往该网桥,而网桥有上关联了物理网卡,从而来自guest的报文直接从物理网卡发出;当网卡收到回应报文时,因为开启了混杂模式会接收所有的报文,报文目标MAC如果是的物理网卡就会将回应报文转交给br0,报文目标MAC如果是虚拟机就会将回应报文转虚拟机对应的网卡。(即物理网卡本身就相当于一个交换机)
依赖的模块:即在内核级别软件模拟一个软交换机,即使用bridge-utils向内核发指令,由内核创建网桥设备,网桥是在内核中实现的。
表现为一个网络接口,使用ifconfig无法查看,原因是br0未激活。
#!/bin/bash # bridge=br0 if [ -n "$1" ];then ip link set $1 up sleep 1 brctl addif $bridge $1 [ $? -eq 0 ] && exit 0 || exit 1 else echo "Error: no interface specified." exit 1 fi
#!/bin/bash # bridge=br0 if [ -n "$1" ];then brctl delif $bridge $1 ip link set $1 down exit 0 else echo "Error: no interface specified." exit 1 fi
#chmod +x /etc/qemu-ifup
#chmod +x /etc/qemu-ifdown
ck -nographic -net nic -net tap,ifname=vif0.0,script=/etc/qemu-ifup
ck -nographic -net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=vif1.0,script=/etc/qemu-ifup
在桥接模型下,需要将物理网卡关联至网桥而且网桥上不能配置地址,再上述的环境中实现要先拆除网桥上配置的地址:
#ip addr del 10.0.100.3/24 dev br0
删除物理网卡上的IP地址;将物理网卡添加至br0上;为br0配置地址(原先eth3的地址配置在br0上):
#ip addr del 192.168.1.230 dev eth3; brctl addif br0 eth3; ip addr add 192.168.1.230 dev br0;
#ifconfig 此时的地址在br0上,物理网卡eth3无地址
#brctl show 网桥上关联了一张物理网卡和两个虚拟机网卡的后半段即虚拟网卡的后半段直接关联至物理网卡
设置虚拟机地址:
虚拟机1:
#ifconfig eth0 192.168.1.67/24
虚拟机2:
#ifconfig eth0 192.168.1.68/24
测试:虚拟机可以直接ping通外部网络
虚拟机1:
#ping 192.168.1.230 通
#ping 192.168.1.25 通
以上是关于kvm网络模式的主要内容,如果未能解决你的问题,请参考以下文章