Hauptantwort:
Conntrack
ersetzt state
,aber in modernen Kerneln gibt es jetzt keinen Unterschied mehr zwischen den beiden.State
ist derzeit mit einem Alias versehen und in conntrack
übersetzt in iptables, wenn der Kernel es hat, also die Syntax -m state --state
wird tatsächlich in -m conntrack --ctstate
übersetzt und von demselben Modul behandelt werden.
Auf einigen alten Kerneln muss Contrack jedoch speziell aktiviert werden.
Mögliche Erklärung:
Es scheint mir, als ob die von Ihnen zitierten Regeln Duplikate enthielten, die sowohl ältere als auch neuere Kernel berücksichtigen.
Oder vielleicht ist dies nur ein Fall von Cargo-Kult-Programmierung.
Auf ServerFault aus dem Jahr 2012 gibt es diese Frage:
Was ist der praktische Unterschied zwischen:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
und
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Welche ist am besten zu verwenden?
Die akzeptierte Antwort lautet:
Beide verwenden die gleichen Kernel-Interna darunter (Verbindungsverfolgungs-Subsystem).
Kopfzeile von xt_conntrack.c
:
xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
Also würde ich sagen - das Zustandsmodul ist einfacher (und vielleicht weniger fehleranfällig). Es ist auch länger im Kernel. Conntrack auf der anderen Seite hat mehr Optionen und Funktionen[1].
Mein Aufruf ist, conntrack
zu verwenden wenn Sie seine Funktionen benötigen, bleiben Sie andernfalls beim Statusmodul.
Ähnliche Frage zu netfiltermaillist.
[1] Ziemlich nützlich wie -m conntrack --ctstate DNAT -j MASQUERADE"
routing/DNAT fixup
;-)
Eine der anderen Antworten führt zu diesem Dokument über iptables
. Es heißt:
Die conntrack
match ist eine erweiterte Version des state
match, was es ermöglicht, Pakete viel detaillierter abzugleichen. Damit können Sie Informationen anzeigen, die direkt im Verbindungsverfolgungssystem verfügbar sind, ohne "Frontend"-Systeme, wie z. B. in state
übereinstimmen.
Ich denke also, dass dies wahr ist (aus einer weiteren Antwort dort):
Es gibt keinen Unterschied im Ergebnis dieser beiden Regeln.
Beachten Sie, dass es auch einen interessanten Kommentar unter der Frage gibt:
state
ist zugunsten von conntrack
veraltet , und kann einkompiliert werden oder nicht, je nachdem, wie Ihr Kernel gebaut wurde.