No pretendo ser un experto en iptables
reglas, pero el primer comando está haciendo uso de la extensión de seguimiento de conexión ( conntrack
) mientras que el segundo está haciendo uso de la state
extensión.
Punto de datos # 1
De acuerdo con este documento, la conntrack
extensión fue reemplazada state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
Punto de datos # 2
Aun así, encontré este SF Q&A titulado: ¿ Preguntas sobre el firewall sobre el estado y la política? donde el OP afirmó haber hecho esta pregunta en IRC en # iptables @ freenode. Después de discutirlo allí, llegó a la conclusión de que:
Técnicamente, la coincidencia conntrack reemplaza, y por lo tanto es obsoleta, la coincidencia estatal. Pero prácticamente la coincidencia estatal no está obsoleta de ninguna manera.
Punto de datos # 3
Finalmente encontré este SF Q&A titulado: Iptables, ¿cuál es la diferencia entre -m state y -m conntrack? . La respuesta de esta pregunta es probablemente la mejor evidencia y consejos sobre cómo ver el uso de conntrack
y state
.
extracto
Ambos usan el mismo núcleo interno debajo (subsistema de seguimiento de conexión).
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 núcleo. Conntrack en el 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.
[1] Bastante útil como "-m conntrack --ctstate DNAT -j MASQUERADE"
enrutamiento / arreglo DNAT ;-)
Punto de datos # 4
Encontré este hilo en las discusiones netfilter@vger.kernel.org netfilte / iptables, titulado: state match is obsolescete 1.4.17 , que dice que state
es solo un alias, conntrack
por lo que realmente no importa cuál uses, en ambas circunstancias que estás usando conntrack
.
extracto
En realidad, tengo que estar de acuerdo. ¿Por qué no mantenemos el "estado" como un alias y aceptamos la sintaxis anterior en "conntrack"?
El estado actualmente tiene un alias y se traduce a conntrack en iptables si el núcleo lo tiene. No hay guiones rotos.
Si el alias se realiza en el espacio de usuario, la parte del núcleo se puede eliminar, algún día tal vez.
El alias ya está hecho en el espacio de usuario. Uno escribe "estado" y se convierte en "conntrack" y luego se envía al kernel. (Por lo tanto, hasta donde veo si se agregaron los alias del módulo ipt_state, etc. al módulo conntrack, incluso el módulo del kernel de estado podría eliminarse).
Referencias