Sous Linux, le pare-feu dépend de la distribution : ufw sur Ubuntu et Debian, firewalld sur AlmaLinux et Rocky. Les deux font la même chose, seules les commandes changent.
Avant tout : si tu actives le pare-feu pour la première fois, ouvre le 22 (SSH) avant de l'allumer. C'est la façon la plus rapide et la plus bête de te retrouver enfermé dehors. Si ça t'arrive, tu peux encore entrer par l'onglet VNC du panel.
Ubuntu et Debian (ufw)
# D'abord, TOUJOURS
ufw allow 22/tcp
# Ton port, dans les deux protocoles
ufw allow 30120/tcp
ufw allow 30120/udp
# Une plage
ufw allow 7777:7778/udp
# Activer (s'il ne l'était pas) et voir le résultat
ufw enable
ufw status numbered
Pour supprimer une règle, regarde son numéro dans ufw status numbered et efface-la avec ufw delete 3. ufw delete allow 30120/udp marche aussi.
AlmaLinux et Rocky (firewalld)
# D'abord, TOUJOURS
firewall-cmd --permanent --add-service=ssh
# Ton port, dans les deux protocoles
firewall-cmd --permanent --add-port=30120/tcp
firewall-cmd --permanent --add-port=30120/udp
# Une plage
firewall-cmd --permanent --add-port=7777-7778/udp
# Appliquer et vérifier
firewall-cmd --reload
firewall-cmd --list-all
--permanent fait survivre la règle à un redémarrage ; sans lui, elle se perd. Et --reload l'applique : sans rechargement, il ne se passe rien. Pour la retirer, même commande avec --remove-port.
Vérifier que ton serveur écoute
Avec le serveur de jeu lancé :
ss -lntup | grep 30120
Tu dois voir une ligne avec LISTEN (pour TCP) ou UNCONN (pour UDP, c'est normal). Si rien ne s'affiche, le pare-feu n'est pas ton problème : le serveur n'est pas lancé ou il écoute sur un autre port.
Regarde aussi l'adresse : s'il y a 127.0.0.1:30120 au lieu de 0.0.0.0:30120, ton serveur n'accepte que les connexions locales et, quel que soit le nombre de règles ouvertes, personne n'entrera. Ça se corrige dans la configuration du jeu, pas dans le pare-feu.
Les ports que tu ne devrais PAS ouvrir
- Celui de la base de données (3306 pour MySQL, 5432 pour PostgreSQL). Si le jeu et la base de données sont sur la même machine, inutile de l'ouvrir à Internet : ils se connectent par
localhost. Un MySQL ouvert au monde, c'est une invitation. - Les panels d'administration comme celui de txAdmin. Mieux vaut un tunnel SSH :
ssh -L 40120:localhost:40120 root@TON_IP, puis tu l'ouvres dans ton navigateur surlocalhost:40120. - Le RCON, sauf si tu en as vraiment besoin depuis l'extérieur. Et si tu l'ouvres, avec un mot de passe long et unique.
Si ça ne marche toujours pas
- Le serveur écoute-t-il, et sur
0.0.0.0? Lessci-dessus. - Le bon protocole ? Beaucoup de jeux passent par UDP ; ouvre les deux et le doute disparaît.
- Tu testes depuis l'extérieur ? Depuis le serveur lui-même, ça marche toujours.
- Vérifie les filtres de l'onglet Sécurité de ton service dans le panel : c'est le filtrage AntiDDoS du réseau, une couche différente du pare-feu du système.