Вот что я узнал об этой теме:
Вы настраиваете свою 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
Итак, вы видите, что есть разные виды якорей, принадлежащих к различным разделам правил. Откуда эти правила действительно загружены, для меня до сих пор остается загадкой. В /etc/pf.anchors
macOS есть каталог, но он содержит только один файл, com.apple
и этот файл относится только к нескольким якорям:
# # AirDrop anchor point. # anchor "200.AirDrop/*" # # Application Firewall anchor point. # anchor "250.ApplicationFirewall/*"
Поиск 250.ApplicationFirewall
не находит файлы или папки с таким именем в моей системе.
Извините, это не совсем ответ на ваш вопрос, я тоже не знаю ответа. Тем не менее, этому вопросу уже более 3 лет, и никто на него вообще не ответил, поэтому я подумала, что поделюсь своими выводами здесь, и, может быть, кто-то сможет поднять его и таким образом получить новые идеи.