此 PF 规则如何在 "stopping all probes from outside the network" 中发挥作用?

How does this PF rule serve in "stopping all probes from outside the network"?

参考第 29.3.3.3. Managing ICMP of the FreeBSD Handbook 节,我看到以下文本和示例:

One solution is to let all ICMP traffic from the local network through while stopping all probes from outside the network:

pass inet proto icmp from $localnet to any keep state

pass inet proto icmp from any to $ext_if keep state

我是这样读的: “将源自 $localnet 的 IPv4 ICMP 数据包传递给任何 host/port,并保持状态。 将来自任何 host/port 的 IPv4 ICMP 数据包传递给 $ext_if,并保持状态。"

这如何阻止来自网络外部的探测?我的理解有限,但它让我相信第二条规则实际上是允许来自网络外部的探测。

是吗?如果不是,我应该如何阅读该规则?

据我所知(而且我绝对不是 FreeBSD 或 PF 人),您在步骤 [=21= 中创建的基础 pf.cfg ]29.3.3 包括 block in all。如果我理解正确,这基本上使 PF 过滤器成为默认拒绝,并且只允许明确允许的流量(使用 pass 规则)。因此,pass 规则将允许所有 outbound ICMP 数据包(及其回复),允许所有 inbound ICMP 数据包 只有目标 IP 为 $ext_if,所有其他 ICMP 数据包将被默认 block in all.

阻止

此特定设置在非 NAT 网关中最有意义,因为当 NAT 生效时,无论是否启用这些规则,外部节点都无法 ping 内部节点。

如有错误,请随时指正,这是很有可能的。