18.12. 应用网络过滤
本节介绍了 libvirt 的网络过滤器、目标、概念和 XML 格式。
18.12.1. 简介
网络过滤的目的是使虚拟化系统的管理员能够在虚拟机上配置并强制实施网络流量过滤规则,并管理虚拟机允许发送或接收的网络流量参数。当虚拟机启动时,网络流量过滤规则会应用到主机物理机器上。由于过滤规则不能从虚拟机内部绕过,因此它从虚拟机用户的角度看必须要。
从客户机虚拟机的角度来看,网络过滤系统允许每个虚拟机的网络流量过滤规则单独配置。这些规则在虚拟机启动时应用到主机物理机器,并可在虚拟机运行时进行修改。后者可通过修改网络过滤器的 XML 描述来实现。
多个虚拟机可以使用相同的通用网络过滤器。修改此类过滤器时,将更新引用此过滤器的所有运行中虚拟机的网络流量过滤规则。未运行的机器将在启动时更新。
如前文所述,可以对为某些类型网络配置配置的个别网络接口上应用网络流量过滤规则。支持的网络类型包括:
- network
- Ethernet -- 必须用于桥接模式
- bridge
例 18.1. 网络过滤示例
接口 XML 用于引用顶级过滤器。在以下示例中,接口描述引用过滤器 clean-traffic。
<devices> <interface type='bridge'> <mac address='00:16:3e:5d:c7:9e'/> <filterref filter='clean-traffic'/> </interface> </devices>
网络过滤器使用 XML 编写,可以包含对其他过滤器的引用、用于流量过滤的规则或两者的组合。以上引用的过滤器 clean-traffic 是仅包含对其他过滤器的引用且没有实际过滤规则的过滤器。由于可以使用对其他过滤器的引用,因此可以构建过滤器的树。使用 命令来查看 clean-traffic 过滤器: # virsh nwfilter-dumpxml clean-traffic。
如前文所述,一个网络过滤器可以被多个虚拟机引用。由于接口通常关联有各自的流量过滤规则,因此可以使用变量对过滤器的 XML 中描述的规则进行规范化。在本例中,变量名称在过滤器 XML 中使用,名称和值则位于引用过滤器的位置。
例 18.2. 扩展描述
在以下示例中,接口描述已使用参数 IP 和点号的 IP 地址作为值进行扩展。
<devices> <interface type='bridge'> <mac address='00:16:3e:5d:c7:9e'/> <filterref filter='clean-traffic'> <parameter name='IP' value='10.0.0.1'/> </filterref> </interface> </devices>
具体示例中,clean-traffic 网络流量过滤器将用 IP 地址参数 10.0.0.1 表示,根据规则规定,来自此接口的所有流量将始终使用 10.0.0.1 作为源 IP 地址,这是此特定过滤器的一个目的。