Quiero que se ejecute un servicio en cada puerto externo de mi sistema. Como no funcionaría iniciar 65535 instancias únicas de ese servicio (supongo ...) pensé en usar iptables para esto.
El servicio (solo un script de Python de 10 líneas) está escuchando en localhost: 10000. iptables ahora debe reenviar cada solicitud TCP en un puerto externo a este puerto local para que cada uno de estos puertos parezca estar abierto. Tengo pocas experiencias con iptables y no tengo tiempo para leer más sobre este tema, por lo que no puedo hacer que esto funcione.
Lo intenté:
iptables -A PREROUTING -t nat -i eth0 -p tcp -j DNAT --to-destination 127.0.0.1:10000
Pero cuando se escanea desde la red local, todos los puertos aparecen filtrados, no abiertos. Actualmente no hay otras reglas activas y todas las políticas están establecidas en ACC
¿Cómo puedo hacer eso bien?
¡Gracias por adelantado!
Respuestas:
Como sus políticas son ACEPTAR, puede usar su línea de iptables con 2 cambios:
Por ejemplo, esta línea funciona si su eth0 IP es 192.168.1.10:
todas las conexiones a 192.168.1.10 (a cualquier puerto) serán redirigidas al puerto 10000.
Editar: también puede usar el objetivo REDIRECCIONAR:
esto todavía no te ayudará si solo escuchas localhost.
fuente
sysctl -w net.ipv4.conf.eth0.route_localnet=1
. Puede verificar el valor actual consysctl net.ipv4.conf.eth0.route_localnet
Aquí hay un enlace a una respuesta más reciente: https://unix.stackexchange.com/questions/111433/iptables-redirect-outside-requests-to-127-0-0-1/112232
Este realmente me ayudó.
fuente