Pregunta

Cuando se mantienen redes, a menudo es conveniente realizar un proxy transparente. Por proxy transparente me refiero a un proxy que "secuestra" las conexiones salientes y las ejecuta a través de un servicio local. Específicamente, ejecuto un firewall de Linux con squid configurado para que todas las conexiones tcp / ip desarrolladas en el puerto 80 sean procesadas por squid.

Esto se logra utilizando la tabla 'nat' de iptables, usando IPv4.

Pero iptables para IPv6 no tiene una tabla 'nat', por lo que no puedo usar la misma implementación. ¿Qué es una técnica que puedo usar para representar de forma transparente el tráfico para las conexiones IPv6?

¿Fue útil?

Solución

Una forma viable de hacerlo es con la regla TPROXY en iptables, la documentación está disponible aquí:

Esto debería ser compatible con Squid (> = versión 3.2). Utilizando --enable-linux-netfilter y la regla iptables -t mangle -j TPROXY .

Otros consejos

iptables tiene un destino QUEUE, que puede usar para entregar paquetes al espacio de usuario. No estoy seguro, pero quizás se pueda implementar algo allí.

Más allá de eso, podría intentar añadir algo al kernel para realizar la redirección.

No puedes. Cita de squid-cache.org :

  

NAT simplemente no existe en IPv6. Por   Diseño.

     

Dada esa transparencia / intercepción   es en realidad una característica ganada por   torciendo en secreto las rutas NAT dentro   salir y volver sobre sí mismos. Es silencioso   Lógico que un protocolo sin NAT   no puede hacer la transparencia y   intercepción de esa manera.

Aquí hay una implementación:

http://www.suse.de/~krahmer/ip6nat/

Otro tipo de truco feo:

  • MARCAR todo el tráfico con iptables (parece que hay un objetivo CONNMARK para IPv6)
  • enrutar todo el tráfico marcado al dispositivo tun
  • haga NAT en el espacio de usuario en el daemon escuchando en el dispositivo tun
  • ...

Escriba su propia implementación de NAT en la pila de IPv6.

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