Вот что я узнал об этой теме:
Вы настройки вашей конфигурации dummynet
с помощью командной строки инструмента dnctl
для деталей. Проверьте man dnctl
. Этот инструмент позволяет настраивать каналы и очереди. Каждый канал / очередь имеет числовое имя, а также набор свойств (например, пропускную способность, задержку, частоту отбрасывания пакетов и т.д.)
Пример со страницы руководства:
dnctl pipe 1 config bw 14Kbit/s queue 10Kbytes
Это создает канал с именем 1
с максимальной пропускной способностью 14 кбит / с и буфером невыполненной работы 10 КБ (или, может быть, 10 КиБ, страница не совсем ясна об этом).
Теперь вам нужен только способ сообщить системе, какие сетевые пакеты должны проходить через этот канал, и это делается с помощью pf
:
dummynet in all pipe 1
Это перенаправит весь входящий трафик в канал с именем 1
.
Хотя нигде не задокументировано, опция -s
в pfctl
также знает параметр dummynet
. Например, чтобы увидеть записи dummynet, которые устанавливает Network Link Conditioner (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 лет, и никто на него вообще не ответил, поэтому я подумала, что поделюсь своими выводами здесь, и, может быть, кто-то сможет поднять его и получить некоторые новые идеи таким образом.