Non pretendo di essere un esperto di iptables
regole, ma il primo comando utilizza l'estensione di tracciamento della connessione ( conntrack
) mentre il secondo utilizza l' state
estensione.
Punto dati n. 1
Secondo questo documento l' conntrack
estensione ha sostituito state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
Punto dati n. 2
Anche così ho trovato questa domanda e risposta sul titolo SF: Domande sul firewall relative a stato e politica? dove l'OP ha affermato di aver posto questa domanda su IRC in # iptables @ freenode. Dopo averne discusso, arrivò alla conclusione che:
Tecnicamente la partita conntrack sostituisce - e quindi gli obsoletes - la partita statale. Ma praticamente la partita di stato non è in alcun modo obsoleta.
Punto dati n. 3
Alla fine ho trovato questa domanda e risposta SF intitolata: Iptables, qual è la differenza tra -m state e -m conntrack? . La risposta a questa domanda è probabilmente la migliore prova e consiglio su come visualizzare l'uso di conntrack
e state
.
estratto
Entrambi usano gli stessi kernel interni (sottosistema di tracciamento delle connessioni).
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 di stato è più semplice (e forse meno soggetto a errori). È anche più lungo nel kernel. Conntrack dall'altra parte ha più opzioni e funzionalità [1] .
La mia chiamata è quella di utilizzare Conntrack se hai bisogno delle sue funzionalità, altrimenti mantieni il modulo di stato.
[1] Abbastanza utile come "-m conntrack --ctstate DNAT -j MASQUERADE"
routing / DNAT fixup ;-)
Punto dati n. 4
Ho trovato questo thread dalle discussioni netfilte@vger.kernel.org netfilte / iptables, intitolato: state match è obsoleto 1.4.17 , che praticamente dice che state
è solo un alias per conntrack
cui non importa davvero quale usi, in entrambe le circostanze che stai utilizzando conntrack
.
estratto
In realtà, devo essere d'accordo. Perché non manteniamo "state" come alias e accettiamo la vecchia sintassi in "conntrack"?
state è attualmente aliasato e tradotto in conntrack in iptables se il kernel lo possiede. Nessuno script è rotto.
Se l'aliasing viene eseguito nello spazio utente, la parte del kernel può essere rimossa - un giorno forse.
L'aliasing è già stato eseguito in userspace. Si digita in "stato" e viene convertito in "conntrack" e che viene quindi inviato al kernel. (Per quanto vedo se gli alias del modulo ipt_state, ecc. Sono stati aggiunti al modulo conntrack, anche il modulo del kernel di stato potrebbe essere rimosso.)
Riferimenti