我正在运行 Mac OS X。我希望能够配置 pf,因为它似乎比可以通过系统偏好设置访问的默认 Mac OS X 防火墙更复杂、更灵活。我尝试使用一些 pf 命令,但出现了一些我无法理解的错误。
bash-3.2$ sudo pfctl -s rules
No ALTQ support in kernel
ALTQ related functions disabled
scrub-anchor "com.apple/*" all fragment reassemble
anchor "com.apple/*" all
bash-3.2$ sudo pfctl -s states
No ALTQ support in kernel
ALTQ related functions disabled
我在 Wikipedia 上查了 ALTQ,它似乎是一个在内核级别对数据包进行统计复用的排队程序。它是 BSD 系统用于对数据包进行排队的内核模块。而 Mac OS X 内核显然不支持它。
好吧,这确实说不通。为什么 Mac OS X 包含 BSD pf 防火墙,但不包括使该防火墙工作所必需的排队软件的支持?这不是适得其反吗?一定有某种方法可以启用对 ALTQ 的支持,但我不知道它是什么。我甚至不完全确定 ALTQ 是什么。它是一个可加载的内核模块,我必须使用命令加载它吗kextload
?或者问题是它已经存在,但内核与它不兼容。我完全糊涂了。
答案1
您需要启用防火墙:
System Preferences-> Security & Privacy-> Firewall-> Turn On Firewall
(后台执行sudo pfctl -E
)
如果你在那之后尝试:sudo pfctl -s info
它不应该责怪 ALTQ
答案2
我相信你误解了命令的输出:
sudo pfctl -s rules
输出列出了一个警告:
No ALTQ support in kernel
关于该警告的更多信息:
ALTQ related functions disabled
然后它继续按要求列出有效规则:
scrub-anchor "com.apple/*" all fragment reassemble
anchor "com.apple/*" all
您可以在这里找到更多信息,包括上述输出的含义:
https://krypted.com/mac-security/a-cheat-sheet-for-using-pf-in-os-x-lion-and-up/
我在 macOS 上使用 Little Snitch,据我记得,但可能是错的,它pf
用于后端。
ALTQ 用于流量整形。以下是有关 pfSense 开源项目的流量整形(和 ALTQ)的信息。pfSense,顾名思义,利用pf
并基于 FreeBSD,macOS 也(在一定程度上)是 FreeBSD。我提供这些信息只是为了提供有关 ALTQ 的信息(以及pf
与之相关的功能)。
https://docs.netgate.com/pfsense/en/latest/book/trafficshaper/index.html
我斗胆评论一下,ALTQ 流量整形可能更适合在边缘防火墙/路由器上使用,而不是在工作站上使用,而且 macOS 上没有启用它也不会有什么损失(因为 Apple 已经放弃了它作为有意义的服务器操作系统,转而专注于消费者桌面应用程序的使用)。YMMV。