El port 0: cómo el kernel asigna puertos y el uso de redirecciones

Fuentes: Port 0: How the Kernel Assigns Ports and the Use of Redirections

El puerto 0 no es un puerto real, sino un valor reservado que el sistema operativo utiliza para asignar dinámicamente un puerto temporal. Aunque los protocolos TCP y UDP permiten técnicamente direccionar paquetes a este número, las herramientas estándar y los navegadores lo bloquean. Sin embargo, su ausencia en las listas de puertos válidos lo convierte en un espacio oculto para servicios no convencionales. El artículo analiza cómo el kernel de Linux asigna estos puertos, priorizando números impares para conexiones de salida y pares para servidores, y cómo la API de sockets maneja esta lógica. Se detalla que, aunque un servidor puede escuchar en el puerto 0 mediante redirecciones de iptables o nftables, los clientes tradicionales como telnet o OpenSSH rechazan la conexión, mientras que herramientas como masscan pueden escanearlo. La investigación revela que la mayoría de las respuestas a los puertos 0 provienen de balanceadores de carga F5 BIG-IP que reenvían tráfico, no de servidores activos. Solo un pequeño porcentaje de las direcciones responde con servicios reales como SSH, MySQL o Telnet, demostrando la complejidad de la infraestructura de red moderna y las limitaciones de las herramientas de diagnóstico estándar.