那么,我不知道如何问这个问题,但我知道你可以使用关键字标志来指定你想过滤的标志。
根据Packetfilter的文档:
要在评估规则期间让PF检查TCP标志,使用以下语法的flags关键字:
标志检查/屏蔽标志任何
- 如何筛选RSOP以仅显示已修改的政策?
- IPMI只能通过HTTP
- Netsh跟踪与PEF跟踪cmdlet vs NetEvent cmdlet
- 如何删除Exim .forward文件中的重复项?
- 监视我的networking上的VPN用户
掩码部分告诉PF只检查指定的标志,检查部分指定标题中的哪个(哪些)标志必须在“开”以便匹配发生。 使用any关键字可以在标题中设置标志的任意组合。
通过fxp0 proto tcp从任何端口ssh标志S / SA通过fxp0 proto tcp从任何端口ssh
由于S / SA标志是默认设置的,所以上述规则是等同的。这些规则中的每一个都传递了带有SYN标志的TCPstream量,而只查看SYN和ACK标志。 具有SYN和ECE标记的数据包将与上述规则相匹配,而具有SYN和ACK或恰好ACK的数据包则不会。
所以我理解了这个例子,为什么带有标志S和E的数据包可以通过(因为E标志没有被掩码SA考虑),为什么只有Ack标志的数据包不能通过防火墙。
我不明白的是,为什么标志S和A的数据包不能通过规则S / SA,如果标志S在数据包标题中是“开”的。 也许文档是不明确的? 对不起,如果这是一个愚蠢的问题或英文误解。
我想象它只能通过,如果它必须只有标志S.在集算术会是这样的:
标志在标题中必须是'on' – >标志(s)与被屏蔽的子集[pf doc]有关,只有标志必须在标题'on'上 – >标志(s)被掩盖的子集[我从给出的例子中理解的]
提前致谢!
这意味着你正在看两个标志S & A但是当且仅当S是“开”且A是“关”。
flags S/SA --------------- | S | A | Match | ---|---|------- | 0 | 0 | No | | 0 | 1 | No | | 1 | 0 | Yes | | 1 | 1 | No | ---------------
如果要在两个SA标志都“打开”时匹配,则使用flags SA/SA 。
flags SA/SA --------------- | S | A | Match | ---|---|------- | 0 | 0 | No | | 0 | 1 | No | | 1 | 0 | No | | 1 | 1 | Yes | ---------------