Définir la limite de débit de packages via iptables

J'ai une limite de débit de packages (maximum 10 par seconde) qui est définie par mon fournisseur d'access Internet. C'est un problème si je veux utiliser le lecteur AceStream, parce que si je dépasse la limite, je me déconnecte.

Comment puis-je restreindre l'access internet de ce programme?

J'ai essayé la command suggérée:

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT 

mais j'obtiens un message d'erreur fatal:

 FATAL: Error inserting ip_tables (/lib/modules/3.2.0-67-generic/kernel/net/ipv4/netfilter/ip_tables.ko): Operation not permitted iptables v1.4.12: can't initialize iptables table `filter': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded. 

Avec les droits d'administrateur:

 sudo iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT 

il n'y a plus de message errror. Mais ça ne marche toujours pas, je suis déconnecté.

Y a-t-il une erreur dans la command line? Ou dois-je utiliser d'autres arguments d'iptables?

Voici le message que je reçois, lorsque je dépasse les limites du fournisseur. entrer la description de l'image ici

Jusqu'à présent, j'ai essayé différentes approches, mais aucune d'elles n'a fonctionné.

 sudo iptables -A INPUT -p tcp --syn --dport 8621 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 9/second --limit-burst 10 -j ACCEPT sudo iptables -A INPUT -p tcp --destination-port 8621 --syn -m state --state NEW -m limit --limit 9/s --limit-burst 10 -j ACCEPT 

Cette approche ne semble pas aider pour continuer à utiliser l'application. Donc, j'ai posté une autre question: définir la limite de connection via iptables .

    La solution que vous avez trouvée était correcte:

     iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT 

    Mais il suppose une stratégie par défaut de DROP ou REJECT qui n'est pas habituelle pour OUTPUT. Vous devez append:

     iptables -A OUTPUT -j REJECT 

    Assurez-vous d'append cette règle après l'ACCEPTER. Soit les exécuter dans cet ordre, soit utiliser -I au lieu de -A pour ACCEPT.

    En outre, en fonction de l'application cela pourrait tuer la connection. Dans ce cas, essayez avec DROP au lieu de REJECT ou essayez avec un --reject-with (par défaut, icmp-port-unreachable).

    Je viens de tester avec Telnet contre un server DVR et il n'a pas tué la connection. Bien sûr, comme une nouvelle connection est un package de sortie, essayer de se reconnecter juste après avoir atteint la limite échouera tout de suite si vous utilisez REJECT.

    D'après les commentaires, je pense que votre FAI s'attend également à ce que vous limitiez vos packages INPUT … vous ne pouvez pas le faire. Au moment où vous êtes en mesure de les arrêter, ils ont déjà atteint votre carte réseau, ce qui signifie qu'ils étaient déjà pris en count par votre FAI. Le nombre de packages INPUT augmentera également considérablement lorsque vous limiterez votre SORTIE car la plupart des ACK ne seront pas éliminés, entraînant de nombreuses retransmissions.

    10 packages par seconde est fou.

    Protection contre les inondations:

     # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT 

    Scanner port Furtif:

     # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT 

    Ping de la mort:

     # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT