virsh 网络设置_KVM使用Network Filters进行虚拟机网络管理 | leon的博客

本文介绍了KVM中使用virsh和Network Filters进行虚拟机网络管理的方法,包括网络过滤规则的配置、实现原理、相关命令以及如何编写和应用过滤规则,以实现虚拟网络隔离和访问控制。
摘要由CSDN通过智能技术生成

1.1 Network Filters介绍

Network filtering XML为虚拟化系统管理员提供了一种网络流量的过滤规则,系统管理员可以通过配置过滤参数实施和管理对虚拟机网络流量的接受和转发,由于过滤规则不能绕过直接进入虚拟机内,使得一个filter对虚拟用户的访问控制具有强制性。

Network filtering 子系统允许每一个虚拟机的网络过滤表可以被单独配置,我们可以在启动时配置虚拟机的访问控制过滤表,也可以在虚拟器运行时对虚拟机的规则进行修改,后者可以通过修改network filter XML的方式进行。

Libvirt 允许多台虚拟机共用一个,当filter被修改时所有运行的虚拟机都会自动更新filter的过滤规则。

Network filtering XML部署在KVM Server上可以实现:虚拟网络隔离、入侵防护、批量管理等功能,Openstack的网络控制就是基于Networkl filter。

1.2 实现原理

chain类型:所有过滤规则都被组织到一个过滤链中,数据包经过这些过滤链被选择进入虚拟机或是DROP掉,链都有不同的优先级,root链的优先级最高。所有的数据包必须先经过root链后才可能继续到其他过滤规则中匹配。

priority优先级的设定:所有链都被连接到root链中,优先级的值越小,优先级越高,用户可以定义自己的优先级数值,取值范围(100,1000)下边是官方提供的默认优先级:

1.3 过滤规则语法

1.3.1 示例规则

[root@KVM ~]# virsh nwfilter-dumpxml no-ip-spoofing

f1f35512-7ef2-46f9-8c29-2b59f2905d69

1.3.2 filte字段

name:唯一,指定filter的名称,后面引用时使用

chain:指定链类型,目前已经存在的链有:

root

mac (since 0.9.8)

stp (spanning tree protocol) (since 0.9.8)

vlan (802.1Q) (since 0.9.8)

arp, rarp

ipv4

ipv6

priority:指定优先级

uuid:唯一值

rule:指定规则具体内容

1.3.3 rule规则

action:必选项,指定动作:drop,reject,accept,return,continue

direction:必选项,传入:in,传出:out,传入和传出:inout

priority:可选项,优先级

statematch:可选的,默认是true,即开启匹配的底层连接状态,0或false关闭

内容:根据选择的链不同,使用不同的参数规则匹配,具体参见官方文档

1.4 相关命令

1.4.1 查看过滤规则

[root@KVM ~]# virsh nwfilter-list

UUID                                  Name

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

efd8cd06-e22d-4916-92cb-2f40e4dcbe22  allow-arp

bc4e01e3-c972-4bf7-b380-c261138d142d  allow-dhcp

25392b41-bda1-47c5-9473-8c0f6f2711c9  allow-dhcp-server

b7d7f239-ed03-4810-bb29-ad1877ef2487  allow-incoming-ipv4

fd4b35db-23ad-46c2-8fc4-0b883cdc3d7f  allow-ipv4

eb60ceeb-ffbb-413d-ac35-291fab167484  clean-traffic

ba723fc5-970b-404e-997a-3fd186af4a1a  clean-traffic-gateway

cdbcdf81-9e2b-4480-861b-6b1577e57546  no-arp-ip-spoofing

010f7cfd-c8e9-4ace-8841-436428b03ada  no-arp-mac-spoofing

c9fb871f-23e2-4358-96ec-c287a4b5c50d  no-arp-spoofing

97cf25e0-6d2a-498e-9c8a-dfffeec5b88e  no-ip-multicast

f1f35512-7ef2-46f9-8c29-2b59f2905d69  no-ip-spoofing

67154bef-f80e-4889-9288-c2a68972d244  no-mac-broadcast

d4a91993-299b-460f-a094-5194d5ed4071  no-mac-spoofing

eacd541b-6e64-477f-bfe2-8e6ec815fea1  no-other-l2-traffic

1b2bf173-2d26-45eb-bf93-a2bd808c88ad  no-other-rarp-traffic

26efad9c-d18b-490d-aeba-9b8df5e9aaa4  qemu-announce-self

f89283ba-4fc0-4682-a200-77ad87a0be8c  qemu-announce-self-rarp

1.4.2 定义过滤规则

[root@KVM ~]# virsh nwfilter-define 规则名称

1.4.3 编辑过滤规则

[root@KVM ~]# virsh nwfilter-edit 规则名称

1.4.4 查看规则具体内容

[root@KVM ~]# virsh nwfilter-dumpxml 规则名称

1.4.5 删除过滤规则

[root@KVM ~]# virsh nwfilter-undefine 规则名称

1.4.6 查看系统有没有生效的规则

[root@KVM ~]# ebtables -t nat -L

1.4.7 使规则立即生效

[root@KVM ~]# virsh update-device 虚拟机名称 规则名称

1.5 编写自己的过滤规则(禁止tpot访问局域网其他服务器)

1.5.1 编写规则文件

[root@KVM ~]# vim /etc/libvirt/nwfilter/tpot.xml

a37a0fc1-2926-4f83-beb9-681d942f7027

【规则说明】:

name='tpot':规则名称为tpot

chain='ipv4':使用ipv4链进行过滤

action='drop' direction='out':出方向禁止规则

match='yes':匹配时执行action过滤规则;或者设置为no,不匹配时执行action

dstipaddr='$IP:目标IP地址,匹配地址为参数形式,后面在引用的时候定义

dstipmask='255.255.255.0':目标IP子网掩码

提示:KVM过滤规则默认保存位置:/etc/libvirt/nwfilter/

1.5.2 定义规则

[root@KVM ~]# virsh nwfilter-define /etc/libvirt/nwfilter/tpot.xml

1.5.3 引用规则

[root@KVM ~]# virsh edit Debian-Tpot

1.5.4 启动虚拟机

[root@KVM ~]# virsh start Debian-Tpot

1.5.5 *查看定义后的过滤规则

[root@KVM ~]# virsh nwfilter-dumpxml tpot

a37a0fc1-2926-4f83-beb9-681d942f7027

1.5.6 *查看生效规则

[root@KVM ~]# ebtables -t nat -L

Bridge table: nat

Bridge chain: PREROUTING, entries: 1, policy: ACCEPT

-i vnet35 -j libvirt-I-vnet35

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

Bridge chain: POSTROUTING, entries: 0, policy: ACCEPT

Bridge chain: libvirt-I-vnet35, entries: 1, policy: ACCEPT

-p IPv4 -j I-vnet35-ipv4

Bridge chain: I-vnet35-ipv4, entries: 3, policy: ACCEPT

-p IPv4 --ip-dst 192.168.1.0/24 -j DROP

1.6 参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值