Réseau anti-DDoS pour serveurs de jeu FiveM NDA
Game Server Anti-DDoS
Un service de protection DDoS pour serveurs FiveM (GTA V en multijoueur). Des proxies filtrants masquent le vrai serveur et rejettent le trafic d’attaque dès le noyau.
01 / La problématique
Les communautés roleplay FiveM se font attaquer en permanence, souvent par des communautés rivales et surtout le soir, quand il y a le plus de joueurs connectés. Une seule attaque suffit à faire tomber un serveur et dès que son IP a fuité, les attaques reviennent en boucle. Un anti-DDoS générique ne sait pas comment un client FiveM rejoint un serveur, alors soit il laisse passer les fausses connexions, soit il bloque de vrais joueurs.
02 / Ce que j’ai réalisé
J’ai construit toute la plateforme from scratch en tant que seul ingénieur, de l’architecture au filtrage en passant par l’infra. Les joueurs passent par des nœuds proxy, si bien que l’IP réelle du serveur n’est jamais publiée. Une API de connexion placée derrière un CDN relaie le handshake officiel de FiveM jusqu’au serveur. Quand la connexion réussit, l’API ajoute l’IP du joueur à l’allowlist du proxy qui lui est attribué. Tout le reste est rejeté avant la pile réseau Linux par un programme eBPF/XDP écrit en Rust, pendant que nftables redirige le trafic accepté vers le serveur. Chaque serveur protégé a son propre port, le même sur tous les proxies, ce qui permet à une seule flotte de servir de nombreux clients. Le rendezvous hashing répartit les joueurs sur les proxies en bonne santé et assure la bascule sans attendre le DNS. J’ai aussi conçu la ressource Lua côté serveur qui synchronise la liste des proxies et un cache edge pour les gros téléchargements de ressources. Même chose pour l’accès protégé au panneau d’admin et pour l’échantillonnage des paquets dans le filtre, qui produit des fichiers pcap d’incident à transmettre aux fournisseurs en amont. La flotte de proxies est déployée avec Ansible et j’ai mis en place le monitoring avec des dashboards Grafana alimentés par les agents des proxies.
03 / Impact
En pointe, les serveurs protégés cumulaient plus de 20 000 joueurs connectés en même temps. L’origine reste cachée et les fausses connexions comme les attaques volumétriques s’arrêtent en bordure, alors que les vrais joueurs se connectent par le parcours FiveM habituel sans rien installer. J’ai vérifié chaque choix dans la documentation FiveM et le code source de FXServer.
Fonctionnalités principales
- 01Allowlist ouverte par IP de joueur uniquement après une connexion FiveM valide, avec expiration en cas d’inactivité
- 02Filtre eBPF/XDP en Rust (aya) qui rejette le trafic d’attaque avant la pile réseau du noyau
- 03Routage multi-clients avec un port dédié par serveur protégé sur chaque proxy
- 04Bascule entre proxies par rendezvous hashing avec des sondes sur le vrai chemin de jeu
- 05Téléchargements de ressources servis par un cache edge sans passer par les proxies
- 06Reverse proxy protégé pour le panneau d’admin du serveur
- 07Banlist globale par IP ou par licence joueur, vérifiée dès le début de la connexion
- 08Analyse des attaques avec échantillonnage dans le filtre, compteurs par étape et fichiers pcap d’incident
- 09Ressource Lua sur le serveur de jeu pour synchroniser les plages IP des proxies
- 10Déploiement avec Ansible et monitoring avec Grafana
Stack technique
- Rust (aya) pour eBPF/XDP et l’agent des proxies
- Réseau Linux : NAT nftables, conntrack
- Ansible (déploiement)
- Grafana (monitoring)
- Cloudflare (CDN, Workers, R2)
- Lua (ressource serveur FiveM)
- Fonctionnement interne de FiveM / FXServer