首先是libvirt定义网络过滤规则的相关命令:
virsh nwfilter-define
后面加上一个xml文件,从一个XML文件中定义或者更新一个网络过滤规则。
virsh nwfilter-dumpxml
后面加上某个网络过滤规则的名称,查看一个网络规则的XML详细信息。
virsh nwfilter-edit
后面加上某个网络过滤规则的名称,编辑一个网络规则。
virsh nwfilter-list
列出所有定义成功的网络过滤规则。
virsh nwfilter-undefine
后面加上一个网络过滤规则的名称,须消该网络过滤规则。
注意:定义网络过滤规则可以无视客户机的状态,并且可以及时生效,即使在客户机活跃的情况下。
<filter name='no-ip-inout' chain='ipv4'> <uuid>fce8ae34-e69e-83bf-262e-30786c1f8072</uuid> <rule action='accept' direction='out' priority='100'> <ip srcipaddr='192.168.x.0' dstipaddr='255.255.255.255' protocol='udp' srcportstart='67' srcportend='67' 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='192.168.x.0' dstipmask='255.255.255.0'/> </rule> </filter>
drop.xml
允许客户机使用外网时的xml文件内容:
<filter name='no-ip-inout' chain='ipv4'> <uuid>fce8ae34-e69e-83bf-262e-30786c1f8072</uuid> <rule action='accept' direction='out' priority='100'> </rule> </filter>
accept.xml
linux和DHCP与UDP相关的端口分别是67和68号端口,定义优先级为100的规则:允许源地址接受DHCP和UDP信息,并且可以发送UDP信息,目的地址也一样。定义优先级为200的规则:丢弃所有发发送到网管的包。通过优先级可以获取到需要的信息,(如DHCP网络的获取),并且限制虚拟机上网,丢弃发送出去的包。
当使客户机禁止使用外网的时候:
virsh nwfilter-define drop.xml
当使客户机可以使用外网的时候:
virsh nwfilter-define accept.xml
当要取消这个网络过滤规则的时候:
virsh nwfilter-undefine no-ip-inout
libvirt网络过滤规则:禁止客户机(bridge方式)连接外网
原文地址:http://blog.csdn.net/jiuzuidongpo/article/details/44750465