Tout d'abord, jetons un coup d'œil à la Flux de paquets dans Netfilter et le réseau général :
Vous pouvez voir qu'il y a les mangle/OUTPUT et le filtre/sortie et le long du chemin, une contrôle de reroutage . Le site mangle/OUTPUT (ainsi que le NAT de conntrack) a une propriété spéciale, qui n'a pas la propriété filtre/sortie chaîne : elle le fera déclencher un contrôle de reroutage chaque fois que des parties intéressantes d'un paquet ont été modifiées. (pour être honnête, je suis surpris de ne pas voir filtre/sortie après contrôle de réacheminement dans le schéma, parce que le contrôle de réacheminement pourrait simplement être la netfilter 's ip_route_me_harder()
fonction).
En Objectif du TCPMSS ne fait que modifier l'option TCP MSS, qui ne fait pas partie des "parties intéressantes" cochées dans la section mangle/OUTPUT (adresses IP, TOS, marque de pare-feu) et ne déclenchera donc jamais une vérification de reroutage. Ainsi, cette cible, si elle n'est pas utilisée en synergie avec d'autres règles et/ou priorités exigeant qu'elle soit placée à un endroit ou à un autre pour des raisons non liées, a exactement le même comportement lorsqu'elle est utilisée en tant que filtre/sortie o mangle/OUTPUT .
Ceci étant dit, dans le cas du routage/transfert, la distinction entre le mangle/FORWARD et la filtre/avant est complètement arbitraire : il n'y a aucune différence fonctionnelle entre eux, sauf que mangle/FORWARD est traversé avant filtre/avant (il a une priorité/prédence inférieure) et que certaines cibles pourraient arbitrairement être autorisées uniquement dans l'un ou l'autre plutôt que dans les deux. À l'exception de cette priorité, contrairement au cas de OUTPUT, il n'y a pas de raison technique impérative pour que les deux existent. Si l'itinéraire devait être modifié par la manipulation, cela aurait déjà dû être fait dans le fichier mangle/PREROUTING cette fois, avant même que la décision concernant l'itinéraire ne soit prise.
Sur iptables le filtre est traditionnellement utilisée pour les décisions de type ACCEPT/DROP, alors que la table mangle est traditionnellement utilisé pour modifier les paquets. Ainsi, l'utilisation de TCPMSS dans le mangle semblerait plus logique, mais vous n'êtes pas obligé de suivre cette règle, surtout si c'est la seule règle qui se retrouverait dans mangle/FORWARD .
En revanche, dans nftables (où vous créez votre propre tableaux ées : elles ne sont pas fixes), la sp modification de l'itinéraire comportement d'iptables'. mangle/OUTPUT La chaîne a été séparée et placée dans son spécifique type de route qui n'existe que pour la sortie : a type route hook output
chaîne. Ainsi, quelle que soit l'action de mutilation que vous effectuez, vous pouvez choisir si elle est autorisée à déclencher un contrôle de réacheminement en la plaçant dans ce type de chaîne au lieu de la chaîne type filter hook output
chaîne. Dans tous les autres cas (y compris le routage/transfert), on utilise la chaîne filtre car il n'y a pas de mangle plus. Sur nftables pour le cas OUTPUT, il semblerait plus logique de mettre cette modification dans un type filter hook output
plutôt qu'une type route hook output
(je ne nomme pas la table, vous pourriez ajouter les deux types de chaînes dans la même table, ce n'est pas équivalent à iptables ).