GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi stavem iptables a ctstate?

Hlavní odpověď:

Conntrack nahrazuje state ,ale v moderních jádrech mezi nimi nyní není žádný rozdíl.State je aktuálně alias a přeložen do conntrack v iptables, pokud to jádro má, tak syntaxi -m state --state je ve skutečnosti přeloženo do -m conntrack --ctstate a zpracovávány stejným modulem.

Na některých starých jádrech však musí být contrack výslovně povolen.

Možné vysvětlení:

Zdá se mi, jako by pravidla, která jste citovali, obsahovala duplikáty, které vyhovují starším i novějším jádrům.

Nebo je to možná jen případ programování kultu Cargo.


Na ServerFault z roku 2012 je tato otázka:

Jaký je praktický rozdíl mezi:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

a

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Který z nich je nejlepší použít?

Přijatá odpověď je:

Oba používají stejné vnitřní jádro jádra (subsystém sledování připojení).

Záhlaví xt_conntrack.c :

xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)

Řekl bych tedy -- stavový modul je jednodušší (a možná méně náchylný k chybám). V jádře je také delší. Conntrack na druhé straně má více možností a funkcí[1].

Moje výzva je použít conntrack pokud potřebujete jeho funkce, jinak stickwith stavový modul.

Podobná otázka na netfiltermaillist.

[1] Docela užitečné jako -m conntrack --ctstate DNAT -j MASQUERADE" routing/DNAT fixup;-)

Jedna z dalších odpovědí vede k tomuto dokumentu o iptables . Říká:

conntrack match je rozšířená verze state match, což umožňuje přiřazovat pakety mnohem podrobnějším způsobem. Umožňuje vám podívat se na informace přímo dostupné v systému sledování připojení, bez jakýchkoli „frontendových“ systémů, jako je state zápas.

Takže si myslím, že je to pravda (z další odpovědi):

Ve výsledku těchto dvou pravidel není žádný rozdíl.

Všimněte si, že pod otázkou je také zajímavý komentář:

state je zastaralé ve prospěch conntrack , a může nebo nemusí být zkompilován v závislosti na tom, jak bylo vaše jádro sestaveno.


Linux
  1. Jaký je rozdíl mezi insmod a modprobe

  2. Jaký je rozdíl mezi strtok_r a strtok_s v C?

  3. Jaký je rozdíl mezi adduser a useradd?

  1. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  2. Jaký je rozdíl mezi ls a l?

  3. Jaký je rozdíl mezi `su -` a `su --login`?

  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Jaký je rozdíl mezi Git Switch a Checkout?

  3. Jaký je rozdíl mezi Redhat a centOS?