linux - masquerade - iptables permitir todo a una ip
Usando iptables para cambiar un puerto de destino (6)
¿Es posible cambiar el puerto de destino de un paquete UDP usando iptables?
Estoy intentando que un agente SNMP envíe capturas en 1620 en lugar de 162. Lamentablemente, hasta ahora solo he logrado cambiar el puerto de origen:
iptables -t nat -A POSTROUTING -p udp --dport 162 -j SNAT --to: 1620
@PiedPiper tenía razón. Con DNAT debe especificar una dirección IP, pero solo queremos hacer una redirección de puertos, por lo que -j REDIRECT puede funcionar en este caso.
Ver 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 reinyectar el paquete con el puerto modificado.
Lo hice 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.
Suponiendo que sabe a qué máquina está enviando:
iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620
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 le permite insertar reglas DNAT en la cadena OUTPUT, pero
esto no es totalmente compatible con 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 contrate a Rusty para escribirlo, no lo esperaría pronto).La limitación actual es que solo puede cambiar el destino a
la máquina local (p. ej. `j DNAT --a la 127.0.0.1 ''), no a ninguna otra máquina; de lo contrario, las respuestas no se traducirán correctamente.
podrías redirigir 162 a 1620
iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT - to-port 1620