Te cuento como es el asunto en detalle. Tengo un debian sarge actualizado con las siguientes ips:
www:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:01:29:24:3E:EC inet addr:192.168.2.17 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:129011 errors:0 dropped:0 overruns:0 frame:0 TX packets:929973 errors:0 dropped:0 overruns:0 carrier:0 collisions:1074 txqueuelen:100 RX bytes:122783835 (117.0 MiB) TX bytes:62740003 (59.8 MiB) Interrupt:10 Base address:0xa000 eth0:1 Link encap:Ethernet HWaddr 00:01:29:24:3E:EC inet addr:192.168.2.18 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:10 Base address:0xa000 eth0:2 Link encap:Ethernet HWaddr 00:01:29:24:3E:EC inet addr:192.168.2.20 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:10 Base address:0xa000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:71825 errors:0 dropped:0 overruns:0 frame:0 TX packets:71825 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:6610718 (6.3 MiB) TX bytes:6610718 (6.3 MiB) esta maquina esta ubicada en una DMZ que sale a internet a traves de un woody que esta conectado a traves de un switch directamente por la placa eth0, la ip del woody interna es 192.168.2.1. El firewall tiene asignadas en la placa publica eth0: 5 ips publicas. Lo que necesito hacer es que el firewall redireccione con DNAT segun la ip publica a diferentes ips privadas de la dmz, estoy usando la sig regla : /sbin/iptables -t nat -A PREROUTING -p tcp -i $EXT_IF -d $DMZ_IP4_PUB --dport 20 -j DNAT --to $DMZ_IP4_PRIV:20 /sbin/iptables -t nat -A PREROUTING -p tcp -i $EXT_IF -d $DMZ_IP4_PUB --dport 21 -j DNAT --to $DMZ_IP4_PRIV:21 El SNAT lo resuelvo de la siguiente forma, para que cada conexion entrante a una ip privada (proveniente desde internet) se mantenga en la misma IP publica que le corresponde: iptables -t nat -A POSTROUTING -s $DMZ_IP1_PRIV -j SNAT --to $DMZ_IP1_PUB iptables -t nat -A POSTROUTING -s $DMZ_IP2_PRIV -j SNAT --to $DMZ_IP2_PUB iptables -t nat -A POSTROUTING -s $DMZ_IP3_PRIV -j SNAT --to $DMZ_IP3_PUB etc.. esto funciona bien, el problema esta que la maquina linux que esta en la DMZ (que tiene iptables TODO en ACCEPT) siempre responde con la IP principal que tiene en la eth0, es decir, que si alguna maquina le envia una peticion a la ip que tiene en la subinterfaz eth0:1, el servidor SIEMPRE responde con la ip de la eth0... en consecuencia los paquetes llegan desde internet al servidor en la DMZ, se NATEAN con DNAT y se redireccionan correctamente al servidor, pero si el pedido llegara a una IP que estuviera definida por una subinterfaz, por ejemplo eth0;1 al responder con la IP del eth0 el firewall lo natea a la IP publica que corresponde a la regla de SNAT de la ip que viene, o sea la de la eth0... y se pierde la comunicacion.. Para comprobarlo intente hacer ping -I 192.168.2.18 192.168.2.1 y a traves de tcpdump encuentro lo siguiente: (desde el servidor) PING 192.168.2.1 (192.168.2.1): 56 data bytes 64 bytes from 192.168.2.1: icmp_seq=0 ttl=255 time=1.5 ms (tcpdump en el firewall) 14:53:08.049772 192.168.2.17 > 192.168.2.1: icmp: echo request (DF) 14:53:08.050130 192.168.2.1 > 192.168.2.17: icmp: echo reply 14:53:09.050003 192.168.2.17 > 192.168.2.1: icmp: echo request (DF) 14:53:09.050331 192.168.2.1 > 192.168.2.17: icmp: echo reply fijense que aunque intento un icmp con direccion de origen 192.168.2.18, termina saliendo con la ip 192.168.2.17, que es la de la eth0... Por otro lado tengo una sarge que haciendo la misma prueba sale el icmp desde la ip que uno especifica en el parametro -I del ping, o sea que el ping -I funciona. Tambien e recompilado un kernel 2.4.29 desde fuentes, pero el resultado ha sido el mismo... no se realmente como solucionar esto. Cualquier idea sera muy bienvenida. Gracias de antemano -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]