Saltar al contenido principal
Teramont Logo
Puerto 25565 no funciona: diagnostica tu servidor Minecraft paso a paso
Volver al blog

Puerto 25565 no funciona: diagnostica tu servidor Minecraft paso a paso

Mizael Segovia

5/8/2026 ·Mizael Segovia· 10 min de lectura ·

4 visualizaciones

Respuesta directa: si el puerto 25565 no funciona en tu servidor Minecraft, no abras reglas al azar. Comprueba de dentro hacia fuera: proceso y escucha, server.properties, firewall del sistema, publicación en Docker o allocation de Pterodactyl, firewall del proveedor, DNS y, solo en casa, NAT o CGNAT. Corrige la primera capa que falle y repite la prueba.

Minecraft Java usa TCP 25565 por defecto; Minecraft Bedrock usa UDP 19132 por defecto. Son rutas distintas: abre únicamente la correspondiente a la edición que alojas. Las referencias oficiales explican la configuración de un servidor Java y la conexión a un servidor Bedrock. Esta guía documenta comandos para Ubuntu 24.04 y Debian 12/13; no afirma haberlos ejecutado en tu VPS.

Empieza por el síntoma, no por el firewall

SíntomaQué demuestraPrimera capa que revisar
Connection refusedLa ruta llegó a un host que rechazó la conexión.Proceso detenido, escucha en otra IP/puerto, mapping ausente o rechazo explícito.
Connection timed outNo hubo respuesta antes del límite.UFW, firewall del proveedor, DNS/AAAA, NAT, CGNAT o ruta de retorno.
Incompatible version, Outdated client/serverEl cliente ya habló con una aplicación Minecraft.Versiones, proxy, mods o compatibilidad; el puerto no es el problema principal.
Not whitelisted o error de autenticaciónLa red y el protocolo llegaron al servidor.Whitelist, cuenta, online-mode o autenticación del proxy. No abras más puertos.

El texto exacto cambia según cliente, versión y proxy. Usa también el log del intento: un mensaje de versión o whitelist es evidencia de que varias capas de red ya funcionan.

Prerrequisitos y punto de restauración

  • Ubuntu 24.04 o Debian 12/13, acceso sudo y una ventana para reiniciar solo el servicio del juego.
  • La IP pública, el puerto anunciado y la edición reales. No confundas IP pública, privada, de contenedor o de allocation.
  • La ruta y unidad reales del servidor. Aquí se usan /srv/minecraft y minecraft.service como ejemplos.
  • Acceso a la consola o logs y una segunda conexión a Internet para la prueba externa.

Antes de editar, copia server.properties. Cambia la ruta si tu instalación usa otra:

cd /srv/minecraft
sudo cp -a server.properties "server.properties.before-25565-$(date +%Y%m%d-%H%M%S)"
sudo grep -E '^(server-ip|server-port)=' server.properties

1. Confirma qué proceso escucha

Para Java, inspecciona TCP. Para Bedrock, ejecuta solo la rama UDP. ss debe mostrar una escucha en el puerto esperado y, con sudo, el proceso asociado.

sudo ss -lntp 'sport = :25565'
sudo ss -lnup 'sport = :19132'

Una salida vacía significa que el firewall todavía no es el primer problema: revisa arranque y logs. Una escucha limitada a 127.0.0.1 no acepta tráfico público. Si otro PID ocupa el puerto, identifícalo antes de detener nada; no mates procesos desconocidos.

2. Revisa server.properties y reinicia de forma controlada

En Java, deja server-ip= vacío salvo que necesites enlazar una dirección local concreta y sepas que existe en el host. Confirma además el puerto:

server-ip=
server-port=25565

Edita el archivo con sudoedit. Si ya confirmaste que systemd gestiona esa instancia, reinicia únicamente su unidad y lee el inicio completo:

sudoedit /srv/minecraft/server.properties
sudo systemctl restart minecraft.service
sudo systemctl --no-pager --full status minecraft.service
sudo journalctl -u minecraft.service --since '15 minutes ago' --no-pager
sudo ss -lntp 'sport = :25565'

En Pterodactyl, usa Stop/Start y la consola del servidor; no intentes gestionar el proceso del contenedor con esa unidad de ejemplo. Un error Address already in use, una excepción de Java o un cierre durante el arranque se resuelve en la aplicación, no agregando reglas.

3. Separa la prueba local de la externa

ss y el log de arranque son la comprobación local inicial. En Java, prueba después la IP pública desde otro dispositivo y otra red —por ejemplo, datos móviles—; nc -vz se usa aquí solo para TCP y debe ejecutarse desde esa red externa:

