GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre l'état iptables et ctstate?

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 du state 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 le state 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 de conntrack , et peuvent ou non être compilés selon la façon dont votre noyau a été construit.


Linux
  1. Quelle est la différence entre Redhat et centOS ?

  2. Quelle est la différence entre strtok_r et strtok_s en C ?

  3. Quelle est la différence entre fsck et e2fsck ?

  4. Quelle est la différence entre ls et l ?

  5. Quelle est la différence entre $(CC) et $CC ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre la connexion et le shell sans connexion

Quelle est la différence entre la commande apt et apt-get ?

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

Quelle est la différence entre les chaînes OUTPUT et FORWARD dans iptables ?