Ich behaupte nicht, ein Experte mit iptables
Regeln zu sein, aber der erste Befehl verwendet die Connection Tracking-Erweiterung ( conntrack
), während der zweite die state
Erweiterung verwendet.
Datenpunkt # 1
Nach diesem Dokument hat die conntrack
Erweiterung abgelöst state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
Datenpunkt # 2
Trotzdem fand ich diese SF- Fragen und Antworten mit dem Titel: Firewall-Fragen zu Status und Richtlinien? wo das OP behauptete, diese Frage im IRC in # iptables @ freenode gestellt zu haben. Nachdem er es dort besprochen hatte, kam er zu dem Schluss, dass:
Technisch gesehen ersetzt das Conntrack-Match das State-Match - und ist damit überholt. Aber praktisch ist das Staatsmatch in keiner Weise überholt.
Datenpunkt # 3
Zuletzt fand ich diese SF Q & A mit dem Titel: Iptables, was ist der Unterschied zwischen -m state und -m conntrack? . Die Antwort auf diese Frage ist wahrscheinlich der beste Beweis und Rat, wie die Verwendung von conntrack
und angezeigt werden kann state
.
Auszug
Beide verwenden die gleichen Kernel-Interna (Connection Tracking Subsystem).
Header 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 - Zustandsmodul ist einfacher (und vielleicht weniger fehleranfällig). Es ist auch länger im Kernel. Conntrack auf der anderen Seite bietet mehr Optionen und Funktionen [1] .
Mein Aufruf ist, conntrack zu verwenden, wenn Sie dessen Funktionen benötigen, ansonsten bleiben Sie beim Zustandsmodul.
[1]"-m conntrack --ctstate DNAT -j MASQUERADE"
Sehr nützlich wie Routing / DNAT-Fixup ;-)
Datenpunkt # 4
Ich fand diesen Thread aus dem netfilter@vger.kernel.org netfilte / iptables Diskussionen, mit dem Titel: Zustand Spiel ist veraltet 1.4.17 , was ziemlich viel sagt , dass state
ist nur ein Alias , conntrack
damit es nicht wirklich wichtig , die Sie verwenden, in beide Umstände verwenden Sie conntrack
.
Auszug
Eigentlich muss ich zustimmen. Warum behalten wir nicht "state" als Alias bei und akzeptieren die alte Syntax in "conntrack"?
state ist derzeit aliasiert und wird in iptables in conntrack übersetzt, wenn der Kernel es hat. Es sind keine Skripte fehlerhaft.
Wenn das Aliasing im Userspace erfolgt, kann der Kernel-Teil entfernt werden - vielleicht eines Tages.
Das Aliasing erfolgt bereits im Userspace. Man gibt "state" ein und es wird in "conntrack" umgewandelt und das wird dann an den Kernel gesendet. (Soweit ich sehe, ob die Aliase des Moduls ipt_state, etc zum Modul conntrack hinzugefügt wurden, konnte sogar das Modul state kernel entfernt werden.)
Verweise