Skip to content

18.3 IPFilter(IPF)

IPFilter(IPF)是早期跨平台开源防火墙,在 FreeBSD 等多种操作系统上均可运行。

IPF 提供包过滤和网络地址转换(NAT)功能,其核心作者为 Darren Reed。IPF 几乎由他一人写就,并移植到多种系统。

警告

本节所述内容建议在测试环境中验证后再用于生产部署。

18.3.1 启用 IPF 防火墙

启用 IPF 防火墙需要准备配置文件并启动相关服务,具体步骤如下。

如需启用 IPF,可执行以下命令:

sh
# 复制示例文件作为默认配置规则集文件,否则 ipfilter 启动后将无规则生效。示例文件自带的规则不影响使用
# cp /usr/share/examples/ipfilter/ipf.conf.sample /etc/ipf.rules
  • 启动 IPF 防火墙:
sh
# service ipfilter enable   # 设置 ipfilter 在系统启动时自动启动
# service ipfilter start    # 启动 ipfilter 服务
  • 启动 ipnat:

ipnat 是 IPF 的组成部分,专门用于维护网络地址转换(NAT)规则。NAT 可以实现内网 IP 与公网 IP 的转换,以及端口转发等功能。

sh
# cp /usr/share/examples/ipfilter/ipnat.conf.sample /etc/ipnat.rules   # 复制示例文件作为默认配置规则集,否则 ipnat 无法启动
# service ipnat enable   # 设置 ipnat 在系统启动时自动启动
# service ipnat start    # 启动 ipnat 服务

注意

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

IPF 的管理命令主要有 ipfipfstatipnat,常用操作示例如下:

18.3.1.1 相关文件结构

IPFilter 的配置文件结构如下。

sh
/
├── etc
   ├── ipf.rules                     # IPFilter 防火墙规则文件
   └── ipnat.rules                    # IPNAT 转发规则文件
└── usr
    └── share
        └── examples
            └── ipfilter
                ├── ipf.conf.sample   # IPFilter 示例配置
                └── ipnat.conf.sample # IPNAT 示例配置

18.3.2 参考文献