Pregunta

¿Es posible cambiar el puerto de destino de un paquete UDP utilizando iptables?

Estoy intentando que un agente SNMP envíe capturas en 1620 en lugar de 162. Lamentablemente, hasta ahora solo he podido cambiar el puerto de origen:

  

iptables -t nat -A POSTROUTING -p udp   --dport 162 -j SNAT --to: 1620

¿Fue útil?

Solución

Este uso aparentemente no es compatible. Tomado de http://www.netfilter.org/documentation/HOWTO/NAT- HOWTO.txt :

  

6.3.7. Alterar el destino de las conexiones generadas localmente

     

El código NAT te permite insertar   Reglas de DNAT en la cadena de SALIDA, pero
  esto no es totalmente compatible en 2.4 (   Puede ser, pero requiere un nuevo
.   Opción de configuración, algunas pruebas,   y un poco de codificación, así que a menos que   alguien contrata a Rusty para escribirlo, yo   no lo esperaría pronto).

     

La limitación actual es que tu   solo se puede cambiar el destino a
  la máquina local (por ejemplo, `j DNAT - para   127.0.0.1 '), no a ninguna otra máquina, de lo contrario las respuestas no   traducirse correctamente.

Otros consejos

Suponiendo que sabe a qué máquina se está enviando:

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620

puedes redireccionar 162 a 1620

iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620

@PiedPiper tenía razón. Con DNAT debe especificar una dirección IP, pero solo queremos hacer redireccionamiento de puertos, por lo que -j REDIRECT puede funcionar en este caso.

Consulte http: //www.netfilter .org / documentation / HOWTO // NAT-HOWTO-6.html # ss6.2

En lugar de hacer SNAT, intente con DNAT. El puerto de origen cambia porque SNAT significa SourceNAT, por lo que DNAT funcionará para usted.

Puede configurar una regla de desvío y luego volver a inyectar el paquete con el puerto modificado.

He hecho esto hace un tiempo en Mac OS X, pero es el mismo principio en Linux: http: //blog.dv8. ro / 2006/08 / using-divert-sockets-on-mac-os-x.html

Básicamente necesitas crear un proxy transparente muy simple.

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