使用OpenBSD> = 4.7的PF中的NAT和源IP过滤
我刚刚读了一本关于PF的书(《 PF的书》,没有淀粉),但是有一个问题没有解决。 如果我有一台使用两个接口$ int_if和$ ext_if的网关计算机,并且我将NAT从$ int_if:net(即10.0.0.0/24)到$ ext_if的包使用matchNAT转换为NAT,则应用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 那样有用吗?还是获取来自10.0.0.23的数据包的源IP NAT到$ ext_if的地址,然后检查其是否来自10.0.0.23? 我认为,此图对回答这个问题没有帮助,但是仍然很有趣:[ 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 …