On 02/19/2013 04:12 AM, Francisco J. Bejarano wrote:
El 19/02/13 12:15, Francisco J. Bejarano escribió:El 19/02/13 08:23, Francisco J. Bejarano escribió:El 18/02/13 18:09, consultores escribió:On Mon, 18 Feb 2013 15:26:43 +0100 "Francisco J. Bejarano" <francisco.bejarano@openknowledgenetwork.com> wrote:Hola Tengo un problema extraño de red, o bueno, que no se muy bien a que se debe. Tengo dos LAN que pasan a traves de un switch(1) y llega a un firewall Linux (FW). Este firewall linux tiene una interfaz a la red (IFLAN1) y otra a la IFLAN2 y otras interfaces. Una de ellas IFSDSL va a otro switch(2) donde estan conectados 2 SDSLs (SDLS y SDSL2). TEngo una serie de reglas que marcan los paquetes que vienen de LAN1 y LAN2 al puerto 22 con marca1 y marca2 respectivamente. Despues tengo las siguientes reglas 30010: from all fwmark 0x2 lookup sdsl2 30020: from all fwmark 0x1 lookup sdsl 30030: from LAN1 lookup adsl 30040: from LAN2 lookup adsl 32766: from all lookup main 32767: from all lookup default La tabla de rutas main va, por defecto, a SDSL. Lo que se marca con 1 va a sdsl y lo que se marca con 2 a sdsl2. El marcado funciona porque envia a sdsl si viene de la LAN 1 y destino puerto 22 y a SDSL2 si viene de LAN2 con destino puerto 22. Si no es el puerto 22 va la ADSL. Esto en la tabla mangle en prerouting. Despues en la tabla filter dejo pasar todo para pruebas a una direccion de la LAN2 (mi ordenador IPLAN2) para que no haya problemas con puertos. Y por ultimo, en la tabla NAT en postrouting tengo una regla de SNAT para que traduzca lo que salga por la IFSDSL del firewall y le ponga esa IP. Pues bien, mi problema es el siguiente: Cuando conecto desde mi IP de la LAN2 (aunque pasa lo mismo con la LAN1) con ssh a un servidor de internet mio me da timeout. Hago en firewall una captura de todas las interfaces del puerto 22 y el servidor de internet (INTSERV) y obtengo que hay un syn para la conexion y la vuelta hay un syn,ack para la IFSDSL pero no hay un SYN,ACK para la IPLAN2. IPLAN2---> INTSERV SYN IPSDSL---> INTSERV SYN INTSERV--> IPSDSL SYN,ACK Se repite lo mismo Esto me provoca un timeout en ssh, es decir, no puedo conectar. Sin embargo, esto es lo raro. Si pongo la siguiente regla en ip rule, quedando asi: 29999: from IPLAN2 lookup sdsl 30010: from all fwmark 0x2 lookup sdsl2 30020: from all fwmark 0x1 lookup sdsl 30030: from LAN1 lookup adsl 30040: from LAN2 lookup adsl 32766: from all lookup main 32767: from all lookup default Vuelvo a conectar por ssh al mismo servidor y se produce lo siguente: IPLAN2---> INTSERV SYN IPSDSL---> INTSERV SYN INTSERV--> IPSDSL SYN,ACK INTSERV--> IPLAN2 SYN,ACK Y despues, todos los ACK y paquetes relacionados con ssh. Es decir hay un paquete más de vuelta a mi IP en la LAN2 y puedo conectar por ssh. Lo mismo ocurre con la LAN1 y las IPs de la LAN1. Estoy usando las mismas reglas de firewall, las mismas rutas, los mismos componentes de hardware, etc. Y estoy dejando pasar todo si el origen y destino es mi IPLAN2 por cualquier protocolo y puerto. Entonces, por que en un caso llega el segundo SYN, ACK mi IPLAN2 y se establece la conexion y en el otro caso no llega produciendo un timeout si solo cambia la regla de ip rule? Además tengo otras 2 lan conectadas al firewall pero que no hacen marcado por el puerto 22. Estas 2 redes si que conectan por ssh sin problemas a traves del firewall usando la regla de la tabla main que va por SDSL... ¿Alguien sabe que puede estar pasando? Es muy raro ¿o se me escapa alguna tonteria relacionada con ip rule que estoy haciendo mal? Lo que no entiendo es porque solo pasa con dos LAN. Os pongo las reglas del mangle. target prot opt in out source destination MARK tcp -- * * ! LAN2 0.0.0.0/0 multiport dports 22,1723 MARK set 0x1 MARK tcp -- * * LAN2 0.0.0.0/0 tcp dpt:22 MARK set 0x2 SaludosHacia adonde apuntan tus busquedas DNS?Hola Apuntan hacia un DNS interno que esta en otra LAN conectada al firewall. El DNS si lo resuelve, por? 2 puntualizaciones que he puesto mal. El trafico de las otras lan que probe con ssh sale por sdsl como he puesto pero si que estan marcadas con 1. He puesto que salían por main, pero son otros puertos no el 22. Por el 22 conectan correctamente las otras LAN (no la LAN1, marcada tambien con 1 ni la LAN2 marcada con 2).Hola ¿Nadie sabe que puede estar pasando? Añado un par de cosas Si hago un tcptraceroute -s IFLAN2 INETSERVER 80 traceroute to INETSERVER (74.125.230.215), 30 hops max, 60 byte packets 1 ADSL 0.081 ms 0.061 ms 0.055 ms 2 10.15.3.6 (10.15.3.6) 0.661 ms 1.377 ms 1.846 ms 3 1.16.218.87.dynamic.jazztel.es (87.218.16.1) 29.813 ms 32.820 ms 34.803 ms 4 10.255.2.254 (10.255.2.254) 37.538 ms 38.500 ms 38.984 ms 5 106.217.106.212.static.jazztel.es (212.106.217.106) 39.222 ms 114.217.106.212.static.jazztel.es (212.106.217.114) 52.948 ms 106.217.106.212.static.jazztel.es (212.106.217.106) 42.190 ms 6 113.217.106.212.static.jazztel.es (212.106.217.113) 42.187 ms 48.500 ms 48.442 ms 7 254.216.106.212.static.jazztel.es (212.106.216.254) 45.146 ms 46.024 ms 46.166 ms 8 * 2.217.106.212.static.jazztel.es (212.106.217.2) 28.281 ms 28.658 ms 9 72.14.235.18 (72.14.235.18) 29.659 ms 72.14.235.20 (72.14.235.20) 29.313 ms 35.925 ms 10 209.85.240.191 (209.85.240.191) 46.862 ms 209.85.240.189 (209.85.240.189) 55.524 ms 54.605 ms 11 72.14.235.168 (72.14.235.168) 56.654 ms 72.14.235.172 (72.14.235.172) 116.389 ms 46.697 ms 12 209.85.242.49 (209.85.242.49) 51.695 ms 47.953 ms 55.410 ms 13 par08s09-in-f23.1e100.net (74.125.230.215) <syn,ack> 49.896 ms 47.677 ms 47.690 ms me devuelve todo ok Si lo hago al puerto 22 tcptraceroute -s IFLAN2 INETSERVER 22 traceroute to INETSERVER (173.194.34.24), 30 hops max, 60 byte packets 1 SDSL2 7.380 ms 9.126 ms 10.667 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 * * * 14 * * * 15 * * * 16 * * * 17 * * * 18 * * * 19 * * * 20 * * * 21 * * * 22 * * * 23 * * * 24 * * * 25 * * * 26 * * * 27 * * * 28 * * * 29 * * * 30 * * * Esto me pasa con la LAN1 y la LAN2 y el SDSL y el SDSL2. Pero si, a través del firewall, me conecto por ssh desde otra LAN que usa SDSL y el puerto 22, es decir usa la regla de mangle ! LAN2 mark 1... llega perfectamente. tcptraceroute -s IFLAN3 INETSERVER 22 traceroute to INETSERVER , 30 hops max, 60 byte packets 1 SDSL 10.758 ms 12.110 ms 13.291 ms 2 * * * 3 10.115.54.49 (10.115.54.49) 63.195 ms 85.385 ms 87.591 ms 4 10.127.160.1 (10.127.160.1) 93.517 ms 94.710 ms 95.780 ms 5 10.254.8.198 (10.254.8.198) 90.033 ms 91.122 ms 92.314 ms 6 10.254.8.177 (10.254.8.177) 97.806 ms 87.989 ms 88.193 ms 7 10.254.3.126 (10.254.3.126) 87.991 ms 10.254.3.114 (10.254.3.114) 106.782 ms 10.254.5.238 (10.254.5.238) 112.581 ms 8 xe-11-1-0.bar2.Madrid2.Level3.net (213.242.71.181) 111.886 ms 213.242.109.169 (213.242.109.169) 110.468 ms xe-11-1-0.bar2.madrid2.level3.net (213.242.71.181) 110.524 ms 9 4.69.158.169 (4.69.158.169) 110.560 ms 4.69.158.161 (4.69.158.161) 119.588 ms 4.69.158.165 (4.69.158.165) 120.443 ms 10 * * * 11 ae-58-113.csw1.Paris1.Level3.net (4.69.161.46) 127.823 ms ae-59-114.csw1.paris1.level3.net (4.69.161.50) 128.649 ms ae-57-112.csw1.paris1.level3.net (4.69.161.42) 138.804 ms 12 ae-1-51.edge5.paris1.level3.net (4.69.139.203) 138.310 ms 137.916 ms 137.997 ms 13 11-INTERNET.edge5.Paris1.Level3.net (212.73.200.54) 148.675 ms 148.601 ms 153.598 ms 14 te-2-4.bb-d.bap.rhr.de.oneandone.net (212.227.120.42) 152.672 ms 152.397 ms 151.696 ms 15 ae-10.gw-distp-a.bad.oneandone.net (212.227.121.165) 151.995 ms 138.174 ms 150.945 ms 16 ae-1.gw-prtr-r261-a.bad.oneandone.net (195.20.247.53) 151.578 ms 152.751 ms 152.687 ms 17 INETSERVER <syn,ack> 149.574 ms 148.968 ms 149.948 ms En este caso el ip rule que esta usando es ip rule from all fwmark 1 lookup sdsl. Si hago lo mismo desde la LAN1 que usa las mismas reglas que la LAN3 del firewall mangle y del ip rule y del nat. Esto no funciona. Pasa como en la LAN2. Tambien veo que la IFLAN1 y la IFLAN2 estan conectadas a una tarjeta de red Broadcom con modulo tg3 y que todas las demas IF del firewall estan conectadas una tarjeta de 4 puertos con modulo r8169. De todas formas no creo que sea de hardware puesto que si pongo el ip rule con una IP de la LAN1 o la LAN2 con mayor prioridad y la envio por la misma tabla de rutas (sdsl o sdsl2) funciona perfectamente con el puerto 22... No entiendo nada :-D. ¿Alguna sugerencia?He visto que cuando no especifico la IP en el ip rule, la el servidor INETSERVER no llegan paquetes y si la especifico en ip rule por delante de las fwmark si recivo paquetes y respondo en el INETSERVER. Por eso me falta un ack. La cuestion es por que desde LAN1 no llegan paquetes a INETSERV con las ip rule fwmark y si desde la LAN3 y la misma regla fwmark y cuando especifico la IP de la LAN2 conecta perfectamente.
Hola Solamente te paso algunas pistas, no lo lei de nuevo.- Lo del dns, es por que sitenes servidor en alguna red; este podria estar bloqueado. - Cuando usas traceroute y no te da informacion, generalmente se debe a que tenes bloqueado/mal configurado icmp, la solucion es probar por tcp/udp. - Para depurar yo prefiero tcpdump del tipo # tcpdump -vvv -i eth0 'arp' o en lo que te interesa. - En general, me parece que es algun pifion con IPtables, ya probastes tus reglas por separado; me refiero a cada ruta/destino?
hasta luego