
Tengo un problema con iptables debido a mi muy pequeña participación en él.
Tengo una configuración de relé de salida TOR y estoy intentando redirigir todo el tráfico local y TOR para que salga de mi caja en el puerto 8080.
Actualmente lo tengo configurado como:
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
Pero esto sólo parece redirigir el tráfico transitorio cuando actúo como enrutador en lugar del tráfico que se origina en la caja.
Respuesta1
No comento sobre TOR porque no tengo mucho conocimiento.
Pero para el objetivo de iptables, aquí está. PREROUTING
implica enrutamiento. Al iniciar una conexión desde ellocalsistema, no estás enrutando. Sólo tienes que usar OUTPUT
en lugar/además de PREROUTING
.
Ámbito de aplicación deREDIRECT
:
REDIRECT
Este objetivo solo es válido en la tabla nat, en las cadenas PREROUTING y OUTPUT, y en las cadenas definidas por el usuario que solo se llaman desde esas cadenas. Redirige el paquete a la máquina cambiando la IP de destino a la dirección principal de la interfaz entrante (los paquetes generados localmente se asignan a la dirección del host local, 127.0.0.1 para IPv4 y ::1 para IPv6).
Entonces:
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
EDITAR:
Para evitar que se redirija a un usuario o grupo específico (por ejemplo, para evitar un bucle infinito con el servicio en el puerto 8080), puede hacer lo siguiente (ejemplo para un servicio que se ejecuta con un grupo efectivo tor
) en lugar de lo anterior:
iptables -t nat -N OUTPUT intercept
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j intercept
iptables -t nat -A intercept -m owner --gid-owner tor -j RETURN
iptables -t nat -A intercept -j REDIRECT --to-ports 8080