15.3 IPFilter(IPF)

IPF(IPFilter,IP 过滤器)是一款开源软件,作者 Darren Reed。以下仅供参考未经测试。

如果想启用 ipf,可以执行以下命令:

# 复制示例文件作为默认配置规则集文件,否则 ipfilter 启动后会没有规则。示例文件自带的规则不影响使用
# cp /usr/share/examples/ipfilter/ipf.conf.sample /etc/ipf.rules
  • 启动 ipfilter

# service ipfilter enable 
# service ipfilter start
  • 启动 ipnat

ipnat 是 IPF 的一部分,专门用于处理 NAT 规则的维护。

# 复制示例文件作为默认配置规则集文件,否则 ipnat 无法启动
# cp /usr/share/examples/ipfilter/ipnat.conf.sample /etc/ipnat.rules 
# 设置 ipnat 开机启动
# service ipnat enable 
# 启动 ipnat
# service ipnat start

注意,ipfilter 服务重启后,ipnat 也需要重启。


ipf 的管理命令主要用 ipf、ipfstat 和 ipnat,常用操作示例如下:

# 启动 ipfilter,相当于 service ipfilter start
ipf -E

# 停止 ipfilter,相当于 service ipfilter stop
ipf -D

# 加载规则集文件中的规则
ipf -f /etc/ipf.rules

# 查看所有规则
ipfstat

# 查看规则,i 表示输入规则,o 表示输出规则,h 表示通过该规则的流量,n 表示记录编号
ipfstat -iohn

# 进入监控模式,按 Q 退出
ipfstat -t

# 清理已加载的规则
ipf -Fa

# 加载规则集文件中的 NAT 规则
ipnat -f /etc/ipnat.rules

# 汇总并显示 NAT 状态
ipnat -s

# 列表显示 NAT 规则,加 h 表示同时显示通过该规则的流量
ipnat -lh

# 清理已加载的 NAT 规则
ipnat -CF

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

# 拒绝所有访问
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 是特殊词,表示任何地址

常用的规则集文件 /etc/ipf.rules 如下:

常用的 NAT 规则集文件 /etc/ipnat.rules 如下:

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

最后更新于

这有帮助吗?