ipfw 是 FreeBSD 内建的
防火墙指令,我们可以用它来管理进出的网络交通。如果
防火墙服务器是扮演着
路由器 (
gateway 例如上一篇中的 NAT 服务器) 的角色,则进出的
封包会被 ipfw 处理二次,而如果防火墙扮演的是
桥接器 (bridge) 的角色,则封包只会被处理一次。这个观念关系着我们以下所要介绍的语法,有的语法并不适用于
桥接器。
另外,在设定
防火墙时有二种模式,一种模式是预设拒绝所有联机,再一条一条加入允许的联机;另一种是预设接受所有联机,加入几条拒绝的规则。如果是非常强调安全性,应该是使用预设拒绝所有联机,再一条一条加入我们允许的规则。
我们会将 firewall 的设定写在 /etc/rc.firewall 中,每一条设定都是以先入为主 (first match wins) 的方式来呈现,也就是先符合的规则 (rules) 为优先。所有进出的
封包都会被这些规则过滤,因此我们会尽量减少规则的数量,以加速处理的速度。