Je mène le serveur dans le jeu, qui ont cassé AntyCheat et s'il y a beaucoup de connexions en une fois, cela casse tout le serveur et personne ne peut se connecter. La solution consiste donc à limiter les connexions en une fois à 1 connexion sur 5 secondes à l’aide de IPTables. Il devrait ressembler à: 1 joueur -> 5 secondes -> 2 joueur -> 5 secondes (si l’un se connecte, il doit arrêter l’autre pendant 5 secondes)
Pour cet exemple de réponse, le protocole est TCP, et d'autres informations ont été extraites des commentaires. Ajuste en accord.
Ce premier exemple donnera en moyenne 5 secondes entre les connexions uniquement:
Sudo iptables -A INPUT -i eth0 -m state --state NEW -p tcp -m limit --limit 12/minute --dport 12871 -j ACCEPT
Sudo iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 12871 -j DROP
Ce deuxième exemple nécessitera exactement 5 secondes entre les tentatives de connexion, sans aucune autre tentative de nouvelle connexion pendant ces 5 secondes. c'est-à-dire qu'une tentative pendant ces 5 secondes réinitialisera le compteur de temps.
Sudo iptables -A INPUT -i eth0 --protocol tcp --destination-port 12871 -m state --state NEW -m recent --mask 0.0.0.0 --update --hitcount 1 --seconds 5 --name LIMIT_NEW_RATE -j DROP
Sudo iptables -A INPUT -i eth0 --protocol tcp --destination-port 12871 -m state --state NEW -m recent --mask 0.0.0.0 --set --name LIMIT_NEW_RATE -j ACCEPT
Vous devrez déterminer où cette règle doit s’inscrire dans le contexte général de vos règles iptables.
Utilisation du module connlimit
et limit
:
Sudo iptables -A INPUT -p tcp --syn -i eth0 --dport 12871:12881 -m connlimit --connlimit-above 1 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
Sudo iptables -A INPUT --dport 12871:12881 -m state --state RELATED,ESTABLISHED -m limit --limit 12/minute --limit-burst 1 -j ACCEPT
Sudo iptables -A INPUT -p tcp --dport 12871:12881 -i eth0 -m state --state NEW -m recent --set
Sudo iptables -A INPUT -p tcp --dport 12871:12881 -i eth0 -m state --state NEW,RELATED,ESTABLISHED -m recent --update --seconds 5 --hitcount 1 -j DROP
Puis appliquez de nouvelles règles:
Sudo iptables-save > /etc/iptables/rules.v4
Installez le paquet persistant iptables:
Sudo apt install iptables-persistent
Sudo service netfilter-persistent reload
Remarque:
-I
pour placer ces règles au premier plan.