2012-05-23 16 views
7

Tengo un sistema Linux de Ubuntu que actúa como un sistema de puerta de enlace con dos interfaces en él. Una interfaz es para la red local y una para Internet. Puedo enrutar el tráfico a través de él sin ningún problema. Yo uso dos iptables reglas para reenviar el tráfico de salida de la interfaz interna:Cómo usar iptables en Linux para reenviar el tráfico http y https a un proxy transparente

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE 
iptables --append FORWARD --in-interface eth1 -j ACCEPT 

ahora tengo que crear una regla de iptables que filtra y redirige todo el puerto TCP 80 y 443 tráfico que sale de mi red a través de la interfaz de eth1 y enviar a un servidor proxy que reside en una interfaz de bucle invertido en el puerto tcp 9090.

He estado buscando en SO, pero no he podido encontrar un ejemplo que funcione. ¿Hay una manera eficiente de hacer esto?

+2

fuera de tema para el SO; pertenece a [sf] –

Respuesta

13
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 9090 

HTTPS no se puede utilizar con un proxy transparente. Hay algunos hacks, pero no tiene ningún sentido y es inútil.

+0

Hey diegows, creo que esta regla simplemente cambiaría el puerto del paquete y no la IP de destino del paquete, ¿no? – ajt

+0

El objetivo REDIRECT redirige el paquete a la máquina local, SIEMPRE :) –

+0

Proxy transparente HTTPS: https://www.tectut.com/2015/08/configure-squid-as-http-and-https-transparent-proxy/ –

1
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128 
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box 
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT 

Dónde:

  • calamar caja: el servidor de calamar
  • local de la red: la red (en mi caso es 192.168.0.0/24)
  • iptables-box: donde reside su software iptables (generalmente la puerta de enlace, en mi caso 192.168.1.1)

El primero envía los paquetes a squid-box desde iptables-box. El segundo se asegura de que la respuesta se envíe de vuelta a través de iptables-box, en lugar de directamente al cliente (¡esto es muy importante!). El último se asegura de que iptables-box reenvíe los paquetes apropiados a squid-box. Puede no ser necesario. YMMV. Tenga en cuenta que especificamos '-i eth0' y luego '-o eth0', que significa interfaz de entrada eth0 y interfaz de salida eth0. Si sus paquetes entran y salen en diferentes interfaces, deberá ajustar los comandos en consecuencia.

Añadir estos comandos a los scripts de inicio apropiados bajo /etc/rc.d/

DE: http://www.tldp.org/HOWTO/TransparentProxy-6.html

Cuestiones relacionadas