2011-06-29 11 views
5

Estoy escribiendo un proxy de aplicación para uso genérico.Recuperando el destino original de iptables después de REDIRECT

Quiero usar esto como un proxy transparente, donde mi plan original es usar iptables con una regla REDIRECT para reenviar todas las conexiones a mi proxy de aplicación.

El problema aquí es, por supuesto, que mi proxy de aplicación pierde la información sobre el destino previsto.

¿Es posible consultar iptables para recuperar el destinatario original? ¡También se agradece cualquier otra posible solución a este problema!

Respuesta

7

Quizás esto es lo que estabas buscando?

http://www.network-builders.com/iptables-redirect-original-destination-ip-t69515.html

Leer la opción SO_ORIGINAL_DST del socket TCP.
O busque la tabla de seguimiento de la conexión en/proc/net/ip_conntrack.

#include <linux/netfilter_ipv4.h> 

struct sockaddr_in addr; 
bzero((char *) &addr, sizeof(addr)); 
addr.sin_family = AF_NET; 
socklen_t addr_sr = sizeof(addr); 
getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, &addr, &addr_sz); 

Creo que deberías ser capaz de convertir a que algo similar para pitón.

+0

Funciona como un encanto, gracias –

Cuestiones relacionadas