Cómo abrir los puertos de MTA:SA en el firewall y aparecer en línea

Aprende a abrir los puertos de MTA:SA (22003, 22005, 22126) en el firewall del servidor para que aparezca en la lista pública y acepte jugadores.

Levantaste el servidor de MTA:SA, la consola muestra que arrancó sin errores, el proceso está escuchando en los puertos correctos — pero cuando abres el cliente del juego y buscas en la lista pública, tu servidor simplemente no aparece. En 9 de cada 10 casos, el problema no está en MTA, está en el firewall del sistema operativo bloqueando los puertos que el master server necesita acceder para registrar tu servidor.

Este tutorial muestra cómo abrir los puertos correctos en el firewall (UFW, firewalld y Windows Firewall) para que el servidor MTA:SA aparezca en la lista pública y acepte conexiones. Tiempo estimado: 10 a 15 minutos, incluyendo la verificación externa.

La persona objetivo es el propietario del servidor que ya tiene MTA corriendo y sabe operar la línea de comandos, pero está atascado en esta última etapa de exposición pública. No vamos a cubrir la instalación del servidor en sí — solo firewall y el motivo de cada puerto.

Prerrequisitos

Antes de tocar el firewall, confirma que el servidor MTA ya está corriendo y escuchando en los puertos. De lo contrario, vas a abrir tráfico para un proceso que no existe.

Prerrequisitos

Acceso root o sudo al servidor (Linux) o Administrador (Windows). Servidor MTA:SA instalado y corriendo, con mtaserver.conf configurado. Conocer la IP pública del servidor para prueba externa. Cliente MTA:SA en otra máquina para validación final.

Los puertos por defecto del servidor MTA:SA que deben estar accesibles desde el exterior son:

Puerto del juego 22003/UDP
HTTP de recursos 22005/TCP
ASE (anuncio) 22126/UDP

El puerto ASE se calcula como serverport + 123. Si usas el puerto predeterminado 22003, el ASE queda en 22126. Si cambias a 23000, el ASE pasa a 23123. Esta relación es fija y no puede desacoplarse.

Confirmar que ASE está activado en el servidor

Abrir el puerto ASE en el firewall solo funciona si el servidor MTA realmente está anunciando al master server. Este comportamiento se controla con una flag en el archivo de configuración.

01

Abre el archivo mtaserver.conf en la carpeta del servidor (generalmente en mods/deathmatch/mtaserver.conf en Linux, o en la raíz de la instalación en Windows):

nano mods/deathmatch/mtaserver.conf

Busca la línea con la etiqueta <ase> y confirma que el valor sea 1:

<ase>1</ase>

Si está en 0, el servidor no se anuncia al master y no aparecerá públicamente aunque tengas el firewall abierto. Cámbialo a 1 y guarda.

02

Confirma también el puerto principal y el servidor HTTP en el mismo archivo:

<serverport>22003</serverport>
<httpport>22005</httpport>

Si modificaste estos valores, anótalos — vas a abrir los puertos personalizados en lugar de los predeterminados.

03

Reinicia el servidor MTA para aplicar cualquier cambio en mtaserver.conf:

sudo systemctl restart mta-server

Si no usas systemd, detén e inicia el proceso manualmente según tu configuración.

Abrir puertos en UFW (Ubuntu/Debian)

UFW es el firewall por defecto en distribuciones Ubuntu y Debian. La sintaxis es directa y cada regla es independiente.

01

Verifica que UFW esté activo antes de añadir reglas:

sudo ufw status verbose

Si la salida dice Status: inactive, el firewall no está bloqueando nada y el problema es otro (probablemente firewall del proveedor o NAT). Si está active, continúa.

02

Añade reglas para los tres puertos de MTA:

sudo ufw allow 22003/udp comment 'MTA:SA game'
sudo ufw allow 22005/tcp comment 'MTA:SA HTTP'
sudo ufw allow 22126/udp comment 'MTA:SA ASE'

Los comentarios son opcionales pero te ayudan a recordar el motivo de cada regla al auditar después con ufw status numbered.

03

Recarga las reglas y confirma:

sudo ufw reload
sudo ufw status numbered

