# ipf -E #启动 ipfilter,相当于 service ipfilter start
# ipf -D #停止 ipfilter,相当于 server ipfilter stop
# ipf -f /etc/ipf.rules #加载规则集文件中的规则 ipfstat #查看所有规则
# ipfstat -iohn #查看规则,i 表示输入规则,o 表示输出规则,h 表示通过该规则的流量,n 表示记录编号
# ipfstat -t #进入监控模式,按 Q 退出
# ipnat -f /etc/ipnat.rules #加载规则集文件中的 nat 规则
# ipnat -s #汇总并显示 nat 状态 ipnat -lh #列表显示 nat 规则,加 h 表示同时显示通过该规则的流量
# ipnat -CF #清理已加载的 nat 规则 不过以上操作并没有对规则的管理,因此还需要修改规则集文件,常用示例如下:block all # #拒绝所有访问。ipfilter 是默认明示禁止的防火墙,因此需要通过下列规则禁止所有访问 block in all #block 是动作,block 表示拒绝,pass 表示通过;in 为数据方向,in 为入,out 为出,在 ipfilter 里数据方向是必须的;all 是 from any to any 的简写,表示从源地址到目标地址,地址通常用网段(如 192.168.1.0/24)或 IP 地址(如 192.168.1.100),any 是特殊词,表示任何地址
block out all #放开回环接口的访问权限,回环接口不对外部
pass in quick on lo0 all #quick 关键字表示若规则匹配,就停止执行,不会再执行后续规则
pass out quick on lo0 all #增加 TCP 协议访问 80 端口的规则
pass in quick proto tcp from any to 192.168.1.184 port = 80 #允许任何设备以 TCP 协议访问本机 80 端口。 其中 proto tcp 是访问协议,常用值有 tcp、udp、tcp/udp、icmp,不写则表示支持所有协议;port = 80 是 端口,写在目标地址之后为目标端口,源地址之后未写,表示从源地址的任何端口发起访问
pass out quick proto tcp from 192.168.1.184 to any #允许回显信息给任何访问的设备 #增加 80 端口到 8080 端口流量转发的规则
pass in quick proto tcp from any to 192.168.1.184 port = 80 #首先放开 ipfilter 的访问限制 rdr em0 192.168.1.184 port 80 -> 192.168.1.184 port 8080 #由于测试机只有一块网卡,因此转发仅限本机
pass out quick proto icmp from 192.168.1.184 to any icmp-type 8 keep state #允许本机 ping 任何外部设备。 其中 ICMP type 8 是查询请求;keep state 表示维持状态。如与下例合并,会完全放开 ping 的功能
pass in quick proto icmp from any to 192.168.1.184 icmp-type 8 keep state #允许任何外部设备 ping 本机
pass out quick proto icmp from 192.168.1.184 to any icmp-type 0 #允许 traceroute 命令以 ICMP 协议执行
pass out quick proto udp from 192.168.1.184 to any port 33434 >< 34500 keep state #traceroute 默认协议 UDP, 端口号从 33434 开始,每转发一次端口号加 1