小编der*_*ser的帖子

PF 中的 NAT 和源 IP 过滤,使用 OpenBSD >= 4.7

我刚刚读了一本关于 PF 的书(The Book Of PF, No Starch),但有一个问题没有得到解答。

如果我有一台使用两个接口 $int_if 和 $ext_if 的网关机器,并且我将来自 $int_if:net(假设为 10.0.0.0/24)的包使用matchNAT到 $ext_if ,当应用 NAT 时? 在过滤规则之前还是之后?

例子:

match out on $ext_if from 10.0.0.0/24 nat-to ($ext_if)
pass out on $ext_if from 10.0.0.0/24
block drop out on $ext_if from 10.0.0.23
Run Code Online (Sandbox Code Playgroud)

那样有用吗?或者在检查它是否来自 10.0.0.23 之前获取来自 10.0.0.23 NAT 的数据包的源 IP 到 $ext_if 的地址被评估?

我认为这个图对回答这个问题没有帮助,但它仍然很有趣:[ http://www.benzedrine.cx/pf_flow.png ]

如果您阅读 PF NAT FAQ [ http://www.openbsd.org/faq/pf/nat.html ],尤其是“配置 NAT”部分,您会看到以下句子:

当一个数据包被匹配规则选中时,该规则中的参数(例如 nat-to)会被记住,并在达到与该数据包匹配的传递规则时应用于该数据包。这允许通过单个匹配规则处理整类数据包,然后可以使用阻止和通过规则做出是否允许流量的具体决定。

我认为这听起来好像不像我在上面的段落中所说的那样,因此源 IP 会被“记住”,直到决定要对数据包执行的操作。如果做出决定,则应用 NATting。

你怎么认为?

PS:这是一个非常理论化的问题。如果你有点务实,你会这样做:

match out on $ext_if from 10.0.0.0/24 nat-to …
Run Code Online (Sandbox Code Playgroud)

freebsd networking firewall openbsd pf

8
推荐指数
1
解决办法
2962
查看次数

标签 统计

firewall ×1

freebsd ×1

networking ×1

openbsd ×1

pf ×1