¿No puedes abrir puertos del router? Por qué pasa (y cómo solucionarlo)
Por qué no funciona abrir puertos. Abrir puertos suele fallar por una de seis razones: la IP interna equivocada, un firewall en el propio equipo, tu operador bloqueando el puerto, doble NAT por un segundo router, NAT de operador (CGNAT) o una IP pública dinámica que ha cambiado. La causa oculta más común es el CGNAT: si tu proveedor de internet comparte una IP pública entre muchos clientes, ningún ajuste del router puede hacer que funcione.
¿Atrapado detrás de CGNAT?
Si el bloqueo viene de tu operador, abrir puertos no se puede arreglar desde el router. Consigue una IP pública dedicada que llega a tu servidor por un túnel cifrado, y las conexiones entrantes simplemente funcionan.
Has abierto los puertos en tu router. La regla parece correcta. El servicio está en marcha. Pero las conexiones desde fuera de tu red siguen agotando el tiempo de espera y no tienes ni idea de por qué.
No eres el único. Abrir puertos falla en silencio, y la causa real suele ser algo que tu router no te puede contar. Esta guía repasa las 6 razones más comunes por las que abrir puertos deja de funcionar, cómo diagnosticar cada una y cómo solucionarla. Si llevas horas con el problema, empieza por la lista rápida de diagnóstico del final para descartar causas rápidamente.
Las 6 razones más comunes por las que abrir puertos falla
Antes de entrar en cada causa, aquí tienes un resumen para que vayas directamente a la que encaja con tu situación:
- Dirección IP local incorrecta: tu router reenvía el tráfico a un dispositivo que ha cambiado de IP o ya no la tiene
- El firewall bloquea el puerto: el firewall del sistema operativo de tu servidor descarta en silencio el tráfico entrante
- Tu operador bloquea el puerto: tu proveedor de internet filtra ciertos puertos en las conexiones residenciales
- Doble NAT: un segundo router o el módem del operador hace NAT antes que tu router
- Tu operador usa CGNAT: la causa oculta más común y la más difícil de detectar
- Tu IP dinámica ha cambiado: tu IP pública ha cambiado desde que lo configuraste
1. Dirección IP local incorrecta
La causa más básica: la regla de tu router apunta a una dirección IP que ya no pertenece al equipo donde corre tu servicio.
Ocurre cuando tu servidor obtiene la IP por DHCP y el router le asigna otra dirección tras un reinicio o al caducar la concesión. La regla sigue diciendo "envía el puerto 443 a 192.168.1.50", pero tu servidor ahora está en 192.168.1.52.
Cómo comprobarlo
En tu servidor, verifica su IP local actual:
Linux:
ip a
Busca tu interfaz de red principal (normalmente eth0, enp0s3 o eno1). La línea inet muestra tu dirección IPv4.
Windows:
ipconfig
Busca "Dirección IPv4" en tu adaptador activo.
macOS:
ipconfig getifaddr en0
Ahora compara esa dirección con la IP de la regla de tu router. Si no coinciden, ese es tu problema.
Cómo solucionarlo
Dale a tu servidor una IP local fija para que nunca cambie. Tienes dos opciones:
- Reserva DHCP (recomendado): en el panel de administración del router, busca los ajustes de DHCP y reserva una IP concreta para la dirección MAC de tu servidor. El servidor sigue usando DHCP, pero siempre recibe la misma dirección.
- IP fija manual: configura una IP fija directamente en la interfaz de red del servidor. En Linux suele hacerse en
/etc/netplan/(Ubuntu/Debian) o con NetworkManager.
En ambos casos, asegúrate de que la IP reservada quede fuera del rango del pool DHCP del router para evitar conflictos.
2. El firewall bloquea el puerto
Tu regla en el router es correcta y el tráfico llega a tu servidor, pero el firewall del sistema operativo lo descarta antes de que alcance tu aplicación.
Es especialmente habitual en servidores Linux donde ufw o iptables vienen activados por defecto, y en Windows, donde el Firewall de Windows Defender bloquea las conexiones entrantes salvo que crees una regla explícita.
Cómo comprobarlo
Linux (ufw):
sudo ufw status verbose
Si la salida muestra Status: active y tu puerto no aparece, el firewall lo está bloqueando.
Linux (iptables / nftables):
sudo iptables -L -n | grep <your-port>
Si no hay ninguna regla ACCEPT para tu puerto, o hay una regla DROP/REJECT antes en la cadena, el tráfico se está bloqueando.
Windows: Abre el Firewall de Windows Defender con seguridad avanzada y revisa las Reglas de entrada. Busca una regla que permita tu puerto. Si no existe, el tráfico se está descartando en silencio.
Cómo solucionarlo
Linux (ufw):
sudo ufw allow 443/tcp
sudo ufw allow 25565/tcp # Minecraft, for example
Linux (iptables):
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Windows: Crea una nueva Regla de entrada en el Firewall de Windows Defender: elige "Puerto", introduce el número de puerto, selecciona "Permitir la conexión" y aplícala a todos los perfiles.
Después de los cambios, prueba primero desde otro dispositivo de tu red local (por ejemplo, curl http://192.168.1.50:8080) para confirmar que el firewall ya no bloquea antes de probar desde fuera.
3. Tu operador bloquea el puerto
Aunque el router y el firewall estén bien configurados, tu proveedor de internet puede estar filtrando puertos concretos en las conexiones residenciales. Es habitual y casi nunca está documentado.
Puertos que los operadores bloquean con frecuencia en líneas residenciales:
- Puerto 25 (SMTP): bloqueado para evitar spam desde equipos domésticos comprometidos
- Puerto 80 (HTTP): bloqueado para desalentar el alojamiento web en planes residenciales
- Puerto 443 (HTTPS): bloqueado por algunos operadores, menos habitual que el 80
- Puerto 8080 (HTTP alternativo): bloqueado por algunos operadores
Cómo comprobarlo
La prueba más rápida es usar un puerto alto y aleatorio que ningún operador se molestaría en bloquear:
- Inicia un servidor temporal en tu equipo:
python3 -m http.server 9999
- Crea en tu router una regla para abrir el puerto 9999 hacia tu servidor.
- Desde fuera de tu red (un móvil con datos o la conexión de un amigo), intenta conectar:
curl http://<your-public-ip>:9999
Si el puerto 9999 funciona pero el original no, tu operador está bloqueando ese puerto concreto.
Cómo solucionarlo
- Usa un puerto no estándar: ejecuta tu servicio en un puerto alto (por ejemplo, 8443 en lugar de 443, o 2525 en lugar de 25). Es la alternativa más sencilla, pero quien se conecte tendrá que conocer el puerto personalizado.
- Llama a tu operador: algunos desbloquean puertos si se lo pides, sobre todo si pasas a un plan de empresa. Vale la pena preguntar.
- Usa un servicio de túnel: si necesitas puertos estándar y tu operador no cede, un servicio como GetPublicIP te da una IP pública dedicada con todos los puertos disponibles, sin depender de las restricciones de tu operador.
4. Doble NAT
El doble NAT se produce cuando hay dos dispositivos haciendo traducción de direcciones de red (NAT) entre tu servidor e internet. El caso más típico: tu operador te dio un módem-router y conectaste tu propio router detrás. Ambos hacen NAT, así que abrir puertos solo en tu router no basta; el NAT del módem del operador descarta el tráfico entrante antes de que llegue a tu router.
Cómo comprobarlo
Ejecuta un traceroute desde tu servidor y fíjate en los primeros saltos:
Linux:
traceroute -n 8.8.8.8
Windows:
tracert 8.8.8.8
Si ves dos direcciones IP privadas en los primeros saltos (por ejemplo, 192.168.1.1 y luego 192.168.0.1, o 192.168.1.1 y luego 10.0.0.1), tienes doble NAT. El primer salto es tu router y el segundo es el módem del operador haciendo su propio NAT.
Otra pista: entra en tu router y mira la IP WAN. Si es una dirección privada (192.168.x.x, 10.x.x.x o 172.16-31.x.x) en lugar de una pública, algo por encima está haciendo NAT.
Cómo solucionarlo
- Modo bridge (la mejor opción): entra en el módem-router del operador y ponlo en modo bridge (puente). Así se desactivan sus funciones de NAT y DHCP y queda como un simple módem. Tu router recibe entonces la IP pública directamente en su interfaz WAN y abrir puertos funciona como debe.
- DMZ en el módem del operador: si no hay modo bridge, configura la DMZ del módem para enviar todo el tráfico a la IP WAN de tu router. Es menos limpio, pero funciona.
- Sustituye el módem del operador: algunos operadores te permiten usar tu propio módem, lo que elimina el doble NAT por completo.
5. Tu operador usa CGNAT
Esta es la gorda. El NAT de operador (CGNAT) es la causa oculta número uno de que abrir puertos no funcione, y la más difícil de diagnosticar para la mayoría, porque en tu lado todo parece correcto.
CGNAT significa que tu operador aplica una capa adicional de NAT dentro de su red y comparte una sola dirección IPv4 pública entre decenas o cientos de clientes. Tu router no tiene una IP pública real, sino una dirección interna del operador. Las reglas para abrir puertos en tu router solo controlan la tabla NAT de tu router. No tienen ningún efecto sobre el CGNAT del operador, que está por encima de tu router y descarta en silencio todas las conexiones entrantes no solicitadas.
El resultado: puedes abrir los puertos a la perfección, tener bien las reglas del firewall y el servidor escuchando, y las conexiones desde fuera seguirán agotando el tiempo de espera. Sin error, sin rechazo, solo silencio. Por eso resulta tan frustrante.
En España, Digi es un operador conocido por usar CGNAT. Si quieres comprobarlo paso a paso, consulta cómo saber si tengo CGNAT.
Para entender a fondo qué es el CGNAT, cómo funciona y qué operadores lo usan, consulta nuestra guía completa para alojar tus propios servicios detrás de CGNAT.
Cómo saber si estás detrás de CGNAT
Paso 1: entra en el panel de administración de tu router y busca la dirección IP WAN (a veces llamada "IP de Internet" o "IP externa").
Paso 2: desde cualquier dispositivo de tu red, comprueba tu IP pública real:
curl https://api.getpublicip.com/ip
Si las dos direcciones no coinciden, estás detrás de CGNAT. Tu router cree que tiene una IP pública, pero el operador la vuelve a traducir antes de que salga a internet.
Paso 3: comprueba si la IP WAN está en el rango reservado para CGNAT. Si tu router muestra una dirección entre 100.64.0.0 y 100.127.255.255, es el rango del RFC 6598 reservado específicamente para CGNAT (o CG-NAT). Es una confirmación definitiva.
Para más formas de comprobar tu IP pública, consulta nuestra guía para encontrar tu IP pública en Linux.
Por qué ninguna configuración del router puede solucionar el CGNAT
Las reglas para abrir puertos en tu router solo controlan la traducción entre tu red local (192.168.x.x) y la dirección WAN del router. Pero con CGNAT, esa dirección WAN no es pública; es una dirección interna del operador. El equipo NAT del operador traduce esa dirección interna a la IP pública compartida, y no tiene ninguna regla de redirección de puertos para tu tráfico. No puedes configurarlo, lo controla tu operador y, en la mayoría de los casos, no añadirá reglas para clientes individuales.
Cambiar de router, activar UPnP, usar el modo DMZ: nada de eso importa. El problema está por encima de tu red.
6. Tu IP dinámica ha cambiado
Si abrir puertos funcionaba antes y de repente dejó de hacerlo, puede que tu operador haya cambiado tu IP pública. La mayoría de los planes residenciales usan asignación dinámica: tu IP pública puede cambiar cuando se reinicia el módem, cuando el operador hace mantenimiento o simplemente al caducar una concesión DHCP.
Quien intente conectarse a tu IP antigua no llegará a ninguna parte (o, peor aún, llegará a la red de otra persona).
Cómo comprobarlo
curl https://api.getpublicip.com/ip
Compara el resultado con la IP que has estado compartiendo o usando en tus registros DNS. Si ha cambiado, ahí tienes la respuesta.
Cómo solucionarlo
- DNS dinámico (DDNS): servicios como DuckDNS, No-IP o el DNS de Cloudflare con un script de actualización pueden actualizar automáticamente un nombre de host para que apunte a tu IP actual. No evita que la IP cambie, pero garantiza que el nombre siempre resuelva a tu dirección más reciente. La mayoría de los routers incluyen soporte para DDNS.
- IP fija de tu operador: pide a tu operador una IP pública fija. Así la IP no cambiará nunca. Consulta nuestra guía para conseguir una IP fija para saber qué esperar.
- IP pública dedicada con GetPublicIP: una dirección de GetPublicIP es fija por defecto, no cambia y no está ligada a tu línea. Si cambias de operador o te mudas, la IP sigue siendo la misma.
Cómo abrir puertos cuando el problema es el CGNAT
Si has confirmado que el CGNAT bloquea la apertura de puertos, los ajustes del router no te servirán. Necesitas que el tráfico llegue a tu servidor por otro camino. Aquí tienes tres opciones realistas, de la más sencilla a la más completa. Para una comparación más amplia, incluidas las VPN con IP dedicada, consulta cómo conseguir una IP pública.
Opción 1: pide a tu operador una IP pública fija
Algunos operadores ofrecen una IP pública dedicada como extra de pago, normalmente por 5–30 USD al mes. Así sales del pool de CGNAT y obtienes una dirección pública real en la que abrir puertos funciona con normalidad.
Inconvenientes: no todos los operadores la ofrecen (sobre todo en planes residenciales). La IP está ligada a tu línea física; si te mudas, la pierdes. Las IP residenciales suelen tener mala reputación como remitentes de correo. No hay conmutación por error si se cae tu conexión.
Para el análisis completo: cómo conseguir una IP fija.
Opción 2: Cloudflare Tunnel (gratis, solo HTTP/HTTPS)
Cloudflare Tunnel crea una conexión saliente desde tu servidor hasta la red de Cloudflare, y Cloudflare hace de proxy inverso del tráfico HTTP/HTTPS de vuelta hacia ti. Es gratis y evita el CGNAT porque el túnel es saliente (y el CGNAT lo permite).
Inconvenientes: solo funciona con HTTP y HTTPS. El SSL/TLS termina en Cloudflare, así que pueden ver tu tráfico en texto plano. No admite correo (SMTP), servidores de juegos, VoIP ni ningún protocolo basado en UDP. No obtienes una IP pública real.
Para una comparación detallada: GetPublicIP vs Cloudflare Tunnel vs Tailscale.
Opción 3: GetPublicIP (IPv4 dedicada, cualquier protocolo)
GetPublicIP te da una dirección IPv4 pública dedicada que llega a tu servidor por un túnel WireGuard cifrado. Tu servidor abre una conexión saliente hacia nuestra red (que el CGNAT permite), y todo el tráfico entrante de tu IP pública fluye por ese túnel hasta tu servidor.
Por qué esto funciona para abrir puertos: obtienes una IP pública real y fija con los 65.535 puertos disponibles. Abre exactamente los puertos que necesites desde la consola de gestión. Funciona cualquier protocolo: TCP, UDP, ICMP. El SSL/TLS está cifrado de extremo a extremo; nunca terminamos ni inspeccionamos tu tráfico.
La configuración lleva unos cinco minutos: crea una cuenta, crea una IP, descarga la configuración de WireGuard e inicia el túnel. Tienes el paso a paso completo en la guía de primeros pasos. Cuesta 8,99 USD al mes por IP, sin permanencia.
Lista rápida de diagnóstico
Sigue estos pasos en orden. Cada uno descarta una causa concreta y, al final, sabrás exactamente qué falla.
1. ¿Tu servidor está escuchando realmente en el puerto?
# Linux
ss -tlnp | grep <port>
# Windows
netstat -an | findstr <port>
Si no hay nada escuchando, el servicio no está en marcha o está enlazado a la interfaz equivocada (por ejemplo, 127.0.0.1 en lugar de 0.0.0.0).
2. ¿Puedes conectarte desde otro dispositivo de tu red local?
Desde otra computadora o un móvil en la misma red:
curl http://192.168.1.50:<port>
Si esto falla, el problema está en el propio servidor (firewall o configuración), no en tu router ni en tu operador.
3. ¿Tu router reenvía a la IP local correcta?
Revisa la regla en el panel de administración del router. Verifica que la IP de destino coincide con la IP actual de tu servidor (ejecuta ip a o ipconfig en el servidor para confirmarlo).
4. ¿El firewall del sistema operativo permite el puerto?
# Linux (ufw)
sudo ufw status
# Linux (iptables)
sudo iptables -L -n
En Windows, revisa las Reglas de entrada en el Firewall de Windows Defender con seguridad avanzada.
5. Compara la IP WAN de tu router con tu IP pública real
curl https://api.getpublicip.com/ip
Si el resultado no coincide con la IP WAN de tu router, estás detrás de CGNAT. Abrir puertos en el router no puede funcionar.
6. ¿La IP WAN está en el rango 100.64.x.x?
Si la interfaz WAN de tu router muestra una dirección entre 100.64.0.0 y 100.127.255.255, el CGNAT está confirmado. No hay solución desde el router.
7. Prueba un puerto alto aleatorio desde fuera de tu red
Abre un puerto del rango 49152-65535 y pruébalo desde un móvil con datos o desde la red de un amigo. Si ni siquiera ese puerto alto funciona desde fuera, el problema está por encima de tu router: o bien CGNAT, o bien un firewall a nivel del operador.
Preguntas frecuentes
¿Por qué no funciona abrir puertos si lo he configurado bien?
La causa oculta más común es el CGNAT (carrier-grade NAT): tu proveedor de internet comparte una sola IP pública entre muchos clientes. Las reglas de tu router son técnicamente correctas, pero solo controlan la primera capa de NAT. El CGNAT del operador está por encima de tu router y descarta todo el tráfico entrante antes de que llegue a ti. Compara la IP WAN de tu router con el resultado de curl https://api.getpublicip.com/ip. Si no coinciden, el problema es el CGNAT. Otras causas son firewalls del sistema operativo que descartan el tráfico en silencio, que la IP local del servidor cambie por DHCP o que tu operador bloquee puertos concretos en conexiones residenciales.
¿Cómo sé si mi operador usa CGNAT?
Entra en tu router y anota la dirección IP WAN. Después ejecuta curl https://api.getpublicip.com/ip desde cualquier dispositivo de tu red. Si las dos direcciones no coinciden, tu operador usa CGNAT. Otra señal clara es ver en la interfaz WAN del router una dirección entre 100.64.0.0 y 100.127.255.255; es el rango reservado para CGNAT definido en el RFC 6598. Para una explicación completa, consulta nuestra guía para alojar tus propios servicios detrás de CGNAT.
¿Se pueden abrir puertos detrás de CGNAT?
No. El CGNAT lo controla tu proveedor de internet, no tu router. Ninguna configuración del router puede solucionarlo, porque el equipo NAT del operador no sabe a qué cliente debe entregar una conexión entrante. Necesitas una alternativa: pedir una IP pública fija a tu operador, usar un proxy inverso como Cloudflare Tunnel (solo HTTP/HTTPS) o usar un servicio de IP pública dedicada como GetPublicIP, que lleva una IPv4 pública real hasta tu servidor a través de WireGuard.
¿Una VPN soluciona los problemas al abrir puertos?
Una VPN de privacidad convencional (NordVPN, Mullvad, etc.) no soluciona el problema de abrir puertos. La mayoría de las VPN de consumo bloquean por completo las conexiones entrantes; están pensadas para ocultar tu IP, no para exponer una. Un servicio de túnel como GetPublicIP es distinto: te asigna una IP pública dedicada y dirige todo el tráfico entrante a tu servidor por un túnel WireGuard cifrado, lo que evita por completo el CGNAT y los bloqueos de puertos del operador.
¿Por qué mi operador bloquea ciertos puertos?
Los operadores bloquean puertos como el 25 (SMTP), el 80 (HTTP) y el 443 (HTTPS) en conexiones residenciales para evitar el spam desde equipos comprometidos, reducir abusos y empujar a contratar planes de empresa. Algunos también los bloquean para cumplir normativas regionales. Puedes comprobar si un puerto concreto está bloqueado abriendo en su lugar un puerto alto como el 9999. Si el tráfico llega por el 9999 pero no por el 80, tu operador está filtrando ese puerto.
¿Cuál es la forma más fácil de abrir puertos detrás de CGNAT?
La solución completa más sencilla es GetPublicIP. Regístrate, crea una dirección IPv4 pública dedicada, descarga la configuración de WireGuard en tu servidor e inicia el túnel. Todo el tráfico entrante de tu IP pública llega a tu servidor por un túnel cifrado: cualquier protocolo, cualquier puerto. Se configura en unos cinco minutos y cuesta 8,99 USD al mes. Consulta la guía de primeros pasos para el paso a paso completo.