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 ACCEPTe
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTQuale è 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
conntrackse 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
conntrackmatch è una versione estesa delstatematch, 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 nelstatecorrispondenza.
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.