我遇到一个问题,我的 pf 记录了许多它不应该记录的数据包。我用几乎为空的 pf.conf 重现了这个问题:
set skip on lo
但它仍然会记录一些数据包。我认为所有这些数据包都是 ICMP6 类型,它们实际上不属于我的计算机,我不知道为什么我会收到它们,但我无法控制它。
以下是数据包的示例(使用 pflog0 上的 tcpdump 接收):
13:18:29.211678 rule def/(match) pass in on vio0: fe80::3ad5:47ff:fe75:1a2b > ff02::1:ff75:1a2b: HBH icmp6: multicast listener report [hlim 1]
所以我的问题是:我可以在哪里阅读有关这些默认匹配规则的信息以及如何禁用这些日志。
我尝试明确地匹配那些数据包与类似的东西pass in on vio0
(没有日志记录语句),但它们仍然被记录,可能是因为那个神秘的默认匹配标记了要记录的数据包。
答案1
我不知道为什么我会收到它们
这是多播流量。
在哪里可以阅读有关这些默认匹配规则的信息
嗯,总的来说部分记录但它与您所看到的问题并没有明显关联。
从man pf.conf
(标价 是矿):
…
允许选择—默认情况下,带有 IPv4 选项或 IPv6 的数据包逐跳或目标选项标头被阻止。当为通过规则指定 allow-opts 时,基于该规则(最后匹配)通过过滤器的数据包即使包含选项也会通过。
…
—HBH
您在日志中看到的正是“逐跳”。
我的理论是:Pf 的开发人员决定,既然这种流量要被阻止,即使有规则pass
(在您的情况下似乎是默认的),那么更加强硬的举报是有意义的,这就是您记录它的原因。
以及如何禁用这些日志
按照手册页中的建议,您可以通过引入明确给出的pass
规则来解决这个问题:allow-opts
pass allow-opts