libvirt网络过滤规则:禁止客户机(bridge方式)连接外网,libvirtbridge


首先是libvirt定义网络过滤规则的相关命令:

virsh nwfilter-define 

后面加上一个xml文件,从一个XML文件中定义或者更新一个网络过滤规则。

virsh nwfilter-dumpxml 

后面加上某个网络过滤规则的名称,查看一个网络规则的XML详细信息。

virsh nwfilter-edit 

后面加上某个网络过滤规则的名称,编辑一个网络规则。

virsh nwfilter-list

列出所有定义成功的网络过滤规则。

virsh nwfilter-undefine

后面加上一个网络过滤规则的名称,须消该网络过滤规则。


注意:定义网络过滤规则可以无视客户机的状态,并且可以及时生效,即使在客户机活跃的情况下。


禁止客户机使用外网时的xml文件内容:
<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



相关内容