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-anchors
NAT(网络地址转换)规则。运行:
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 年多了,却没有人回答过,所以我想在这里分享我的发现,也许有人可以理解它,并通过这种方式获得一些新的见解。