GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre el estado de iptables y ctstate?

Respuesta principal:

Conntrack reemplaza state ,pero en los núcleos modernos ahora no hay diferencia entre los dos.State actualmente tiene un alias y está traducido a conntrack en iptables si el kernel lo tiene, entonces la sintaxis -m state --state en realidad se traduce a -m conntrack --ctstate y manejado por el mismo módulo.

Sin embargo, en algunos núcleos antiguos, la contradicción debe habilitarse específicamente.

Posible explicación:

Me parece como si las reglas que citaste incluyeran duplicados, que atienden tanto a los núcleos más antiguos como a los más nuevos.

O tal vez esto es solo un caso de programación de culto Cargo.


Hay esta pregunta sobre ServerFault del año 2012:

¿Cuál es la diferencia práctica entre:

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

y

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

¿Cuál es mejor usar?

La respuesta aceptada es:

Ambos usan las mismas funciones internas del kernel debajo (subsistema de seguimiento de conexiones).

Encabezado de xt_conntrack.c :

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

Entonces diría que el módulo de estado es más simple (y tal vez menos propenso a errores). También es más largo en el kernel. Conntrack, por otro lado, tiene más opciones y características[1].

Mi llamado es usar conntrack si necesita sus características, de lo contrario, quédese con el módulo de estado.

Pregunta similar en netfiltermaillist.

[1] Bastante útil como -m conntrack --ctstate DNAT -j MASQUERADE" routing/DNAT fixup;-)

Una de las otras respuestas conduce a este documento sobre iptables . Dice:

El conntrack match es una versión extendida del state match, lo que hace posible hacer coincidir los paquetes de una manera mucho más granular. Le permite ver la información directamente disponible en el sistema de seguimiento de conexiones, sin ningún sistema "frontend", como en el state partido.

Así que creo que esto es cierto (de otra respuesta allí):

No hay diferencia en el resultado de esas dos reglas.

Tenga en cuenta que también hay un comentario interesante debajo de la pregunta:

state está en desuso a favor de conntrack , y puede o no estar compilado dependiendo de cómo se haya construido su kernel.


Linux
  1. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  2. ¿Cuál es la diferencia entre Git Switch y Checkout?

  3. ¿Cuál es la diferencia entre insmod y modprobe?

  4. ¿Cuál es la diferencia entre adduser y useradd?

  5. ¿Cuál es la diferencia entre $(CC) y $CC?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Cuál es la diferencia entre el comando apt y apt-get?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

¿Cuál es la diferencia entre las cadenas OUTPUT y FORWARD en iptables?