La salida debe listar las tres reglas añadidas como ALLOW IN. Si aparece Anywhere (v6) por separado, es normal — UFW crea entrada IPv4 e IPv6 para cada regla.

Cuidado con el orden de las reglas

Si tienes una regla de deny abarcadora en UFW (raro pero pasa en hardening), puede estar por encima de las reglas de allow. Usa sudo ufw status numbered para inspeccionar el orden y sudo ufw insert NÚMERO allow ... para insertar en la posición correcta.

Abrir puertos en firewalld (Rocky/AlmaLinux/CentOS)

Las distribuciones basadas en Red Hat usan firewalld por defecto. El modelo está orientado a zonas — añades puertos a una zona, no creas reglas sueltas.

01

Confirma que firewalld esté corriendo:

sudo systemctl status firewalld

Si está inactivo, el firewall no está bloqueando nada vía firewalld (puede haber iptables directo, pero es poco común en instalaciones limpias).

02

Añade los puertos a la zona pública de forma permanente:

sudo firewall-cmd --permanent --zone=public --add-port=22003/udp
sudo firewall-cmd --permanent --zone=public --add-port=22005/tcp
sudo firewall-cmd --permanent --zone=public --add-port=22126/udp

La flag --permanent graba las reglas en disco. Sin ella, las reglas desaparecen en el siguiente reboot del servidor.

03

Recarga para aplicar y confirma:

sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports

La salida de --list-ports debe mostrar 22003/udp 22005/tcp 22126/udp. Si no aparecen, probablemente olvidaste --permanent o estás mirando la zona equivocada — confirma con firewall-cmd --get-active-zones.

Abrir puertos en Windows Firewall

Si el servidor MTA corre en Windows, el firewall por defecto es Windows Defender Firewall. La interfaz gráfica funciona, pero PowerShell es más rápido y versionable.

01

Abre PowerShell como Administrador (click derecho en el ícono de PowerShell, “Ejecutar como administrador”).

02

Crea las tres reglas de entrada:

New-NetFirewallRule -DisplayName "MTA:SA Game" -Direction Inbound -Protocol UDP -LocalPort 22003 -Action Allow
New-NetFirewallRule -DisplayName "MTA:SA HTTP" -Direction Inbound -Protocol TCP -LocalPort 22005 -Action Allow
New-NetFirewallRule -DisplayName "MTA:SA ASE" -Direction Inbound -Protocol UDP -LocalPort 22126 -Action Allow

Cada comando devuelve un objeto describiendo la regla creada. Sin error rojo, se aplica inmediatamente — Windows Firewall no necesita reload.

03

Confirma listando las reglas creadas:

Get-NetFirewallRule -DisplayName "MTA:SA*" | Format-Table DisplayName, Enabled, Direction, Action

Todas deben aparecer con Enabled: True y Action: Allow.

Verificar desde el exterior si los puertos están accesibles

Abrir en el firewall local no garantiza acceso externo — puede haber bloqueo en capas superiores (firewall del datacenter, NAT del router, ACL en la red). La única prueba confiable es desde fuera del servidor.

01

Desde otra máquina (no desde el servidor MTA), instala nmap:

sudo apt install -y nmap

En Windows, descárgalo de nmap.org/download.

02

Prueba UDP en el puerto del juego y ASE — reemplaza TU_IP por la IP pública del servidor:

sudo nmap -sU -p 22003,22126 TU_IP

El scan UDP necesita root (sudo) porque usa raw sockets. Resultados esperados: open u open|filtered. Si aparece filtered puro, todavía hay bloqueo en algún punto.

03

Prueba TCP en el HTTP de recursos:

nmap -p 22005 TU_IP

Resultado esperado: open. Si aparece closed, el servidor MTA no está escuchando en ese puerto (verifica httpport en mtaserver.conf). Si aparece filtered, todavía hay firewall bloqueando en algún punto.

Resolución de problemas

El servidor aparece offline en la lista aunque los puertos están abiertos

