Aller au contenu principal

Optimisation TCP MSS (iptables)

Ce guide explique comment configurer iptables pour optimiser automatiquement le MSS (Maximum Segment Size) TCP sur l'ensemble du serveur, évitant les problèmes de latence liés aux tunnels réseau (Gcore, VPN, etc.).

Le problème

Certains réseaux (comme Gcore) utilisent des tunnels qui réduisent le MTU disponible. Sans ajustement du MSS, les paquets TCP sont fragmentés, causant de la latence.

Solution : Clamper le MSS au PMTU

Cette règle iptables ajuste automatiquement le MSS en fonction du Path MTU découvert.

Configuration permanente

Créez un script pour appliquer les règles au démarrage :

sudo nano /etc/iptables-mss.sh

Contenu du script :

#!/bin/bash
# Optimisation MSS pour éviter la fragmentation TCP

# Nettoyer les anciennes règles MSS (évite les doublons)
iptables -t mangle -F

# Appliquer le clamp MSS sur toutes les chaînes
# INPUT : paquets entrants vers le serveur
iptables -t mangle -A INPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# OUTPUT : paquets sortants du serveur
iptables -t mangle -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# FORWARD : paquets routés (conteneurs Docker)
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# POSTROUTING : après routage
iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# PREROUTING : avant routage
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

echo "Règles MSS appliquées avec succès"

Rendre le script exécutable :

sudo chmod +x /etc/iptables-mss.sh

Exécuter au démarrage

Créez un service systemd :

sudo nano /etc/systemd/system/iptables-mss.service
[Unit]
Description=Optimisation MSS TCP globale
After=network.target docker.service

[Service]
Type=oneshot
ExecStart=/etc/iptables-mss.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Activer et démarrer le service :

sudo systemctl daemon-reload
sudo systemctl enable iptables-mss.service
sudo systemctl start iptables-mss.service

Vérifier les règles

sudo iptables -t mangle -L -v -n

Vous devriez voir les règles TCPMSS sur chaque chaîne.

Explication technique

OptionDescription
-t mangleTable pour modifier les paquets
--tcp-flags SYN,RST SYNCible uniquement les paquets SYN (établissement de connexion)
--clamp-mss-to-pmtuAjuste le MSS en fonction du PMTU découvert

Cas d'utilisation

Cette optimisation est utile pour :

  • Serveurs derrière une protection DDoS (Gcore, OVH Game DDoS Protection, etc.)
  • VPS avec tunnels réseau
  • Serveurs de jeux (FiveM, Minecraft, etc.)
  • Toute infrastructure où le MTU est réduit
Conseil

Si vous utilisez Pterodactyl avec Gcore, combinez cette configuration avec le MTU optimisé pour Docker.