Pregunta

En primer lugar, soy relativamente nuevo en la programación de redes. Quiero interceptar y retrasar el tráfico HTTP antes de que llegue a la aplicación del servidor. He profundizado en libnetfilter_queue, que me da toda la información que necesito para retrasar adecuadamente, pero a un nivel demasiado bajo. Puedo retrasar el tráfico allí, pero a menos que acepte los datagramas IP casi de inmediato (por lo que enviarlos a la pila cuando quiera retrasarlos), se reenviarán (cuando no llegue ACK), que no es lo que quiero.

No quiero ni necesito tener que lidiar con TCP, solo las cargas útiles que ofrece. Entonces, mi pregunta es ¿cómo intercepto el tráfico en un puerto en particular antes de que llegue a su destino, pero después de que TCP lo haya reconocido y verificado?

Gracias

Editar: espero que sea obvio por la etiqueta y libnetfilter_queue, esto es para Linux

¿Fue útil?

Solución

Secuestrar las conexiones a través de un proxy HTTP. Busque en Google una buena forma de hacer esto si no puede configurar HTTP_PROXY en el cliente, o configurar su filtro con la IP y el número de puerto del servidor actual, moviendo el servidor real a otra IP.

Entonces, las conexiones TCP reales son entre el cliente y usted, luego de usted al servidor. Entonces no tiene que lidiar con los ACK, porque TCP siempre ve cumplida la misión.

editar: veo que los comentarios sobre el original ya surgieron con esta idea usando iptables para redirigir el tráfico a través de su proceso de proxy transparente en la misma máquina.

Otros consejos

Bueno, he hecho lo que sugerí en mi comentario, y funciona, incluso si se siente una forma larga de hacerlo.

El (o un) problema es que el servidor web ahora, comprensiblemente, piensa que cada solicitud proviene de localhost. Realmente me gustaría que este retraso sea transparente tanto para el cliente como para el servidor (¡excepto a tiempo, por supuesto!). ¿Hay algo que pueda hacer al respecto?

Si no, ¿cuáles son las implicaciones? Cada sesión HTTP ocurre a través de un puerto diferente, ¿es suficiente para que se separen por completo como deberían? Presumiblemente, teniendo en cuenta que funciona cuando está detrás de un NAT donde la dirección para muchas sesiones es la misma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top