11.25. Cible TOS

La cible TOS sert à disposer le champ Type de Service dans un en-tête IP. Le champ TOS consiste en 8 bits utilisés pour aider au routage de paquets. C'est un des champs qui peut être utilisé directement dans iproute2 et son sous-système pour les stratégies de routage. Notez de plus, que si vous maintenez plusieurs pare-feux et routeurs séparés, c'est le seul moyen pour propager les informations de routage dans les paquets entre ces routeurs et pare-feux. Comme noté précédemment, la cible MARK - laquelle dispose un MARK associé à un paquet spécifique - est disponible seulement dans le noyau, et ne peut pas être propagée avec le paquet. Si vous avez besoin de propager des informations de routage pour un paquet spécifique ou un flux, vous devrez donc placer le champ TOS, qui a été créé pour ça.

Il existe un grand nombre de routeurs sur Internet qui font du mauvais travail à ce sujet, ce qui fait qu'il peut être moins utile maintenant d'essayer de faire de l'analyse TOS avant d'envoyer les paquets sur Internet. Dans le meilleur des cas les routeurs ne font pas attention au champ TOS. Dans le pire, ils examineront le champ TOS et feront de mauvaises choses. Cependant, le champ TOS peut être placé avec une grande utilité si vous avez un grand WAN ou LAN avec de multiples routeurs. Vous avez la possibilité de donner aux paquets différentes routes et préférences, basées sur leur valeur TOS.

[Attention] Attention

La cible TOS ne place que des valeurs spécifiques, ou valeurs nommées sur des paquets. Ces valeurs prédéfinies peuvent être trouvées dans les fichiers "include" du noyau, ou plus précisément le fichier Linux/ip.h. Les raisons sont multiples, et vous n'aurez actuellement besoin de placer aucune autre valeur; cependant, il existe d'autres moyens par rapport à cette limitation. Pour contourner cette limitation de ne pouvoir placer que des valeurs nommées sur les paquets, vous pouvez utiliser le patch FTOS disponible sur le site Paksecured Linux Kernel patches maintenu par Matthew G. Marsh. Attention, soyez prudents avec ce patch ! Vous ne devriez pas avoir besoin d'autre chose que les valeurs par défaut, sauf dans des cas extrêmes.

[Note] Note

Cette cible n'est valide que dans la table mangle et ne peut être utilisée hors de celle-ci.

[Note] Note

Notez aussi que certaines versions anciennes (1.2.2 ou avant) d'Iptables fournissaient une implémentation de cette cible qui ne fixait pas la somme de contrôle dans l'analyse, ce qui corrompait les paquets et provoquait des connexions qui n'aboutissaient pas.

TOS ne prend qu'une option décrite ci-dessous.

Tableau 11.19. Options de la cible TOS

Option --set-tos
Exemple iptables -t mangle -A PREROUTING -p TCP --dport 22 -j TOS --set-tos 0x10
Explication L'option --set-tos indique à l'analyseur TOS quelle valeur placer sur les paquets qui sont examinés. L'option prend une valeur numérique, soit en hexadécimal soit en décimal. Comme la valeur TOS consiste en 8 bits, la valeur peut être 0-255, ou en hexadécimal 0x00-0xFF. Notez que dans la cible TOS standard vous êtes limité à l'utilisation des valeurs nommées disponibles (qui sont plus ou moins standard), comme mentionné précédemment. Ces valeurs sont Minimize-Delay (valeur décimale 16, valeur hexadécimale 0x10), Maximize-Throughput (valeur décimale 8, valeur hexadécimale 0x08), Maximize-Reliability (valeur décimale 4, valeur hexadécimale 0x04), Minimize-Cost (valeur décimale 2, valeur hexadécimale 0x02), ou Normal-Service (valeur décimale 0, valeur hexadécimale 0x00). La valeur par défaut pour la plupart des paquets est Normal-Service, ou 0. Notez que vous pouvez, bien sûr, utiliser les noms au lieu des valeurs hexadécimales pour placer la valeur TOS; en fait, c'est généralement recommandé, car les valeurs associées avec les noms peuvent être changées par la suite. Pour une liste complète des valeurs descriptives, tapez la commande : iptables -j TOS -h.

[Note] Note

Fonctionne avec les noyaux 2.3, 2.4, 2.5 et 2.6.