Su Linux il firewall dipende dalla distribuzione: ufw su Ubuntu e Debian, firewalld su AlmaLinux e Rocky. Fanno la stessa cosa, cambiano solo i comandi.
Prima di tutto: se stai per attivare il firewall per la prima volta, apri la 22 (SSH) prima di accenderlo. È il modo più rapido e più stupido di restare chiuso fuori dal tuo stesso server. Se ti succede, puoi comunque entrare dalla scheda VNC del pannello.
Ubuntu e Debian (ufw)
# Per prima cosa, SEMPRE
ufw allow 22/tcp
# La tua porta, su entrambi i protocolli
ufw allow 30120/tcp
ufw allow 30120/udp
# Un intervallo
ufw allow 7777:7778/udp
# Attiva (se non lo era) e controlla il risultato
ufw enable
ufw status numbered
Per eliminare una regola, guarda il suo numero in ufw status numbered e cancellala con ufw delete 3. Funziona anche ufw delete allow 30120/udp.
AlmaLinux e Rocky (firewalld)
# Per prima cosa, SEMPRE
firewall-cmd --permanent --add-service=ssh
# La tua porta, su entrambi i protocolli
firewall-cmd --permanent --add-port=30120/tcp
firewall-cmd --permanent --add-port=30120/udp
# Un intervallo
firewall-cmd --permanent --add-port=7777-7778/udp
# Applica e verifica
firewall-cmd --reload
firewall-cmd --list-all
--permanent è ciò che fa sopravvivere la regola a un riavvio; senza, va persa. E --reload è ciò che la applica: senza ricaricare, non succede nulla. Per rimuoverla, lo stesso comando con --remove-port.
Verificare che il tuo server sia in ascolto
Con il server di gioco avviato:
ss -lntup | grep 30120
Devi vedere una riga con LISTEN (per TCP) o UNCONN (per UDP, ed è normale). Se non compare nulla, il problema non è il firewall: il server non è avviato o è in ascolto su un'altra porta.
Guarda anche l'indirizzo: se c'è scritto 127.0.0.1:30120 invece di 0.0.0.0:30120, il tuo server accetta solo connessioni locali e, per quante regole tu apra, non entrerà nessuno. Si risolve nella configurazione del gioco, non nel firewall.
Quali porte NON dovresti aprire
- Quella del database (3306 di MySQL, 5432 di PostgreSQL). Se il gioco e il database sono sulla stessa macchina, non serve aprirla a Internet: si collegano tramite
localhost. Un MySQL aperto al mondo è un invito. - I pannelli di amministrazione come quello di txAdmin. Meglio un tunnel SSH:
ssh -L 40120:localhost:40120 root@IL_TUO_IPe lo apri nel browser sulocalhost:40120. - L'RCON, a meno che non ti serva davvero dall'esterno. E se lo apri, che la password sia lunga e unica.
Se continua a non funzionare
- Il server è in ascolto, e su
0.0.0.0? Il comandossqui sopra. - Protocollo giusto? Molti giochi usano UDP; apri entrambi e ti togli il dubbio.
- Stai provando dall'esterno? Dal server stesso funziona sempre.
- Controlla i filtri della scheda Sicurezza del tuo servizio nel pannello: lì c'è il filtraggio AntiDDoS della rete, che è un livello diverso dal firewall del sistema.