15.4 ipfirewall(IPFW)

IPFIREWALL(IPFW,IP 防火墙)是由 FreeBSD 项目开发和维护的防火墙软件。

IPFW 作为可加载模块存在于基本系统内核(GENERIC)中。

警告

IPFW 默认包含一条规则,规则号为 65535,不可删除:该规则会阻断所有未匹配的流量。因此,在防火墙配置完成之前,请勿启动 IPFW,以免被阻断在防火墙之外。

服务项

  • 启用系统防火墙设置:

# sysrc firewall_enable="YES"  # 参见 https://github.com/freebsd/freebsd-src/blob/main/libexec/rc/rc.d/routing#L387

也可以使用以下命令设置 IPFW 防火墙在系统启动时自动启动:

# service ipfw enable # 须重启后生效
  • 启动 IPFW 防火墙服务:

# service ipfw start

Firewall rules loaded.
Firewall logging enabled.
ifconfig: interface ipfw0 already exists
Firewall logging pseudo-interface (ipfw0) created.
  • 查看 IPFW 防火墙的当前状态:

# service ipfw status

ipfw is enabled

其他 RC 配置

  1. 设置防火墙策略类型

作用:允许所有访问流量通过。

说明:

  • 如果不设置 open,FreeBSD 默认防火墙规则会是 65535: deny ip from any to any,即拒绝所有 IP 流量。

  • 功能上等同于执行:

  • 使用 open 后,防火墙仍启用,但默认不阻塞流量。

  1. 指定防火墙规则文件

作用:设置 IPFW 防火墙规则文件路径。

说明:系统启动时会读取该文件并加载其中的防火墙规则。

  1. 启用防火墙日志

作用:开启 IPFW 日志功能,使防火墙能够打印日志信息。

  1. 指定日志输出设备

作用:将防火墙日志输出到 ipfw0 伪接口设备。

便于使用 tcpdumpngrep 等工具监控防火墙日志流量。


按上面的配置后的规则:

编辑 /usr/local/etc/ipfw.rules 文件

指定防火墙规则:

每条规则的基本结构如下:

  • ① 按优先级排序,数字越小优先级越高,可覆盖数字较大的规则。

示例:添加规则 500,用于拒绝并记录所有流量:

写入文本:

或者执行命令

注意

ipfw 命令为一次性生效,执行时即时生效,但不会永久保存规则。需要将规则写入指定文件以保持持久化。

  • 设置 IPFW 默认策略为允许所有流量:

  • 显示当前 IPFW 防火墙规则列表:

最后更新于

这有帮助吗?