15.2 Packet Filter(PF)

PF(Packet Filter,包过滤器)是一款由 OpenBSD 移植而来的防火墙,提供了大量功能,包括 ALTQ (Alternate Queuing,交错队列) 等。

启用 PF

# kldload pf # ① 加载内核模块
# 复制示例文件作为默认配置规则集文件,否则 pf 无法启动 ②
# cp /usr/share/examples/pf/pf.conf /etc/
# service pf enable # 设置 pf 开机启动
# service pf start  # 启动 pf
  • ① 如不做,则提示 pfctl: /dev/pf: No such file or directory。或者你重启再 service pf start

  • ② 否则提示:

/etc/rc.d/pf: WARNING: /etc/pf.conf is not readable.

pfctl

pf 的管理命令为 pfctl,常用操作示例如下:

# 启动 pf,相当于 service pf start
# pfctl -e

# 即禁止规则。几乎相当于 service pf stop(停止防火墙)
# pfctl -d

# 加载规则集文件中的规则
# pfctl -f /etc/pf.conf

# 解析规则,但不加载。-f 参数还可以与其他参数配合,如 -N 表示只载入 NAT 规则,-R 表示只载入过滤规则,-A 只载入队列规则,-O 只载入选项规则
# pfctl -nf /etc/pf.conf

# 查看 pf 所有对象信息。如果想查看特定对象信息,可以用 nat、queue、rules、Anchors、states、Sources、info、Running、labels、timeouts、memory、Tables、osfp、Interfaces 替换 all
# pfctl -s all

# 清理 pf 所有规则
# pfctl -F all

如果想查看特定规则,可以用 nat、queue、rules、states、Sources、info、Tables、osfp 替换 all。

不过以上操作并没有对规则的管理,因此还需要修改规则集文件,常用示例如下:

可能用到的规则集文件 /etc/pf.conf 如下:

保存文件,接下来在终端执行命令:

最后更新于

这有帮助吗?