Risposta principale :
Conntrack
sostituisce state
, ma nei kernel moderni ora non c'è differenza tra i due.State
è attualmente aliased e tradotto in conntrack
in iptables se il kernel ce l'ha, quindi la sintassi -m state --state
è effettivamente tradotto in -m conntrack --ctstate
e gestito dallo stesso modulo.
Su alcuni vecchi kernel, tuttavia, contrack deve essere specificamente abilitato.
Possibile spiegazione :
Mi sembra che le regole che hai citato includessero i duplicati, adatti sia ai kernel più vecchi che a quelli più recenti.
O forse questo è solo un caso di programmazione cult Cargo.
C'è questa domanda su ServerFault dell'anno 2012:
Qual è la differenza pratica tra:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
e
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Quale è meglio usare?
La risposta accettata è:
Entrambi utilizzano gli stessi componenti interni del kernel (sottosistema di tracciamento della connessione).
Intestazione di
xt_conntrack.c
:xt_conntrack - Netfilter module to match connection tracking information. (Superset of Rusty's minimalistic state match.)
Quindi direi:il modulo state è più semplice (e forse meno soggetto a errori). È anche più lungo nel kernel. Conntrack dall'altra parte ha più opzioni e caratteristiche[1].
La mia chiamata è usare
conntrack
se hai bisogno delle sue caratteristiche, altrimenti mantieni il modulo state.Domanda simile su netfiltermaillist.
[1] Abbastanza utile come
-m conntrack --ctstate DNAT -j MASQUERADE" routing/DNAT fixup
;-)
Una delle altre risposte porta a questo documento su iptables
. Dice:
Il
conntrack
match è una versione estesa delstate
match, che rende possibile abbinare i pacchetti in modo molto più granulare. Ti consente di esaminare le informazioni direttamente disponibili nel sistema di tracciamento della connessione, senza alcun sistema di "frontend", come nelstate
corrispondenza.
Quindi penso che questo sia vero (da un'altra risposta lì):
Non c'è differenza nel risultato di queste due regole.
Nota che c'è anche un commento interessante sotto la domanda:
state
è deprecato a favore diconntrack
, e può o non può essere compilato a seconda di come è stato compilato il kernel.