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 参考资料

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

  1. virsh 网络设置_KVM虚拟机网络配置

    Redhat网卡配置是放在/etc/sysconfig/network-scripts目录下面的一大堆文件里面,修改网络时需要依次修改. Debian系的则是存在/etc/network/interf ...

  2. virsh 网络设置_KVM中的宿主机网络配置

    Kvm 虚拟化技术中,网络访问方式分为三种,分别是: (1)虚拟网络'default':NAT  (默认方式,支持虚拟机上网但不支持互访) (2)主机设备  vnet0(根据实际情况而定):macvt ...

  3. 将socket设置为非阻塞(non-blocking) - 艾子的日志 - 网易博客

    将socket设置为非阻塞(non-blocking) - 艾子的日志 - 网易博客 将socket设置为非阻塞(non-blocking) 2011-02-17 22:36:51|  分类: 默认分 ...

  4. virsh 网络设置_KVM-virsh 创建虚拟网络

    创建网络 创建配置文件 vim /etc/libvirt/qemu/networks/nfsnobody.xml #创建一个名为nfsnobody的虚拟网络 nfsnobody #nfsnobody为 ...

  5. 51php绑定多个域名,设置Wordpress站点绑定多域名访问 - Mr.bin的博客

    WordPress博客程序使用人群非常多,关于WordPress博客的优化.美化插件也是海量,就连一些使用巧.使用心得网络中分享的文章也比比皆是,其实这也是大家喜欢使用WordPress来搭建个人博客 ...

  6. C#网络编程(基本概念和操作) - Part.1[转自JimmyZhang博客]

    引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学习的朋友提供一些帮助.如果想要更加深入的内容,可以参考相关书籍 ...

  7. 常用分辨率设置,RGB与CMYK_几何途行_新浪博客

    常用分辨率设置:​ 洗印照片:     300像素/英寸以上 印刷物( 杂志,名片等 ):    300像素/英寸 海报:       96-200像素/英寸 电子设备显示(网络图片,网页界面):   ...

  8. oracle设置会计科目管理器,系列之四:ORACLE EBS基础设置要点简介(E) - season的日志 - 网易博客...

    ORACLE EBS 基础设置要点简介 九.结语 (注:网站批量发图有问题,上传后显示不清楚.点击图片打开后,质量尚可. 七.工作流 系统关于工作流的设置工作包含两部分工作,一是基于企业的特殊需要,使 ...

  9. android+如何设置单屏壁纸,安卓手机如何设置全屏壁纸,再也不用为设置壁纸裁剪图片而烦恼【赖崇飞博客】...

    小编文笔不好,还望见谅 小编使用的手机是华为 C8650,屏幕分辨率:480x320,安卓2.33,已获取root权限(与本教程无关) 小编之前使用安卓手机发现安卓机设置壁纸要时要裁剪自己心爱的图片, ...

最新文章

  1. c++ 虚函数_到底什么情况下会合成默认构造函数?
  2. ML:机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率)
  3. Ansible中的角色使用
  4. 自动化设计模式Page Object
  5. vue计算多列和_解决vue 表格table列求和的问题
  6. Confluence 6 为空白空间编辑默认主页
  7. java 中 image 和 byte[] 相互转换
  8. 计算机单元格的引用计算,计算机应用 单元格的引用 单元格的引用.pptx
  9. 手机号正则表达式验证_还不会正则表达式?看这篇!
  10. 苹果“修复”系统过于流畅的BUG遭到制裁,被罚款近2亿!网友:罚少了!
  11. Oracle 10g 用户数及价格
  12. 盘口的买一是卖股票还是买股票?
  13. 小数变百分数_小数除法三要“点”
  14. 【操作系统】进程管理(二)
  15. 论文笔记_CV_AD_3D Reconstruction using a Sparse Laser Scanner and a Single Camera for Outdoor Autonomous
  16. music 算法 c语言,频率估计方法——MUSIC和ROOT-MUSIC算法(附代码)
  17. [BZOJ 5339] 教科书般的亵渎
  18. 1.7 爬取汽车之家实战
  19. ArcGIS API For JavaScript官方文档之Dojo
  20. 堂堂985毕业就失业,我用3000块买大厂Offer

热门文章

  1. bootstrap 树形表格渲染慢_bootstrap table轻松实现数据表格
  2. 计算机模拟人工录入,用计算机模拟交互式输入代替人工进行流程录入
  3. linux 进程组id 错乱,【Linux】终端,进程组,作业,会话及作业控制
  4. 5 zabbix 添加host_Zabbix 快速上手——添加 Agent 主机
  5. AI+药物研发:人工智能赋能新药研发(人工智能应用案例)
  6. 让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性
  7. php 睡眠,php输出与sleep()
  8. 网络层常见知识点剖析
  9. NOIP模拟测试8「匹配·回家」
  10. 04_传智播客iOS视频教程_类是以Class对象存储在代码段