Espera de 5 a 10 minutos después de abrir los puertos — el master server de MTA tiene un intervalo de polling. Si pasó ese tiempo y aún no aparece, abre el cliente MTA y usa “Agregar servidor manualmente” con TU_IP:22003. Si conectas manualmente pero no aparece en la lista pública, el problema es específicamente en ASE (puerto 22126 o flag <ase>0</ase>).

nmap devuelve “filtered” pero el firewall local está abierto

Hay firewall o ACL upstream. En servidores domésticos, configura redirección de puertos en el router. En VPS o dedicado de proveedores, verifica si el panel del proveedor tiene firewall de red activo — algunos proveedores aplican firewall en capa de red separado del firewall del SO.

El servidor aparece pero los jugadores no pueden descargar recursos al conectar

Este síntoma es específico: TCP 22005 está bloqueado. Los clientes conectan (UDP 22003 funciona) pero la transferencia de scripts y modelos falla. Confirma que abriste el puerto TCP por separado — no viene junto con el UDP en ninguno de los firewalls cubiertos aquí.

Próximos pasos

Con los puertos abiertos y el servidor apareciendo públicamente, vale la pena considerar:

  • Configurar reglas de rate limit en el firewall para mitigar floods de queries falsas en ASE
  • Documentar la IP y puertos en un archivo de runbook para troubleshooting futuro
  • Habilitar logs de conexión de MTA para correlacionar con tráfico en el firewall
  • Evaluar protección DDoS dedicada si el servidor crece y atrae atención indeseada

Si estás corriendo MTA:SA en producción y quieres evitar dolores de cabeza con firewall, NAT y protección contra ataques volumétricos, los planes de hosting de juegos de Hostini ya vienen con firewall preconfigurado para MTA:SA y protección DDoS activa por defecto.

Preguntas frecuentes

¿Qué puertos exactos de MTA:SA necesito abrir en el firewall?

Por defecto necesitas tres puertos: 22003/UDP (puerto principal del juego), 22005/TCP (servidor HTTP interno para descarga de recursos) y 22126/UDP (ASE — anuncio del servidor a la lista pública). Si personalizaste estos puertos en mtaserver.conf, abre los valores correspondientes.

¿Qué es el puerto ASE y por qué es obligatorio para aparecer en línea?

ASE significa All-Seeing Eye — es el protocolo de consulta que el master server de MTA usa para registrar tu servidor en la lista pública y responder consultas de clientes. Sin el puerto ASE accesible (22126/UDP por defecto), el servidor puede estar funcionando perfectamente pero permanecerá invisible en la lista del juego.

Abrí los puertos en UFW pero el servidor todavía no aparece — ¿qué puede estar mal?

Tres causas comunes: (1) hay un firewall upstream del proveedor o del router también bloqueando, (2) la opción 'ase' no está activada en mtaserver.conf, o (3) el servidor está detrás de NAT sin redirección de puertos. Prueba con nmap -sU -p 22126 TU_IP desde fuera de la red para confirmar.

¿Necesito abrir puerto TCP o UDP para MTA:SA?

Ambos. El tráfico principal del juego (22003) y el ASE (22126) son UDP porque son protocolos de baja latencia. El servidor HTTP interno (22005) es TCP porque transfiere archivos de recursos a los clientes al conectar. Abrir solo una de las dos familias deja el servidor parcialmente funcional.

¿Cómo cambiar los puertos por defecto de MTA:SA si están ocupados?

Edita el archivo mtaserver.conf en la carpeta del servidor y ajusta los parámetros <serverport>, <httpport> y calcula ASE como serverport+123. Reinicia el servidor y abre los nuevos puertos en el firewall. Recuerda que los jugadores tendrán que indicar el puerto personalizado al conectar si no es el predeterminado.

¿Es seguro abrir estos puertos directamente a internet?

Sí, son puertos de aplicación de juego diseñados para tráfico público. El riesgo real está en puertos administrativos como SSH (22) o el panel web del servidor. Mantén el firewall restrictivo en puertos administrativos y abre solo los puertos estrictamente necesarios para que el juego funcione.

Temas:
Próximos pasos VPS, dedicado o panel gestionado para FiveM, SAMP, MTA, Tibia y más.Aloja tu servidor de juegos con Hostini →
¿Te resultó útil este tutorial?
Hablar por WhatsApp