如何在 Mac OS X 的 pf.conf 中使用新关键字 dummynet-anchor

如何在 Mac OS X 的 pf.conf 中使用新关键字 dummynet-anchor

Mac OS X 在文件中引入了一个新的关键字“dummynet-anchor” pf.conf,该关键字在 FreeBSD 和 OpenBSD 中没有使用。该关键字ipfw在 Mac OS X 10.10 中被删除,如何使用“dummynet-anchor”?

更新:规则集的哪一部分将由“dummynet-anchor”执行?

答案1

以下是我目前发现的有关这个主题的信息:

您可以dummynet使用命令行工具设置配置dnctl以了解详细信息。查看man dnctl。此工具允许您配置管道和队列。每个管道/队列都有一个数字名称,以及一组属性(例如带宽、延迟、数据包丢失率等)。

手册页中的示例:

dnctl pipe 1 config bw 14Kbit/s queue 10Kbytes

这将创建一个名为的管道1,其最大带宽为 14 kbps,积压缓冲区为 10 KB(或者可能是 10 KiB,页面上没有明确说明)。

现在您只需要一种方法来告诉系统哪些网络数据包必须通过该管道,方法是pf

dummynet in all pipe 1

这会将所有传入流量重定向到名为 的管道1

尽管没有记录,-s选项pfctl也知道一个dummynet参数。例如,查看虚拟网络条目网络链路调节器(ncl)来自 Apple 的 Dev Tools 设置,只需运行:

sudo pfctl -a com.apple.nlc/base -s dummynet

以下是示例输出:

no dummynet quick on lo0 all
dummynet in quick inet all allow-opts pipe 40269
dummynet in quick inet6 all allow-opts pipe 40269
dummynet out quick inet all allow-opts pipe 40270
dummynet out quick inet6 all allow-opts pipe 40270

现在我们来看看它配置了哪些管道:

40269:   1.000 Mbit/s  500 ms   50 sl.plr 0.100000 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
40270:   1.000 Mbit/s  500 ms   50 sl.plr 0.100000 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000

这与我配置的完全匹配: 在此处输入图片描述 好的,什么是dummynet-anchor?嗯,我认为它只是规则anchor的一个dummynet,类似于nat-anchorsNAT(网络地址转换)规则。运行:

sudo pfctl -sa

我得到这个输出:

TRANSLATION RULES:
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all

FILTER RULES:
scrub-anchor "com.apple/*" all fragment reassemble
anchor "com.apple/*" all

DUMMYNET RULES:
dummynet-anchor "com.apple/*" all

因此,您会看到不同类型的锚点属于不同的规则部分。这些规则实际上是从哪里加载的,这对我来说仍然是个谜。macOS/etc/pf.anchors上有一个目录,但这个目录只包含一个文件com.apple,并且这个文件只引用了更多锚点:

#
# AirDrop anchor point.
#
anchor "200.AirDrop/*"

#
# Application Firewall anchor point.
#
anchor "250.ApplicationFirewall/*"

搜索250.ApplicationFirewall未在我的系统上找到具有该名称的任何文件或文件夹。

所以很抱歉,这实际上不是对你问题的回答,我真的也不知道答案。然而这个问题已经存在 3 年多了,却没有人回答过,所以我想在这里分享我的发现,也许有人可以理解它,并通过这种方式获得一些新的见解。

相关内容