pfctl

    pfctl命令 是PF防火墙的配置命令,PF防火墙( 全称:Packet Filter )是UNIX LIKE系统上进行TCP/ip流量过滤和网络地址转换的软件系统。PF同样也能提供TCP/IP流量的整形和控制,并且提供带宽控制和数据包优先集控制。PF最早是由Daniel Hartmeier开发的,现在的开发和维护由Daniel和openBSD小组的其他成员负责。

    PF防火墙的功能很多,本站只列举一些基本配置。

    要激活pf并且使它在启动时调用配置文件,编辑文件,修改配置pf的一行:

    也可以通过pfctl程序启动和停止pf:

    注意这仅仅是启动和关闭PF,实际它不会载入规则集,规则集要么在系统启动时载入,要在PF启动后通过命令单独载入。

    系统引导到在rc脚本文件运行PF时PF从文件载入配置规则。注意当文件是默认配置文件,在系统调用rc脚本文件时,它仅仅是作为文本文件由pfctl装入并解释和插入pf的。对于一些应用来说,其他的规则集可以在系统引导后由其他文件载入。对于一些设计的非常好的unix程序,PF提供了足够的灵活性。

    1. 宏:用户定义的变量,包括IP地址,接口名称等等。
    2. 表:一种用来保存IP地址列表的结构。
    3. 选项:控制PF如何工作的变量。
    4. 排队:提供带宽控制和数据包优先级控制。
    5. 转换:控制网络地址转换和数据包重定向。
    6. 过滤规则:在数据包通过接口时允许进行选择性的过滤和阻止。

    除去宏和表,其他的段在配置文件中也应该按照这个顺序出现,尽管对于一些特定的应用并不是所有的段都是必须的。

    空行会被忽略,以#开头的行被认为是注释。

    引导之后,PF可以通过pfctl程序进行操作,以下是一些例子: