本文共 1154 字,大约阅读时间需要 3 分钟。
最近工作上有参于一个网络SDK的开发与测试,测试过程中需要拦截某些IP的TCP/UDP的网络请求,便使用到了pfctl命令,觉得它是个很方便、小巧却功能强大的工具,所以写此篇文档作为一个学习笔记,同时跟大家分享相关的内容
ptctl的说明pfctl命令是PF防火墙的配置命令,PF防火墙( 全称:Packet Filter )是UNIX LIKE系统上进行TCP/ip流量过滤和网络地址转换的软件系统。PF同样也能提供TCP/IP流量的整形和控制,并且提供带宽控制和数据包优先集控制。PF最早是由Daniel Hartmeier开发的,现在的开发和维护由Daniel和openBSD小组的其他成员负责。
主机环境如下截图所示
使用方式示例 1、编辑规则文件,添加相关的网络处理规则# 需要管理员权限才能编辑 /etc/pf.conf,可以使自己习惯的编辑器,如vim等sudo emacs /etc/pf.conf# 在/etc/pf.conf 文件最后面添加如下规则(丢弃发给175.6.128.23的upd数据包),并保存block drop proto udp from any to 175.6.128.23
2、导入并执行网络处理规则
sudo pfctl -ef /etc/pf.conf# 成功执行后一般出现如下提示TIPS: 可以使用man pfctl查看pfctl的所有功能
# pfctl -f /etc/pf.conf 载入 pf.conf 文件# pfctl -nf /etc/pf.conf 解析文件,但不载入# pfctl -Nf /etc/pf.conf 只载入文件中的NAT规则# pfctl -Rf /etc/pf.conf 只载入文件中的过滤规则# pfctl -sn 显示当前的NAT规则# pfctl -sr 显示当前的过滤规则# pfctl -ss 显示当前的状态表# pfctl -si 显示过滤状态和计数# pfctl -sa 显示任何可显示的
pf.conf文件有7个部分:宏:用户定义的变量,包括IP地址,接口名称等等。表:一种用来保存IP地址列表的结构。选项:控制PF如何工作的变量。整形:重新处理数据包,进行正常化和碎片整理。排队:提供带宽控制和数据包优先级控制。转换:控制网络地址转换和数据包重定向。过滤规则:在数据包通过接口时允许进行选择性的过滤和阻止。除去宏和表,其他的段在配置文件中也应该按照这个顺序出现,尽管对于一些特定的应用并不是所有的段都是必须的。空行会被忽略,以#开头的行被认为是注释。
TIPS: 可以使用man pf.conf 查看pf.conf的所有功能
转载地址:http://wumbi.baihongyu.com/