
Hice el reenvío de puertos siguiendo este tutorial: http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/
iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
iptables -t nat -A POSTROUTING -j MASQUERADE
Pero quiero ENMASCARAR solo los puertos con los reenvíos, porque en el mismo servidor tengo un servidor web y si enMASCARO todo el tráfico, el servidor web deja de funcionar.
¿Alguna idea?
SOLUCIÓN:
iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j SNAT --to-source 2.2.2.1
Respuesta1
si usteden realidadSi quieres hacer un, MASQUERADE
entonces la forma correcta de hacerlo es así:
iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j MASQUERADE
de esta manera MASQUERADE
se aplicará solo a paquetes editados con DNAT.
Sin embargo, tenga en cuenta que MASQUERADE
está destinado principalmente a casos de IP dinámica (como el acceso telefónico) y, en el caso de una IP estática, SNAT
debería usarse tal como lo propuso. Desde iptables
la página de manual:
Solo debe usarse con conexiones IP (acceso telefónico) asignadas dinámicamente: si tiene una dirección IP estática, debe usar el destino SNAT. El enmascaramiento equivale a especificar una asignación a la dirección IP de la interfaz por la que sale el paquete, pero también tiene el efecto de que las conexiones se olvidan cuando la interfaz deja de funcionar. Este es el comportamiento correcto cuando es poco probable que el siguiente acceso telefónico tenga la misma dirección de interfaz (y por lo tanto, cualquier conexión establecida se pierde de todos modos).
Sin embargo, hay una advertencia para ambos MASQUERADE
: SNAT
no funcionará si 2.2.2.2 es un VIP en la misma máquina.