Aqui está o que eu descobri até agora sobre esse tópico:
Você configura sua configuração de dummynet
usando a ferramenta de linha de comando dnctl
para obter detalhes. Confira man dnctl
. Essa ferramenta permite que você configure pipes e filas. Cada pipe / fila tem um nome numérico, bem como um conjunto de propriedades (por exemplo, uma largura de banda, um atraso, uma taxa de queda de pacotes, etc.)
Exemplo da página man:
dnctl pipe 1 config bw 14Kbit/s queue 10Kbytes
Isso cria um canal chamado 1
com uma largura de banda máxima de 14 kbps e um buffer de reserva de 10 KB (ou talvez 10 KiB, a página não está clara sobre isso).
Agora você precisa apenas de uma maneira de informar ao sistema quais pacotes de rede devem passar por esse canal e isso é feito usando pf
:
dummynet in all pipe 1
Isso redirecionará todo o tráfego de entrada para o pipe chamado 1
.
Mesmo que documentado em nenhum lugar, a opção -s
de pfctl
também conhece um parâmetro dummynet
. Por exemplo. para ver as entradas dummynet que o Condicionador de Link de Rede (ncl) das Dev Tools da Apple está configurando, apenas execute:
sudo pfctl -a com.apple.nlc/base -s dummynet
Aqui está um exemplo de saída:
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
Agora, vamos procurar os canais configurados:
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
Isso corresponde exatamente ao que configurei:
Ok,oqueéumdummynet-anchor
?Bem,euachoqueéapenasumanchor
masumparadummynet
regras,semelhantecomoexistemnat-anchors
paraasregrasNAT(NetworkAddressTranslation).Executando:
sudopfctl-sa
Eureceboestasaída:
TRANSLATIONRULES: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
Então você vê que existem diferentes tipos de âncoras pertencentes a diferentes seções de regras. De onde essas regras são realmente carregadas ainda é um mistério para mim. Existe um diretório /etc/pf.anchors
no macOS, mas este contém apenas um único arquivo com.apple
e este arquivo só se refere a mais âncoras:
#
# AirDrop anchor point.
#
anchor "200.AirDrop/*"
#
# Application Firewall anchor point.
#
anchor "250.ApplicationFirewall/*"
Uma pesquisa por 250.ApplicationFirewall
não encontra nenhum arquivo ou pasta com esse nome no meu sistema.
Então, desculpe, isso não é realmente uma resposta para sua pergunta, eu também não sei a resposta. No entanto, essa pergunta tem mais de 3 anos e ninguém respondeu a ela, então eu pensei em compartilhar minhas descobertas aqui e talvez alguém possa entender e obter algumas novas percepções dessa maneira.