nc -vz PUBLIC_IP 25565

Un resultado TCP exitoso no valida versión, whitelist ni login de Minecraft. Para Bedrock/UDP, un escáner puede informar open|filtered o no recibir respuesta aunque la ruta exista. Verifica con un cliente Bedrock externo mientras observas logs y, si sigue ambiguo, captura paquetes como se explica al final.

4. Inspecciona UFW antes de permitir nada

Ubuntu documenta UFW como interfaz de firewall sobre Netfilter. Examina primero el estado y añade una sola regla para tu edición; no deshabilites el firewall como solución permanente. Para Java:

sudo ufw status verbose
sudo ufw status numbered
sudo ufw allow 25565/tcp comment 'Minecraft Java'
sudo ufw status numbered

Aloja tu servidor Minecraft

Explora opciones de hosting para tu servidor Minecraft y elige el entorno que mejor encaje con tu comunidad.

Premium Character
Ver hosting Minecraft

Si alojas Bedrock en vez de Java, usa esta regla, no la anterior:

sudo ufw status verbose
sudo ufw status numbered
sudo ufw allow 19132/udp comment 'Minecraft Bedrock'
sudo ufw status numbered

Verifica de nuevo desde fuera. Si la regla fue el único cambio y debes revertirla, elimina exactamente la variante creada: sudo ufw delete allow 25565/tcp o sudo ufw delete allow 19132/udp, y vuelve a ejecutar sudo ufw status numbered. No borres una regla preexistente compartida.

sudo nft list ruleset es útil como diagnóstico de bajo nivel. No añadas reglas nativas de nftables si UFW administra el host: la documentación de Ubuntu sobre nftables advierte que mezclar ambos métodos puede producir interacciones inesperadas. Consulta también el resumen oficial del firewall de Ubuntu.

5. Comprueba el firewall del proveedor y la IP pública

Una regla local no modifica el firewall de la nube. En el panel del VPS o security group, confirma una entrada para TCP 25565 en Java o UDP 19132 en Bedrock, con el destino/instancia y la IP pública correctos. Revisa también balanceadores o NAT del proveedor. Evita abrir rangos o puertos administrativos para “probar”. Guarda el estado anterior y, si la prueba falla, revierte solo la regla nueva.

6. Sigue la rama de Docker o Pterodactyl

Docker

Comprueba el mapping efectivo; un EXPOSE en la imagen solo documenta el puerto y no lo publica. Docker requiere -p o ports:, como explica su guía de publicación de puertos.

docker ps --format 'table {{.Names}}\t{{.Ports}}'
docker port CONTAINER
docker inspect --format '{{json .NetworkSettings.Ports}}' CONTAINER

Importante: Docker puede desviar el tráfico de puertos publicados antes de las reglas de UFW. No uses ufw status como prueba de que un puerto de contenedor está filtrado: considera la publicación accesible en todas las direcciones del host, verifica el resultado desde fuera y aplica la restricción en el firewall del proveedor o mediante una política compatible con Docker —por ejemplo, una cadena DOCKER-USER diseñada y probada—. No desactives a ciegas la gestión de firewall de Docker. Consulta la advertencia oficial sobre Docker y UFW.

Para un servidor Java, el fragmento de Compose es:

services:
  minecraft:
    ports:
      - '25565:25565/tcp'

Para un servidor Bedrock, utiliza en cambio:

services:
  bedrock:
    ports:
      - '19132:19132/udp'

Aplica el cambio con el procedimiento normal de tu despliegue, recrea solo el servicio afectado y vuelve a comprobar docker port. No reinicies todo Docker a ciegas: interrumpirías otros contenedores sin demostrar la causa.

Pterodactyl

Una allocation es la combinación de IP y puerto asignada al servidor según la documentación de Wings. Comprueba que la allocation primaria y el puerto de la aplicación coincidan, y que su protocolo/ruta exterior estén permitidos. Una regla UFW no crea una allocation. No uses red de host como atajo. Si necesitas revisar el nodo, consulta la guía para instalar Pterodactyl Panel y Wings.

7. Verifica A, AAAA y SRV

dig +short A play.example.net
dig +short AAAA play.example.net
dig +short SRV _minecraft._tcp.play.example.net

El registro A debe devolver la IPv4 pública correcta. Si existe AAAA, el servidor, listener y firewalls deben aceptar esa IPv6; un AAAA roto puede hacer que algunos clientes fallen aunque IPv4 funcione. No lo elimines a ciegas: prueba ambos caminos y corrige la ruta IPv6 o cambia el registro de forma intencional.

