Je lis this howto, et il y a quelque chose comme ça:
Nous pouvons permettre aux sessions établies de recevoir du trafic:
$ Sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
La règle ci-dessus ne comporte aucun espace de part et d'autre de la virgule dans ESTABLISHED, RELATED
Si la ligne ci-dessus ne fonctionne pas, vous pouvez être sur un VPS castré dont le fournisseur n'a pas rendu l'extension disponible, auquel cas une version inférieure peut être utilisée en dernier recours:
$ Sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Y a-t-il une différence significative dans le travail entre -m conntrack --ctstate
et -m state --state
? Ils disent que l'on peut ne pas fonctionner, mais ils ne disent pas pourquoi. Pourquoi devrais-je préférer l'un à l'autre?
Je ne prétends pas être un expert avec les règles iptables
mais la première commande utilise l'extension de suivi de connexion (conntrack
) tandis que la seconde utilise les state
extension.
Selon ce document l'extension conntrack
a remplacé state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
Malgré cela, j'ai trouvé cette Q&R SF intitulée: Questions du pare-feu sur l'état et la politique? où l'OP prétendait avoir posé cette question sur IRC dans # iptables @ freenode. Après en discutant là, il est arrivé à la conclusion que:
Techniquement, le match conntrack remplace - et donc obsolète - le match d'état. Mais pratiquement le match étatique n'est en aucune façon obsolète.
Enfin, j'ai trouvé ce Q&A SF intitulé: Iptables, quelle est la différence entre -m state et -m conntrack? . La réponse à cette question est probablement la meilleure preuve et le meilleur conseil sur la façon d'afficher l'utilisation de conntrack
et state
.
extrait
Les deux utilisent les mêmes 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 - le module d'état est plus simple (et peut-être moins sujet aux erreurs). Il est également 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 restez avec le module d'état.
[1] Très utile comme
"-m conntrack --ctstate DNAT -j MASQUERADE"
routage/correction DNAT ;-)
J'ai trouvé ce fil dans les discussions [email protected] netfilte/iptables, intitulé: la correspondance d'état est obsolète 1.4.17 , ce qui indique à peu près que state
n'est qu'un alias à conntrack
donc peu importe ce que vous utilisez, dans les deux cas, vous utilisez conntrack
.
extrait
En fait, je dois être d'accord. Pourquoi ne gardons-nous pas "état" comme alias et n'acceptons pas l'ancienne syntaxe dans "conntrack"?
state est actuellement aliasé et traduit en conntrack dans iptables si le noyau en dispose. Aucun script n'est cassé.
Si l'aliasing est effectué dans l'espace utilisateur, la partie noyau peut être supprimée - un jour peut-être.
L'aliasing est déjà effectué dans l'espace utilisateur. On tape dans "état" et il est converti en "conntrack" et qui est ensuite envoyé au noyau. (Donc, pour autant que je vois si les alias de module ipt_state, etc. ont été ajoutés au module conntrack, même le module du noyau d'état pourrait être supprimé.)
Je ne suis pas un expert de netfilter, mais j'ai regardé la page de manuel iptables-extension et surprise, la voici
The "state" extension is a subset of the "conntrack" module.
Donc, l'état fait partie de conntrack et n'est qu'une version plus simple de celui-ci si vous en avez vraiment besoin - état et non des fonctionnalités les plus sophistiquées de conntrack