KVM学习笔记(虚拟网络,网桥、虚拟机网卡、网卡绑定、VLAN、网络过滤)
1、qemu-kvm支持的网络
虚拟机的网络模式
- 基于NAT的虚拟网络(默认的模式)
- 基于网桥(bridge)的虚拟网络
- 用户自定义的隔离的网络
- 直接分配的网络设备(包括VT-d和SR-IOV)
在/etc/libvirt/qemu/networks/目录下有虚拟网络的配置文件
/etc/libvirt/qemu/networks/autostart目录下是软链接,软链接链接的网络会自动启动
virsh net-list可以列出所有虚拟网络,virsh net-info可以查看虚拟网络粗略信息
virsh net-list可以列出所有虚拟网络,virsh net-info可以查看虚拟网络粗略信息
直接通过命令行添加
virsh attach-interface <domain> <type> <source>
参数解释
domain 虚拟机名字
type 接口的类型,网卡是'network'
source 连接到哪个虚拟网络,'default'是NAT模式的网络
查看虚拟机网卡信息
virsh domiflist <domain>
virsh domifaddr <domain>
virsh domifstat <domain> <interface>
检查是否安装了bridge模块
modprobe --first-time bridge
brctl show
4、配置网卡绑定
bonding的七种工作模式:
bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有各自的优缺点.
bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有各自的优缺点.
- balance-rr (mode=0) 默认, 有高可用 (容错) 和负载均衡的功能, 需要交换机的配置,每块网卡轮询发包 (流量分发比较均衡).
- active-backup (mode=1) 只有高可用 (容错) 功能, 不需要交换机配置, 这种模式只有一块网卡工作, 对外只有一个mac地址。缺点是端口利用率比较低
- balance-xor (mode=2) 不常用
- broadcast (mode=3) 不常用
- 802.3ad (mode=4) IEEE 802.3ad 动态链路聚合,需要交换机配置
- balance-tlb (mode=5) 不常用
- balance-alb (mode=6) 有高可用 ( 容错 )和负载均衡的功能,不需要交换机配置 (流量分发到每个接口不是特别均衡)。
配置部分
加载bonding模块
modprobe bonding
在/etc/sysconfig/network-scripts/文件夹下创建bond配置文件,下图是将bond0添加到网桥virbr1的场景。cat /proc/net/bonding/bond0
5、VLAN配置
KVM下的VLAN配置。
基于物理机上行口创建VLAN子接口,本例中为VLAN11和VLAN12,在物理机中创建不同的Linux Bridge,不同的Bridge插入不同的VLAN接口作为上行接口。
创建VLAN子接口,开启接口收发VLAN功能。
配置文件的命名格式为物理接口.VLAN ID的格式(如:ifcfg-ens36.11),需要多少个VLAN就配置多少个VLAN子接口文件,详细配置文件如下:
使用virsh nwfilter命令类来进行配置,nwfilter底层是基于Linux的ebtables来进行实现的。
- root
- mac
- stp
- vlan
- arp、rarp
- ipv4
- ipv6
rule需要挂载到一个chain上,既可以是root,也可以是其他chain。其他chain是挂载到root上的。
priority
chain和rule都有priority属性,数字越小越优先。
- rule靠优先级与同一chain上的其他rule做排序。
- 非root的chain靠优先级与其他chain做排序。
- root上的rule和chain是并列关系,靠优先级做混合排序。
uuid
唯一的,由libvirt自动生成,不需要关注。
rule
action
必选项。可以选择以下几种:
必选项。可以选择以下几种:
- drop
直接丢弃数据包。 - reject
丢弃数据包并生成一个ICMP消息。 - accept
接收该数据包并跳过其他所有chain和rule。 - return
跳过当前chain上的其他过滤器,并返回到root上继续检查后续chain或rule。如果当前位于root,则接收该数据包。 - continue
不产生影响,可以用于计数。
必选项。可以选择以下几种:
- in
进入虚拟机的数据包。 - out
虚拟机发出的数据包。 - inout
双向数据包。
rule的优先级。
filterref
该元素代表了对另一个nwfilter的引用。其中只有一个属性filter,值为引用的另一个nwfilter的name。被引用的nwfilter中rule所属的chain不做变动,与引用者的chain无关。
例子:
将自定义的nwfilter添加到KVM中
virsh nwfilter-define <file>
7、给虚拟机添加nwfilter
更新虚拟机配置文件XML文件中interface字段,可以自己写一个只包含interface字段的xml文件,如下图。
使用命令update-device来更新虚拟机配置
virsh update-device <domain> <file> [--persistent] [--config] [--live] [--current] [--force]
如果需要编辑虚拟机的配置,使用virsh edit <domain> 来在线编辑。编辑后及时生效。
评论
发表评论