Usa _minecraft._tcp solo para Minecraft Java en un puerto personalizado. El target SRV debe ser un hostname canónico con A/AAAA, no una IP ni un CNAME/alias; confirma además que el campo port devuelto sea el puerto público que usarán los clientes; el formato y ese requisito se definen en RFC 2782. Bedrock no se arregla con el SRV de Java. Para profundizar, revisa cómo funciona DNS.

8. Si alojas desde casa, comprueba NAT y CGNAT

Configura un reenvío al IP LAN fijo del servidor: TCP 25565 para Java o UDP 19132 para Bedrock. El protocolo debe coincidir y la regla debe traducir el puerto público que usan los clientes al puerto interno donde realmente escucha el servidor. Los números externo e interno pueden ser distintos; si lo son, anuncia el externo al cliente y verifica el interno con ss. Este comportamiento de traducción se describe en RFC 4787. Prueba desde fuera; algunos routers no soportan NAT loopback y una prueba desde la misma Wi-Fi puede engañar.

Compara la dirección WAN del router con tu IPv4 pública. Si la WAN cae en 100.64.0.0/10 —espacio compartido reservado por RFC 6598— o no coincide con la pública, puede haber CGNAT o doble NAT. Pide al ISP una IPv4 pública/port forwarding, corrige el segundo NAT o usa hosting/VPS. No existe una regla en el router doméstico que atraviese por sí sola el CGNAT del operador.

9. Usa tcpdump como decisión final

Inicia una captura breve en el host mientras alguien intenta entrar desde otra red. Escoge solo el filtro de tu edición:

sudo tcpdump -ni any 'tcp port 25565'
sudo tcpdump -ni any 'udp port 19132'
  • No llegan paquetes: tras confirmar filtro e interfaz, investiga antes del host: DNS, IP pública, firewall del proveedor, NAT, CGNAT o allocation.
  • Llega SYN y vuelve RST/RST-ACK: la ruta alcanza el host, pero no hay listener TCP en esa dirección/puerto o una regla rechaza activamente; correlaciona con ss y el log.
  • Llegan SYN repetidos y no sale respuesta: busca descarte en firewall local, ruta de retorno, firewall del proveedor o NAT. No atribuyas el silencio por sí solo a un listener ausente.
  • Hay handshake TCP y luego desconexión: la ruta funciona; correlaciona hora y origen con logs de versión, proxy, autenticación, whitelist o aplicación.
  • Llega UDP pero no hay respuesta: valida listener Bedrock, mapping, logs y reglas de retorno; un escaneo UDP aislado no decide el caso.

La diferencia entre un reset y las retransmisiones sin respuesta se deriva del comportamiento TCP descrito en RFC 9293.

La captura confirma metadatos y secuencia, pero el cifrado y el protocolo limitan cuánto contenido puedes interpretar. Detén tcpdump tras reproducir el fallo y evita conservar datos innecesarios.

Verificación final, rollback y mantenimiento

  1. ss muestra el proceso y protocolo correctos en la dirección esperada.
  2. El log registra un arranque limpio y el intento externo.
  3. El firewall efectivo para esa ruta —incluida la ruta Docker—, el firewall del proveedor y el mapping/allocation exponen solo el puerto necesario.
  4. A y AAAA apuntan a rutas funcionales; SRV, si existe, corresponde a Java y a un hostname válido.
  5. Un cliente real entra desde otra red. Después valida versión, whitelist y juego normal.

Si el cambio empeora el servicio, restaura la copia exacta de server.properties, revierte el mapping o allocation, elimina solo las reglas local y externa que añadiste y reinicia de forma controlada. Documenta IP, puerto, protocolo, hora y resultado de cada prueba. Mantén sistema y servidor actualizados, restringe RCON/panel/SSH por separado y revisa reglas obsoletas; nunca dejes el firewall desactivado.

Si Java conecta pero Bedrock no, sigue la guía de GeyserMC y Floodgate. Si los jugadores entran pero hay tirones, el siguiente problema ya es rendimiento: diagnostícalo con spark, no tocando el puerto.

Puerto 25565 no funciona: diagnostica tu servidor Minecraft paso a paso
GeneralMinecraftMinecraft JavaMinecraft BedrockHosting MinecraftServidores MinecraftAdministración de servidoresPterodactylDockerDNS
¿Te gustó este artículo?Compártelo:

Sobre el autor

Mizael Segovia

Mizael Segovia

CEO & Desarrollador Full Stack y DevOps en Teramont Host

Continúa explorando guías, noticias y análisis relacionados.

CTA Pattern

¿Necesitas ayuda con tu servidor?

Nuestro equipo está listo para ayudarte con cualquier duda o problema que tengas.

Contáctenos