En Linux el cortafuegos depende de la distribución: ufw en Ubuntu y Debian, firewalld en AlmaLinux y Rocky. Los dos hacen lo mismo, cambian los comandos.
Antes de nada: si vas a activar el cortafuegos por primera vez, abre el 22 (SSH) antes de encenderlo. Es la forma más rápida y más tonta de quedarte fuera de tu propio servidor. Si te pasa, aún puedes entrar por la pestaña VNC del panel.
Ubuntu y Debian (ufw)
# Lo primero, SIEMPRE
ufw allow 22/tcp
# Tu puerto, en los dos protocolos
ufw allow 30120/tcp
ufw allow 30120/udp
# Un rango
ufw allow 7777:7778/udp
# Activar (si no lo estaba) y ver cómo ha quedado
ufw enable
ufw status numbered
Para quitar una regla, mira el número en ufw status numbered y borra con ufw delete 3. También vale ufw delete allow 30120/udp.
AlmaLinux y Rocky (firewalld)
# Lo primero, SIEMPRE
firewall-cmd --permanent --add-service=ssh
# Tu puerto, en los dos protocolos
firewall-cmd --permanent --add-port=30120/tcp
firewall-cmd --permanent --add-port=30120/udp
# Un rango
firewall-cmd --permanent --add-port=7777-7778/udp
# Aplicar y comprobar
firewall-cmd --reload
firewall-cmd --list-all
--permanent es lo que hace que la regla sobreviva a un reinicio; sin eso se pierde. Y --reload es lo que la aplica: sin recargar, no pasa nada. Para quitarla, el mismo comando con --remove-port.
Comprobar que tu servidor escucha
Con el servidor de juego arrancado:
ss -lntup | grep 30120
Tienes que ver una línea con LISTEN (para TCP) o UNCONN (para UDP, que es lo normal). Si no sale nada, el cortafuegos no es tu problema: el servidor no está arrancado o escucha en otro puerto.
Fíjate también en la dirección: si pone 127.0.0.1:30120 en vez de 0.0.0.0:30120, tu servidor solo acepta conexiones locales y por muchas reglas que abras no entrará nadie. Eso se arregla en la configuración del juego, no en el cortafuegos.
Qué puertos NO deberías abrir
- El de la base de datos (3306 de MySQL, 5432 de PostgreSQL). Si el juego y la base de datos están en la misma máquina, no hace falta abrirla a Internet: se conectan por
localhost. Una MySQL abierta al mundo es una invitación. - Paneles de administración como el de txAdmin. Mejor por túnel SSH:
ssh -L 40120:localhost:40120 root@TU_IPy lo abres en tu navegador enlocalhost:40120. - El RCON, salvo que lo necesites de verdad desde fuera. Y si lo abres, que la contraseña sea larga y única.
Si sigue sin funcionar
- ¿Está el servidor escuchando y en
0.0.0.0? Elssde arriba. - ¿Protocolo correcto? Muchos juegos van por UDP; abre los dos y sales de dudas.
- ¿Lo pruebas desde fuera? Desde el propio servidor siempre funciona.
- Revisa los filtros de la pestaña Seguridad de tu servicio en el panel: ahí está el filtrado AntiDDoS de la red, que es una capa distinta del cortafuegos del sistema.