Cómo abrir el puerto 30120 en el firewall de FiveM (Linux y Windows)
Guía técnica para abrir el puerto 30120 (TCP+UDP) en el firewall de FiveM en Ubuntu, Debian, AlmaLinux y Windows Server. Incluye verificación y solución de problemas.
Tu servidor FiveM está corriendo, la consola de FXServer muestra Server started, el sv_licenseKey fue validado, pero los jugadores reportan timeout al intentar conectarse. En 9 de cada 10 casos nuevos, el problema es el puerto 30120 bloqueado en el firewall del sistema operativo o en el security group del proveedor — no en FiveM en sí.
Esta guía cubre cómo abrir el puerto 30120 (TCP y UDP) en Ubuntu/Debian con UFW, AlmaLinux/Rocky con firewalld, reglas iptables directas, y Windows Server con el Windows Defender Firewall. También muestra cómo verificar que el puerto esté realmente abierto desde fuera y qué hacer cuando el problema persiste.
Tiempo estimado de ejecución: 5 a 10 minutos, dependiendo del sistema operativo y de si ya tienes acceso administrativo.
Requisitos previos
Antes de abrir el puerto, confirma que FXServer está corriendo y escuchando en el 30120. Sin eso, abrir el firewall no resuelve nada.
Acceso root o sudo en el servidor. FXServer instalado y corriendo con server.cfg configurado. Conocimiento de la dirección IP pública del servidor (curl ifconfig.me la retorna). En hosts cloud (AWS, GCP, Hetzner, Hostini), acceso al panel de red para ajustar security groups si es necesario.
30120 TCP + UDP 40120/TCP Inbound (entrada) Confirma rápidamente que FXServer está escuchando en el puerto antes de tocar el firewall:
sudo ss -tulnp | grep 30120
Si retorna dos líneas (una tcp y una udp) con FXServer al lado, el servicio está listo. Si no retorna nada, arranca el servidor primero — no tiene sentido abrir un puerto de algo que no está corriendo.
Ubuntu y Debian con UFW
UFW es el frontend de firewall más común en Ubuntu 22.04/24.04 y Debian 12. Los comandos siguientes abren el 30120 TCP+UDP y persisten la regla entre reinicios.
Verifica el estado actual de UFW:
sudo ufw status verboseSi la salida es Status: inactive, UFW está apagado y probablemente iptables también esté vacío. Confirma que el puerto ya no esté bloqueado por otra capa antes de activar UFW — activarlo sin reglas adecuadas puede dejarte fuera del SSH.
Antes que nada, asegúrate de que SSH sigue abierto:
sudo ufw allow 22/tcpSi cambiaste el puerto SSH (por ejemplo, 2222), usa el número correcto. Este paso es defensivo — sáltalo si ya sabes que SSH está cubierto.
Abre el puerto 30120 en ambos protocolos:
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udpCada comando añade una regla inbound permitiendo cualquier origen. Para restringir a un rango específico de IPs (raro en servidor de juegos público), usa sudo ufw allow from 1.2.3.0/24 to any port 30120.
Si UFW está inactivo, actívalo ahora:
sudo ufw enableConfirma y cuando lo pida. Las reglas añadidas en el paso anterior ya están presentes — no te vas a dejar fuera si el SSH fue abierto en el paso 02.
Confirma que las reglas se aplicaron:
sudo ufw status numberedLa salida esperada debe incluir dos líneas referenciando el puerto 30120 — una 30120/tcp ALLOW y otra 30120/udp ALLOW.
AlmaLinux, Rocky y CentOS con firewalld
Las distribuciones basadas en Red Hat usan firewalld como gestor por defecto. La sintaxis es distinta a UFW pero el resultado es equivalente.
Verifica si firewalld está activo:
sudo systemctl status firewalldSi está inactivo, actívalo con sudo systemctl enable --now firewalld antes de continuar.
Añade las reglas permanentes para la zona public (zona default en la mayoría de las instalaciones):
sudo firewall-cmd --permanent --zone=public --add-port=30120/tcp
sudo firewall-cmd --permanent --zone=public --add-port=30120/udpLa flag --permanent graba la regla en el archivo de configuración; sin ella, la regla desaparece en el próximo restart de firewalld.
Recarga firewalld para aplicar las reglas grabadas:
sudo firewall-cmd --reloadEste comando es seguro — no derriba conexiones existentes.
Confirma las reglas activas:
sudo firewall-cmd --list-portsLa salida debe listar 30120/tcp 30120/udp junto con otros puertos previamente abiertos (por ejemplo, 22/tcp).
Reglas iptables directas
Si administras el firewall manualmente vía iptables (sin UFW ni firewalld), las reglas necesitan ser insertadas explícitamente y persistidas con el paquete iptables-persistent (Debian/Ubuntu) o iptables-services (Red Hat).
sudo iptables -A INPUT -p tcp --dport 30120 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 30120 -j ACCEPT
Las reglas añadidas con iptables -A desaparecen en el próximo reboot. En Debian/Ubuntu, instala iptables-persistent y ejecuta sudo netfilter-persistent save. En Red Hat, usa sudo service iptables save. Sin eso, el servidor vuelve sin la regla tras cualquier reinicio.
Windows Server con Defender Firewall
En Windows Server 2019, 2022 y Windows 10/11 usados como host de FiveM, Defender Firewall bloquea inbound por defecto. Crea la regla vía PowerShell para evitar clics en la GUI.
Abre PowerShell como Administrador (clic derecho en el icono, “Ejecutar como administrador”).
Crea la regla inbound para TCP/30120:
New-NetFirewallRule -DisplayName "FiveM TCP 30120" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 30120 `
-Action Allow `
-Profile AnyLa flag -Profile Any aplica en redes Public, Private y Domain — necesario porque los servidores cloud aparecen como Public en Windows.
Repite para UDP/30120:
New-NetFirewallRule -DisplayName "FiveM UDP 30120" `
-Direction Inbound `
-Protocol UDP `
-LocalPort 30120 `
-Action Allow `
-Profile AnyConfirma que las dos reglas existen:
Get-NetFirewallRule -DisplayName "FiveM*" | Format-Table DisplayName, Enabled, Direction, ActionSalida esperada: dos líneas con Enabled True, Direction Inbound y Action Allow.
Verificación externa
Abrir el puerto en el sistema operativo no garantiza que sea accesible desde fuera — los proveedores cloud (AWS, GCP, Hetzner) tienen una capa adicional de security group que necesita ajustarse por separado.
Desde una máquina externa (tu ordenador local, otro VPS, o usando un servicio público), prueba:
nmap -p 30120 -sU -sT TU_IP_PUBLICA
La flag -sU prueba UDP, -sT prueba TCP. Salida esperada:
PORT STATE SERVICE
30120/tcp open unknown
30120/udp open|filtered unknown
UDP frecuentemente aparece como open|filtered porque es stateless — nmap no logra distinguir “puerto abierto sin respuesta” de “puerto filtrado por firewall”. Es normal y no indica problema si el TCP retornó open.
Si no tienes nmap instalado, usa el sitio canyouseeme.org o ejecuta nc -zv TU_IP 30120 desde otro Linux. Para UDP, nc -zuv TU_IP 30120. Los resultados son menos fiables que nmap pero sirven para confirmación rápida.
Solución de problemas
nmap retorna filtered en ambos protocolos
Significa que alguna capa está bloqueando los paquetes antes de llegar a tu sistema operativo. Generalmente es:
- Security group del proveedor cloud (AWS, GCP, Azure, Hetzner Cloud)
- Firewall de red del datacenter
- Router NAT entre tú e internet (si es servidor casero)
Accede al panel del proveedor y añade una regla inbound TCP+UDP/30120 en el security group asociado a la instancia. En servidores Hostini dedicados o VPS, no hay security group externo — el firewall del sistema operativo es la única capa, así que filtered generalmente indica regla incorrecta en UFW/firewalld.
nmap retorna closed en TCP
El firewall está bien pero FXServer no está escuchando. Comprueba:
sudo ss -tulnp | grep 30120
Si está vacío, arranca FXServer y revisa los logs en ~/server-data/logs/. Errores comunes: endpoint_add_tcp apuntando a una IP equivocada en el server.cfg, falta de sv_licenseKey, o conflicto con otro proceso usando el puerto.
Los jugadores conectan pero caen en segundos
Síntoma clásico de UDP bloqueado con TCP abierto. El handshake inicial funciona (TCP), pero el tráfico de juego (UDP) no pasa. Revisa que el paso de abrir UDP se haya ejecutado en todas las capas (sistema operativo + security group).
txAdmin no abre en el navegador
El 30120 es solo para el juego. El panel txAdmin escucha en 40120/TCP por defecto. Abre ese puerto por separado, pero restringido a tu IP residencial (seguridad):
sudo ufw allow from TU_IP_RESIDENCIAL to any port 40120 proto tcp
Próximos pasos
Con el puerto abierto y el servidor accesible, considera:
- Configurar fail2ban para bloquear ataques de fuerza bruta en SSH, ya que el servidor ahora tiene puerto público expuesto
- Habilitar logs detallados de conexión en FXServer (
con_miniconChannelsenserver.cfg) para investigar problemas de conectividad individuales - Implementar copias de seguridad automáticas de
server-data/resources/y de la base de datos MySQL antes de publicitar el servidor - Evaluar protección DDoS dedicada si esperas más de 32 slots simultáneos — los ataques contra servidores FiveM son comunes y baratos
Si estás poniendo un servidor FiveM en producción y necesitas baja latencia para jugadores latinoamericanos, un VPS Hostini ya viene con filtro de paquetes en kernel activo contra DDoS L3/L4 y enrutamiento directo a IXBR — sin cobro por tráfico y sin necesidad de configurar security group externo.
Preguntas frecuentes
¿Por qué el puerto 30120 necesita TCP y UDP al mismo tiempo?
FXServer usa UDP/30120 para el tráfico principal del juego (movimiento, sincronización de estado, voz) por su baja latencia y tolerancia a la pérdida de paquetes. Y usa TCP/30120 para el handshake inicial, autenticación en el master server y endpoint HTTP del server browser. Abrir solo uno de los protocolos hace que el servidor desaparezca de la lista o que los jugadores se conecten y caigan en segundos.
¿Puedo usar un puerto diferente al 30120?
Sí. Cambia `endpoint_add_tcp` y `endpoint_add_udp` en el `server.cfg` a otro puerto (por ejemplo 30125) y abre el nuevo puerto en el firewall en lugar del 30120. Los jugadores tendrán que conectarse con `connect IP:PUERTO` indicando el puerto nuevo, ya que el cliente FiveM asume 30120 por defecto.
Abrí el puerto pero el servidor no aparece en el server browser. ¿Qué falta?
Verifica que `sv_master1` esté habilitado en el `server.cfg` (normalmente el default ya lo cubre), que el servidor tenga `sv_licenseKey` válido obtenido del Keymaster, y que el puerto 30120/TCP esté abierto también para salida. FXServer hace una llamada saliente al master server para anunciarse — bloquear el outbound TCP también provoca este problema.
¿Necesito abrir algún otro puerto además del 30120?
Para un servidor FiveM básico, solo el 30120 (TCP+UDP). Si usas txAdmin, el panel web escucha en el puerto 40120/TCP por defecto — ábrelo solo para tu IP, nunca abierto al mundo. Si usas MySQL/MariaDB externo, considera el 3306 pero restringido por IP.
¿Cómo sé si el problema es el firewall del servidor o el del datacenter/proveedor?
Ejecuta `nmap -p 30120 TU_IP` desde una máquina externa. Si retorna `filtered`, alguna capa está bloqueando silenciosamente — probablemente el security group o el firewall de red del proveedor. Si retorna `closed`, el firewall del sistema operativo aceptó el paquete pero no hay nada escuchando en el puerto (FXServer no arrancó). Si retorna `open`, el camino está libre y el problema es otro (por ejemplo, licenseKey).
¿Puedo desactivar el firewall en lugar de abrir el puerto?
Técnicamente sí, pero no lo hagas. Desactivar ufw/firewalld/iptables expone SSH, paneles administrativos y cualquier servicio local a internet entera. En servidores de juegos eso es vector de intrusión y amplificación de DDoS. Siempre prefiere abrir solo los puertos necesarios.