![pf 错误 — “内核中不支持 ALTQ”...这是什么意思?](https://linux22.com/image/1478396/pf%20%E9%94%99%E8%AF%AF%20%E2%80%94%20%E2%80%9C%E5%86%85%E6%A0%B8%E4%B8%AD%E4%B8%8D%E6%94%AF%E6%8C%81%20ALTQ%E2%80%9D...%E8%BF%99%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
我正在运行 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。