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 ACCEPTet
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTLequel 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
conntracksi 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
conntrackmatch est une version étendue dustatematch, 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 lestatecorrespondance.
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 :
stateest obsolète au profit deconntrack, et peuvent ou non être compilés selon la façon dont votre noyau a été construit.