Folgendes habe ich bisher zu diesem Thema erfahren:
Sie können Ihre dummynet
Konfiguration mithilfe des Befehlszeilentools dnctl
für Details einrichten. Check out man dnctl
. Mit diesem Tool können Sie Pipes und Warteschlangen konfigurieren. Jede Pipe / Queue hat einen numerischen Namen sowie eine Reihe von Eigenschaften (z. B. Bandbreite, Verzögerung, Paketabwurfrate usw.).
Beispiel aus der Manpage:
dnctl pipe 1 config bw 14Kbit/s queue 10Kbytes
Dadurch wird eine Pipe 1
mit einer maximalen Bandbreite von 14 kbps und einem Backlog-Puffer von 10 KB (oder möglicherweise 10 KiB, die Seite ist nicht klar) erstellt.
Jetzt benötigen Sie nur noch eine Möglichkeit, dem System mitzuteilen, welche Netzwerkpakete diese Pipe durchlaufen müssen. Dazu wird Folgendes verwendet pf
:
dummynet in all pipe 1
Dadurch wird der gesamte eingehende Datenverkehr an die genannte Pipe umgeleitet 1
.
Obwohl nirgendwo dokumentiert, kennt die -s
Option pfctl
auch einen dummynet
Parameter. Um beispielsweise die Dummynet-Einträge anzuzeigen, die der Network Link Conditioner (ncl) von Apples Dev Tools eingestellt hat, führen Sie einfach Folgendes aus:
sudo pfctl -a com.apple.nlc/base -s dummynet
Hier ist eine Beispielausgabe:
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
Nun schauen wir uns an, welche Pipes es konfiguriert hat:
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
Das stimmt genau mit dem überein, was ich konfiguriert habe: Okay, was ist ein dummynet-anchor
? Nun, ich denke, es ist nur eine anchor
Ausnahme für dummynet
Regeln, ähnlich wie nat-anchors
für NAT-Regeln (Network Address Translation). Laufen:
sudo pfctl -sa
Ich bekomme diese Ausgabe:
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
Sie sehen also, dass es verschiedene Arten von Ankern gibt, die zu verschiedenen Regelabschnitten gehören. Woher diese Regeln tatsächlich geladen werden, ist für mich immer noch ein Rätsel. Es gibt ein Verzeichnis /etc/pf.anchors
unter macOS, aber dieses enthält nur eine einzige Datei, com.apple
und diese Datei bezieht sich nur auf mehr Anker:
# # AirDrop anchor point. # anchor "200.AirDrop/*" # # Application Firewall anchor point. # anchor "250.ApplicationFirewall/*"
Bei einer Suche werden 250.ApplicationFirewall
keine Dateien oder Ordner mit diesem Namen auf meinem System gefunden.
Es tut mir leid, das ist nicht wirklich eine Antwort auf Ihre Frage, ich kenne die Antwort auch wirklich nicht. Diese Frage ist jedoch schon über 3 Jahre alt, und niemand hat sie überhaupt beantwortet. Ich dachte, ich teile meine Erkenntnisse hier und vielleicht kann jemand sie aufgreifen und auf diese Weise neue Erkenntnisse gewinnen.