在某些网络里, 决定在哪里放行一个数据包并不能仅仅基于子网或服务这类的简单标准。细致的站点策略可能使规则集更加复杂和潜在地难于维护。
所幸的是, PF也提供了另一个机制——通过给数据包打标记来分类和过滤数据包。 一个实用的给数据包打标记的方法是标记那些匹配特定过滤规则的进站数据包, 然后根据每个数据包被打上了哪种标识符将数据包放行到其它地方。
一个例子就是我们在第四章设定的无线访问接入点, 这个例子中我们自然希望进入本地网络的通讯带有一个明显等同于访问接入点的 $ext_if 地址的源地址。
在这种情况下, 除了带有这些访问接入点的网关的规则集,还有另一个有用的设置
代码: 全选
wifi = "{ 10.0.0.115, 10.0.0.125, 10.0.0.135, 10.0.0.145 }"
pass in on $int_if from $wifi to $wifi_allowed port $wifi_ports tag wifigood
pass out on $ext_if tagged wifigood
一个规则集的复杂程度根据你的网络需求的增加而提高, 考虑在你的pass规则中使用标记和给数据包打标记可以增加规则集的易读性和易维护性。值得一提的是标记是有“粘”性的。一旦一个数据包被匹配的规则打上标记, 它也可能潜在地被所有其它匹配的规则打上标记,而且数据包并非只带有最后打的那个标记。例如, 你可以通过一组pass规则为进站通讯打上数个标记, 根据进站通讯上打的标记, 接着一组pass规则检测出向哪里pass out这些数据包,然后在这些数据包上追加标记。(译者:接着在这些数据包上打标记)详说明4
说明4
在OpenBSD 4.2里, ftp-proxy (参“通过NAT来FTP: ftp-proxy”) 可以给数据包打标记, 这让它更容易整合进复杂的配置里。请参阅ftp-proxy用户手册以获取更详尽的信息。