[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Problema con sub interfaces



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



Reply to: