GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la differenza tra iptables state e ctstate?

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 del state 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 nel state 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 di conntrack , e può o non può essere compilato a seconda di come è stato compilato il kernel.


Linux
  1. Qual è la differenza tra InnoDB e MyISAM?

  2. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  3. Qual è la differenza tra Git Switch e Checkout?

  4. Qual è la differenza tra `su -` e `su --login`?

  5. Qual è la differenza tra unlink e rm?

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra Login e Non-Login Shell

Qual è la differenza tra il comando apt e apt-get?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Qual è la differenza tra le catene OUTPUT e FORWARD in iptables?