« Mets un proxy devant ton serveur » est le conseil le plus répété dans les Discord FiveM après une attaque. Il est parfois juste, souvent incomplet. Un reverse proxy change ce que les attaquants voient, pas la quantité de trafic qu'ils peuvent envoyer. Ce guide explique ce qu'il protège réellement, quand il vaut mieux s'en passer, et comment en monter un proprement sur un VPS si c'est la bonne solution pour vous.
1. Ce que fait un reverse proxy
Un reverse proxy est une machine intermédiaire placée entre les joueurs et votre serveur. Les joueurs se connectent à l'adresse du proxy ; le proxy relaie le trafic vers le vrai serveur, appelé serveur d'origine, par un canal privé. Pour les joueurs comme pour la liste publique des serveurs, seule l'adresse du proxy existe.
| Sans proxy | Avec proxy |
|---|---|
| Joueurs → serveur FiveM | Joueurs → proxy → tunnel privé → serveur FiveM |
| L'adresse du serveur est publique | Seule l'adresse du proxy est publique |
| Une attaque touche directement le serveur | Une attaque touche d'abord le proxy |
2. Ce qu'un proxy protège vraiment
- L'adresse de votre serveur d'origine, tant qu'elle n'a jamais été publiée. C'est l'intérêt principal : on ne peut pas attaquer directement une machine dont on ignore l'adresse.
- Un serveur hébergé sans protection : chez vous, sur une connexion fibre, ou chez un hébergeur sans filtrage. Le proxy, placé chez un hébergeur protégé, encaisse à sa place.
- Plusieurs serveurs derrière une seule porte d'entrée, que l'on peut déplacer sans changer l'adresse communiquée aux joueurs.
3. Ses limites, dont on parle moins
- Un proxy ne filtre rien par lui-même. S'il est hébergé sans protection réseau, une attaque volumétrique le sature, et votre serveur devient injoignable exactement comme avant. Le proxy doit lui-même être derrière un Anti-DDoS réseau.
- Il ajoute de la latence : un détour par une machine supplémentaire. Placé dans le même pays que l'origine, c'est quelques millisecondes ; mal placé, les joueurs le sentent.
- Il ajoute un point de panne. Si le proxy tombe, le serveur est inaccessible, même en parfaite santé.
- L'adresse d'origine fuit facilement : un ancien enregistrement DNS, un script qui contacte une API externe, une capture d'écran de la console. Une seule fuite, et le proxy ne sert plus à rien.
- Il complique l'administration : selon la méthode, le serveur peut ne plus voir l'adresse réelle des joueurs, ce qui gêne les bannissements par adresse IP et certains anti-cheats.
4. Proxy ou VPS directement protégé ?
Un proxy a du sens si
- Votre serveur tourne chez vous, ou chez un hébergeur sans Anti-DDoS, et vous ne pouvez pas le déplacer.
- Vous voulez regrouper plusieurs serveurs derrière une seule adresse.
- Vous êtes prêt à maintenir une machine et un tunnel de plus.
Un VPS protégé suffit si
- Vous pouvez héberger le serveur lui-même sur une machine filtrée en amont.
- Vous voulez la latence la plus basse possible.
- Vous préférez une architecture simple, sans point de panne supplémentaire.
C'est le choix que nous avons fait pour nos serveurs de jeu : l'Anti-DDoS filtre le trafic sur le réseau, avant même qu'il atteigne la machine, donc le serveur n'a pas besoin de se cacher. Nous détaillons ce raisonnement sur notre page serveur FiveM protégé. Si votre situation relève de la colonne de gauche, la suite de ce guide est pour vous.
5. L'architecture à monter
- Un VPS proxy, placé chez un hébergeur avec Anti-DDoS réseau, idéalement dans le même pays que l'origine. Un petit VPS suffit : un proxy consomme peu de processeur. Un VPS NVMe d'entrée de gamme fait l'affaire.
- Un tunnel WireGuard entre le proxy et l'origine : le trafic relayé circule chiffré, et l'origine n'a besoin d'aucun port ouvert sur Internet.
- Nginx sur le proxy, avec son module
stream, qui relaie le port 30120 en TCP et en UDP vers l'origine à travers le tunnel.
Dans les exemples, le proxy a l'adresse 10.8.0.1 dans le tunnel, et le serveur d'origine 10.8.0.2.
6. Le tunnel WireGuard
Installez WireGuard sur les deux machines et générez une paire de clés de chaque côté, comme détaillé dans notre guide monter un VPN WireGuard sur un VPS. Sur le proxy, /etc/wireguard/wg0.conf :
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <cle privee du proxy>
[Peer]
PublicKey = <cle publique de l'origine>
AllowedIPs = 10.8.0.2/32
Sur le serveur d'origine :
[Interface]
Address = 10.8.0.2/24
PrivateKey = <cle privee de l'origine>
[Peer]
PublicKey = <cle publique du proxy>
Endpoint = IP_PUBLIQUE_DU_PROXY:51820
AllowedIPs = 10.8.0.1/32
PersistentKeepalive = 25
C'est l'origine qui initie la connexion vers le proxy, grâce à PersistentKeepalive : elle n'a donc besoin d'aucun port entrant, ce qui fonctionne même derrière une box. Démarrez le tunnel des deux côtés avec systemctl enable --now wg-quick@wg0, puis vérifiez avec ping 10.8.0.2 depuis le proxy.
7. Le relais Nginx sur le proxy
apt install -y nginx libnginx-mod-stream
Ajoutez à la fin de /etc/nginx/nginx.conf, en dehors du bloc http :
stream {
upstream fivem_tcp { server 10.8.0.2:30120; }
upstream fivem_udp { server 10.8.0.2:30120; }
server {
listen 30120;
proxy_pass fivem_tcp;
}
server {
listen 30120 udp reuseport;
proxy_pass fivem_udp;
proxy_timeout 60s;
}
}
nginx -t && systemctl reload nginx
ufw allow 30120 comment 'FiveM via proxy'
ufw allow 51820/udp comment 'WireGuard'
Sur le serveur d'origine, fermez le port 30120 à Internet et n'autorisez que le tunnel : ufw allow in on wg0 to any port 30120. C'est ce qui garantit que personne ne contourne le proxy.
8. Le server.cfg du serveur d'origine
Il reste à dire à FiveM qu'il est derrière un proxy, pour qu'il s'annonce avec l'adresse du proxy dans la liste publique et fasse confiance au relais. FiveM prévoit des directives pour cela ; les principales :
set sv_forceIndirectListing true
set sv_listingHostOverride "play.monserveur.fr"
set sv_proxyIPRanges "10.8.0.0/24"
set sv_endpoints "IP_PUBLIQUE_DU_PROXY:30120"
Cfx.re documente la configuration derrière un proxy dans sa documentation officielle, et le comportement peut évoluer d'un build à l'autre. Relisez la page consacrée aux proxys pour votre version avant la mise en production, et testez d'abord sur un serveur de développement.
Faites pointer votre nom de domaine, play.monserveur.fr dans l'exemple, vers l'adresse du proxy, jamais vers l'origine. Voir configurer les DNS.
9. Vérifier que tout est étanche
- Connectez-vous en jeu avec
connect play.monserveur.fr:30120: le serveur doit répondre normalement. - Depuis une autre connexion, tentez de joindre directement l'adresse de l'origine sur le port 30120 : la connexion doit échouer.
- Cherchez votre adresse d'origine dans l'historique DNS public de votre domaine : si elle y figure, changez-la, car elle est déjà connue.
- Surveillez la latence des joueurs les premiers jours : si elle a nettement augmenté, rapprochez le proxy de l'origine.
En cas de souci au démarrage, voyez les erreurs de démarrage les plus fréquentes, et pour les ralentissements, serveur FiveM qui lag.