Network filtering XML部署在KVM Server上可以实现:虚拟网络隔离、入侵防护、批量管理等功能。Openstack的网络控制就是基于Networkl filter。
首先是libvirt定义网络过滤规则的相关命令:
virsh nwfilter-define
后面加上一个xml文件,从一个XML文件中定义或者更新一个网络过滤规则。
virsh nwfilter-dumpxml
后面加上某个网络过滤规则的名称,查看一个网络规则的XML详细信息。
virsh nwfilter-edit
后面加上某个网络过滤规则的名称,编辑一个网络规则。
virsh nwfilter-list
列出所有定义成功的网络过滤规则。
virsh nwfilter-undefine
后面加上一个网络过滤规则的名称,须消该网络过滤规则。
注意:定义网络过滤规则可以无视客户机的状态,并且可以及时生效,即使在客户机活跃的情况下。
限制虚拟机上外网实例:
1.在虚拟机xml文件中添加 netfilter 名字 limit-internet ,启动虚拟机,外网访问正常。
<interface type='bridge'> <mac address='52:54:00:08:b2:82'/> <source bridge='br0'/> <model type='virtio'/> <filterref filter='limit-internet'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>2.定义netfilter ,发现虚拟机外网访问立即断掉
virsh nwfilter-define limit-internet.xml
<filter name='limit-internet' chain='ipv4'> <uuid>fce8ae34-e69e-83bf-262e-30786c1f8073</uuid> <rule action='accept' direction='out' priority='100'> <ip protocol='udp' srcportstart='67' srcportend='68' dstportstart='67' dstportend='68'/> </rule> <rule action='accept' direction='in' priority='100'> <ip protocol='udp' srcportstart='67' srcportend='68' dstportstart='67' dstportend='68'/> </rule> <rule action='drop' direction='out' priority='200'> <ip match='no' dstipaddr='$GATEWAYIP' dstipmask='255.255.255.0'/> </rule> </filter>3.重新定义 netfilter ,虚拟机外网访问立即恢复正常
virsh nwfilter-define limit-internet-cancer.xml
<filter name='limit-internet' chain='ipv4'> <uuid>fce8ae34-e69e-83bf-262e-30786c1f8073</uuid> <rule action='accept' direction='out' priority='100'> </rule> </filter>