Paquetes marcianos: concepto y relación con la monitorización
Tan curioso nombre, Paquetes Marcianos, fue acuñado en la norma RFC 1812 y para ser exactos habla de Direcciones Marcianas (contenidas, por supuesto, en un Paquete Marciano). En el siglo pasado los medios de comunicación difundieron mucho la posibilidad de hallar vida en el planeta Marte, y por ello los ingenieros definieron así esta categoría para paquetes que no deberían llegar y que tampoco se “sabe” de dónde vienen. Como la realidad siempre supera la ficción, hoy tenemos aparatos posados en el planeta rojo que envían los datos recabados -especulamos que en paquetes UDP, que no necesitan reconocimiento de llegada, debido a las enormes distancias- directamente a la Administración Nacional de la Aeronáutica y del Espacio (NASA), por lo que está completamente descartado que nos lleguen a nosotros, o no al menos de manera directa.
Uno de los trabajos de la monitorización también implica equipos de observabilidad de un sistema y eso haremos hoy; todos los días, algo nuevo.
Direcciones IP y los Paquetes Marcianos
En un artículo anterior explicamos en detalle qué son redes privadas y redes públicas, asignación de direcciones IP a cada uno de nuestros dispositivos (IPAM) e hicimos unos ejemplos numéricos en sistema binario para determinar si una dirección IP pertenecía a una determinada subred. Todo eso lo hicimos de manera muy simplificada y para nada académica, pero sí de manera didáctica y pragmática; aquí haremos otro tanto.
Los ordenadores que pertenecen a una red privada o pública se comunican por medio de paquetes de datos a través de la tecnología Ethernet, muy bien conocida e implementada en todo el mundo. Cada paquete de datos contiene la dirección destino y además otros campos específicos, como por ejemplo el tiempo de vida útil (Time To Live o TTL), del cual va restando a medida que es pasado y reenviado por cada ordenador o aparato hasta llegar a su destino. Si es reenviado muchas veces llegará el momento en que el paquete “muere” y es sencillamente descartado (esto ayuda a descongestionar la red, los paquetes no deben deambular de manera infinita). Si el paquete era tipo UDP no hay problema, pues no hay que devolver respuesta como es el caso de los TCP. Debido a esto, existe otro campo que es la dirección de origen, a la cual se le devuelve el paquete indicando si pudo ser entregado, si se acabó el TTL, etc.
Aunque lo anterior es totalmente válido tanto para redes privadas como públicas, vamos a ubicarnos en una red pública, es decir, nuestro ordenador conectado directamente a un módem y de allí a Internet.
“ Dado este panorama, un Paquete Marciano es todo aquel que alcanza uno de nuestros dispositivos y que contiene una dirección de destino y/o dirección de origen que pertenece a un conjunto de direcciones IP reservado para uso especial.”
Ya vimos que las redes privadas tienen tres grupos especialmente reservados y que son bien conocidos, pero existen otras direcciones reservadas para propósitos muy especiales como por ejemplo 192.88.99.0/24, la cual se pensaba utilizar para redireccionar tráfico entre IPv4 e IPv6. Cualquier paquete que nos llegue con esa dirección, 192.88.99.X (para X entre 0 y 254), incluyendo otras direcciones especiales, sencillamente es un Paquete Marciano que debe ser desechado inmediatamente.
Enrutadores y puentes
Un dispositivo, para ampliar y no hablar solamente de computadoras, generalmente tiene una sola dirección IP asignada, pero puede darse el caso de que tenga dos o más. Nuestros portátiles son el mejor ejemplo: pueden estar conectados por cable a una red y estar conectados de manera inalámbrica a otra red distinta.
Ahora imaginemos que por Ethernet nuestro equipo está conectado a Internet y con una dirección IP pública y por medio de Ubuntu colocamos un punto de acceso inalámbrico, asignamos direcciones IP al resto de nuestros equipos, etcétera (esto es un buen trabajo y da mucho que hacer, pero la práctica hace al Maestro). Os hemos dibujado un esquema:
Evidentemente que nuestro ordenador conectado al módem funciona como un puente y a la vez como un enrutador, al cual le llegan las peticiones hacia Internet de nuestros equipos porque lo hemos configurado como puerta de enlace predeterminada (192.168.1.1 en nuestro ejemplo gráfico): tomaremos los paquetes y en el campo de dirección de origen colocaremos la dirección IP pública y enviaremos el paquete. También llevaremos cuenta de quién pidió qué, para que cuando nos respondan podamos reenviar ese resultado de paquete al equipo de nuestra red de área local. Esto es lo que se llama traducción de direcciones de red y cualquier distro GNU/Linux puede ser configurado para ello; en nuestro caso personal utilizamos Debian/Ubuntu.
Ahora bien, nuestra flamante impresora de red quedó, por un error nuestro, configurada y fijada con una dirección IP 192.168.0.70 (repetimos: nuestra simplificación es al máximo); pues allí tendremos un excelente ejemplo que ocasiona Paquetes Marcianos. Generalmente, este tipo de paquetes aparecen por configuraciones incorrectas de los más diversos dispositivos: neveras, cámaras de vídeo, televisores, etc. (todo lo que conocemos como el Internet de las cosas).
Visualización del tráfico de red con iptraf
Un programa que podremos usar para visualizar los paquetes y direcciones -y el tráfico de red en general- es iptraf. Con el comando sudo apt-get install iptraf
lo traeremos a nuestra máquina y luego con sudo iptraf-ng -i eth0
(si queremos ver la tarjeta inalámbrica en vez de eth0 usaremos wlan0) veremos algo parecido a esto:
Llevar cuenta y registro de los Paquetes Marcianos
Aunque la norma RFC 1812 recomienda que al recibir un Paquete Marciano debe registrarse sus datos y luego ser desechado, sin embargo en las diferentes distribuciones GNU/Linux no siempre viene habilitado por defecto. Una manera de verificar si el sistema los está registrando:
grep [01] /proc/sys/net/ipv4/conf/*/log_martians|egrep "default|all"
El resultado, dos líneas, ambas, deben terminar en “1”. También podremos ver cómo está configurado para todas las interfaces de red. Es un comando más sencillo, pero más poderoso:
sysctl -a | grep martian
Si no terminan en “1”, podemos activarlos; en el fichero /etc/sysconfig/sysctl agregamos:
net.ipv4.conf.all.log_martians=1 net.ipv4.conf.default.log_martians=1
Por último, deberemos reiniciar el servicio con sudo sysctl -p
Para visualizarlos:
grep -i --color martian /var/log/messages*
¿Qué causa los Paquetes Marcianos?
En orden de frecuencia:
- La causa más común: un equipo con dos o más interfaces de red conectados a un mismo conmutador, concentrador o enrutador.
- Un enrutador mal configurado.
- Direcciones IP mal configuradas, como vimos, o por ejemplo que utilicen una red Clase E (direcciones IP 240.X.X.X). Algunos sistemas operativos para enrutadores como Juno, basado en FreeBSD, se pueden configurar para incluir esta Clase E dentro del reconocimiento de Paquetes Marcianos.
- Direcciones MAC dinámicas.
Rastreando los Paquetes Marcianos
Pareciera una contradicción: si no sabemos de dónde viene el Paquete Marciano, ¿cómo lo podemos rastrear?
Como os dijimos, si ya activamos su registro, deberemos buscar en los logs las líneas donde nos informará la dirección de destino, la dirección de origen, la interfaz de red por donde fue recibida y por último lo más importante: los bytes 7 a 12 que representan la dirección MAC, el cual es un dato más confiable para entregarlo al Administrador del Sistema.
Monitorización en grandes empresas
Los Paquetes Marcianos (y, en general, el tráfico de red) son entera responsabilidad del Administrador de Sistemas; no obstante, el equipo de monitorización siempre debe estar presto y atento para su apoyo y ser su mano derecha en el trabajo diario. La flexibilidad de Pandora FMS la demostramos con hechos, y desde nuestra versión 4 (año 2013) implementamos la monitorización de capturas de comandos o “MCC” (en la Wiki de Pandora FMS describe cómo habilitarlo), la cual afirmamos es una herramienta en el trabajo de observabilidad de hoy. Podremos crear en Pandora FMS un grupo llamado “Administradores de Sistema”, con los derechos para acceder a la característica MCC y ejecutar el programa netstat (apenas una de las herramientas que todo Administrador de Sistemas debe conocer):
Aunque Pandora FMS tiene una función de descubrimiento automatizado de nuevos dispositivos en una red, lo que le permite generar espectaculares mapas de red, los Paquetes Marcianos en realidad caen en la categoría de monitoreo de red y en este artículo, en este mismo blog, bien lo explicamos en detalle.
Pandora FMS: “Al infinito y más allá”
Con todo lo que tengamos que lidiar en el área de monitorización presente y futura, siempre podremos contar con una poderosa herramienta como lo es Pandora FMS. Trabajamos constantemente en analizar escenarios ubicados en el límite -Paquetes Marcianos incluidos-, porque nuestro trabajo es llevaros las soluciones y, ¿por qué no?, ¡también las mejoras que resulten de estos análisis! ¿Tenéis un escenario de monitorización que sea un reto para Pandora FMS? ¡Contáctadnos y os atenderemos!
Programador desde 1993 en KS7000.net.ve (desde 2014 soluciones en software libre para farmacias comerciales en Venezuela). Escribe regularmente para Pandora FMS y ofrece consejos en el foro. También colaborador entusiasta en Wikipedia y Wikidata. Machacador de hierros en gimnasios y cuando puede se ejercita en ciclismo también. Fanático de la ciencia ficción. Programmer since 1993 in KS7000.net.ve (since 2014 free software solutions for commercial pharmacies in Venezuela). He writes regularly for Pandora FMS and offers advice in the forum. Also an enthusiastic contributor to Wikipedia and Wikidata. Crusher of irons in gyms and when he can he exercises in cycling as well. Science fiction fan.