Rede moldando proxy local para testes de sites

Rede moldando proxy local para testes de sites

Quero criar uma interface de rede virtual para o proxy TCP de um site e fazer com que meu navegador o veja por meio de uma conexão de rede lenta, para depurar problemas de desempenho no próprio site.

Até agora consegui configurá-lo da seguinte maneira:

ip link add dummy-SLOW type dummy
ifconfig dummy-SLOW 10.54.0.10 up
tc qdisc add dev dummy-SLOW root tbf rate 120kbit latency 200ms burst 1540

e então

socat tcp-listen:443,bind=10.54.0.10,reuseaddr,fork tcp:XXX.XXX.XXX.XXX:443

Também adicionei um alias /etc/hostspara poder ver o site no endereço IP 10.54.0.10.

Bem, consigo ver o site através desta configuração, sem problemas, o endereço 10.54.0.10aparece até no Chrome devtools. Mas a modelagem de tráfego não está funcionando... Ainda vejo muitos bytes sendo baixados muito rápido. Como posso fazer com que a modelagem de tráfego funcione?

NOTA: SE houver uma maneira de fazer com que o proxy faça a limitação, isso também funciona para mim.

Responder1

Você pode moldar o tráfego em sua interface normal, sem adicionar uma interface virtual.

Atribuir um qdisc com um ID exclusivo

tc qdisc add dev eth0 root handle 1: htb

Atribua a classe ao qdisc definido acima. Este é considerado filho do qdisc. Eu uso o modo htb porque é essencialmente uma versão mais rica em recursos do tbf.

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 120kbit latency 200ms burst 1540

Atribua um filtro à turma e procure ativamente o tráfego marcado com "10"

tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10

Agora que o TC tem regras, precisamos enviar o tráfego para o controle de tráfego para acelerá-lo.

iptables -A OUTPUT -t mangle -p tcp --dport 443 -j MARK --set-mark 10

Indo um passo adiante, para não limitar todo mundo que faz tráfego 443, vamos escrever uma regra que afete apenas o seu tráfego.

iptables -A OUTPUT -t mangle -p tcp -s <client IP > --dport 443 -j MARK --set-mark 10

Ao marcar nosso tráfego na saída do servidor, garantimos que todos (tecnicamente% 90) de todo o roteamento provável da rede Linux foram concluídos e agora estamos prontos para marcar o tráfego que corresponde à regra. A origem, sendo um laptop ou outro servidor de onde o teste está chegando na porta 443, será marcada com 10 no cabeçalho do pacote. Assim que isso for visto, o kernel pegará o pacote e aplicará regras de TC a ele.

Você pode ver todas as regras do mangle fazendoiptables -t mangle -nvL

informação relacionada