Réponse principale :
Conntrack
remplace state
, mais dans les noyaux modernes, il n'y a plus de différence entre les deux.State
est actuellement aliasé et traduit en conntrack
dans iptables si le noyau l'a, donc la syntaxe -m state --state
est en fait traduit en -m conntrack --ctstate
et gérés par le même module.
Sur certains noyaux anciens, cependant, le contrack doit être spécifiquement activé.
Explication possible :
Il me semble que les règles que vous avez citées incluaient des doublons, couvrant à la fois les noyaux plus anciens et plus récents.
Ou peut-être que c'est juste un cas de programmation culte Cargo.
Il y a cette question sur ServerFault de l'année 2012 :
Quelle est la différence pratique entre :
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
et
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Lequel est le meilleur à utiliser ?
La réponse acceptée est :
Les deux utilisent les mêmes composants internes du noyau en dessous (sous-système de suivi des connexions).
En-tête de
xt_conntrack.c
:xt_conntrack - Netfilter module to match connection tracking information. (Superset of Rusty's minimalistic state match.)
Je dirais donc que le module d'état est plus simple (et peut-être moins sujet aux erreurs). C'est aussi plus long dans le noyau. Conntrack de l'autre côté a plus d'options et de fonctionnalités[1].
Mon appel est d'utiliser
conntrack
si vous avez besoin de ses fonctionnalités, sinon respectez le module d'état.Question similaire sur netfiltermaillist.
[1] Assez utile comme
-m conntrack --ctstate DNAT -j MASQUERADE" routing/DNAT fixup
;-)
L'une des autres réponses mène à ce document sur iptables
. Il dit :
Le
conntrack
match est une version étendue dustate
match, ce qui permet de faire correspondre les paquets de manière beaucoup plus granulaire. Il vous permet de consulter les informations directement disponibles dans le système de suivi des connexions, sans aucun système "frontend", comme dans lestate
correspondance.
Donc je pense que c'est vrai (d'après encore une autre réponse) :
Il n'y a aucune différence dans le résultat de ces deux règles.
Notez qu'il y a aussi un commentaire intéressant sous la question :
state
est obsolète au profit deconntrack
, et peuvent ou non être compilés selon la façon dont votre noyau a été construit.