Proxy local de configuración de red para pruebas de sitios web

Proxy local de configuración de red para pruebas de sitios web

Quiero crear una interfaz de red virtual para proxy TCP de un sitio web y hacer que mi navegador lo vea a través de una conexión de red lenta, para depurar problemas de rendimiento en el sitio web.

Hasta ahora logré configurarlo de la siguiente manera:

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

y luego

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

También agregué un alias /etc/hostspara poder ver el sitio web bajo la dirección IP 10.54.0.10.

Bueno, puedo ver el sitio a través de esta configuración, no hay problema, la dirección 10.54.0.10incluso se muestra en Chrome devtools. Pero la configuración del tráfico no funciona... Todavía veo que se descargan demasiados bytes demasiado rápido. ¿Cómo puedo hacer que funcione la configuración del tráfico?

NOTA: SI hay una manera de que el proxy realice la aceleración, bueno, eso también funciona para mí.

Respuesta1

Puede dar forma al tráfico en su interfaz habitual, sin agregar una virtual.

Asignar una qdisc con una identificación única

tc qdisc add dev eth0 root handle 1: htb

Asigne la clase a la qdisc definida anteriormente. Se considera hijo de qdisc. Utilizo el modo htb porque es esencialmente una versión de tbf con más funciones.

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

Asigne un filtro a la clase y busque activamente el tráfico etiquetado con "10".

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

Ahora que TC tiene reglas, ahora necesitamos enviar tráfico AL control de tráfico para acelerarlo.

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

Llevando eso un paso más allá, para no limitar a todos los que realizan tráfico 443, escribamos una regla que solo afecte su tráfico.

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

Al marcar nuestro tráfico al salir del servidor, nos aseguramos de que se haya completado todo (técnicamente el 90 %) de todo el enrutamiento probable de la red Linux y ahora estamos listos para marcar el tráfico que coincide con nuestra regla. Si la fuente es una computadora portátil u otro servidor donde llega la prueba al puerto 443, se marcará con un 10 en el encabezado del paquete. Una vez visto esto, el kernel tomará el paquete y le aplicará reglas TC.

Puedes ver todas las reglas de mangle haciendoiptables -t mangle -nvL

información relacionada