J'utilise un client torrent sur mon serveur sans tête Ubuntu. De plus, plusieurs ordinateurs sont connectés à ce serveur, qui sert de passerelle/routeur Internet. La question est de savoir s'il est possible de configurer iptables pour hiérarchiser le trafic de eth1 (lan if) sur le trafic local généré par le serveur? Quelque chose comme QOS ..
Il existe plusieurs alternatives pour réaliser ce que vous recherchez. Mais avant tout, oui, c'est possible. Cependant, beaucoup de possibilités sont plutôt complexes.
L’une des options les plus simples consiste peut-être à exécuter le démon torrent sous un groupe\user propre. Ensuite, utilisez iptables pour marquer tout le trafic provenant de cet utilisateur\groupe avec un indicateur. Ensuite, laissez le filtre tc sur cet indicateur et placez-le dans la file d'attente à faible priorité. Regardez au bas de cette wiki pour une idée.
Pour ce que vous demandez, vous n'avez besoin que de deux files d'attente ( fig 1. ), une priorité basse et une haute. Bien qu'il soit préférable de s'en tenir à quelque chose plus proche de cet exemple . Vous pouvez adapter l'exemple à vos besoins, il suffit de supprimer la partie avec nat et d'attribuer à la marque par défaut une valeur inférieure à celle que vous utiliserez pour le trafic généré par le démon.
Donc, pour ma suggestion, vous pouvez utiliser quelque chose comme iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j MARK --set-mark 6
ZZZZ est l'identifiant de l'utilisateur.
Une option pour définir un indicateur pourrait consister à utiliser iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j CLASSIFY --set-class X:Y
, où X et Y représentent l'identificateur de classe et ZZZZ, l'identificateur d'utilisateur.
Fig 1:
+---------+
| root 1: |
+---------+
|
+------------+
| class 1:1 |
+------------+
| |
+----+ +----+
|1:10| |1:11|
+----+ +----+
Le mieux serait d’avoir une feuille pour chaque marque fw. Mais mon meilleur conseil est maintenant, lisez et essayez de comprendre l'exemple cité ci-dessus pour l'adapter à vos besoins. Si vous avez des questions, ajoutez-les.
Dans l'exemple cité ci-dessus , est-il important que vous compreniez cette partie ( fig 2. ) lorsque vous souhaitez écrire iptables règles de marquage ou de classification du trafic. Pour une brève explication avec un diagramme d'aspect légèrement différent regardez ceci .
Fig 2:
First you have to understand how packet traverse the filters with iptables:
+------------+ +---------+ +-------------+
Packet -| PREROUTING |--- routing-----| FORWARD |-------+-------| POSTROUTING |- Packets
input +------------+ decision +---------+ | +-------------+ out
| |
+-------+ +--------+
| INPUT |---- Local process -| OUTPUT |
+-------+ +--------+
Cela vous orientera dans la bonne direction:
règles, directives et approches
n parcours de contrôle de la circulation: scénarios du monde réel
La qualité de service est un sujet assez complexe - le lien posté par @ anders-f-u-kiaer est peut-être la meilleure solution, mais assez complexe. Je ne suis pas du tout un expert en la matière, je ne ferai donc aucun commentaire.
Néanmoins, une solution plus simple peut souvent être utile. Si vous voulez simplement limiter la bande passante d'un programme (par exemple, le client torrent), une solution bien simple consiste à utiliser trickle
(1).
Vous pouvez l'installer par
Sudo apt-get install trickle
et ensuite vous lancez un programme avec
trickle -d 100 -u 50 program
et program
aura une bande passante de 100 kbps pour le téléchargement et de 50 kbps pour le téléchargement. Vous trouverez beaucoup plus d’options et d’informations pour le filet sur cette page sur tuxradar: contrôlez votre bande passante avec le filet .
(1) Ceci diffère de la qualité de service appropriée: la bande passante utilisée par le programme "paralysé" sera réduite à chaque fois, pas seulement lorsque les services de priorité plus élevée sont sollicités, comme cela se produira avec la qualité de service correcte.