
Estoy corriendo Debian 8
. Estoy intentando interceptar todos los paquetes y actualmente estoy usando iptables
para esto:
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 5000
Esto parece funcionar, pero elimina la posibilidad de obtener el puerto de destino original en el paquete.
He leído TPROXY
que debería ser el camino a seguir, ya que no se utiliza NAT
.
Intenté reemplazar REDIRECT
con esto:
iptables -t mangle -A PREROUTING -p tcp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 5000
Pero no estoy interceptando ningún paquete en mi servicio al hacerlo...
Respuesta1
Documentation/networking/tproxy.txt en el árbol del kernel menciona lo siguiente:
El objetivo 'TPROXY' proporciona una funcionalidad similar sin depender de NAT. Simplemente agregue reglas como esta al conjunto de reglas de iptables anterior:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY \ --tproxy-mark 0x1/0x1 --on-port 50080
Tenga en cuenta que para que esto funcione tendrá que modificar el proxy para habilitar (SOL_IP, IP_TRANSPARENT) para el socket de escucha.
¿Configuraste las opciones mencionadas anteriormente en el conector de escucha en tu aplicación?
Tenga en cuenta también que el documento anterior menciona la necesidad de agregar una regla y tabla de enrutamiento IP apropiadas para que los paquetes se entreguen localmente.