iptables y objetivo de RETORNO

16

No entiendo lo que hace el RETURNobjetivo en un comando iptables.

La duda proviene de esta guía donde dice:

Una cadena es un conjunto de reglas con las que se comprueba un paquete secuencialmente. Cuando el paquete coincide con una de las reglas, ejecuta la acción asociada y no se compara con las reglas restantes de la cadena.

Entonces, si un paquete coincide con una regla y deja de verificar otras reglas, ¿por qué necesito una RETURN?

Por ejemplo, encontré esto en internet:

iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j MARK --set-mark 30;
iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j RETURN;

¿Por qué lo necesito RETURN? Si un paquete coincide con la primera regla, automáticamente deja de ejecutar otras reglas.

zer0uno
fuente

Respuestas:

33

Pasan los paquetes por una cadena hasta que lleguen ACCEPT, DROP, REJECT, o RETURN. No se detienen en una partida a menos que esa partida contenga una acción de finalización. En su ejemplo, se marcará un paquete que coincida con la primera regla, pero luego será examinado (y posiblemente procesado) por la segunda regla.

Solo para referencia, aquí están las secciones relevantes de la página del manual :

Una regla de firewall especifica los criterios para un paquete y un objetivo. Si el paquete no coincide, se examina la siguiente regla en la cadena; si coincide, la siguiente regla se especifica por el valor del objetivo, que puede ser el nombre de una cadena definida por el usuario o uno de los valores especiales ACCEPT, DROP[, REJECT] QUEUEo RETURN.

  • ACCEPT significa dejar pasar el paquete.
  • DROP significa dejar caer el paquete al suelo, es decir, descartarlo y no enviar ninguna respuesta
  • [ REJECTse utiliza para devolver un paquete de error en respuesta al paquete coincidente: de lo contrario, es equivalente a, DROPpor lo tanto, es un OBJETIVO de finalización, que finaliza el recorrido de la regla.]
  • QUEUE significa pasar el paquete al espacio de usuario.
  • RETURNsignifica dejar de atravesar esta cadena y reanudar en la siguiente regla en la cadena anterior (llamada). Si se alcanza el final de una cadena integrada o si RETURNse coincide con una regla en una cadena integrada con objetivo , el objetivo especificado por la política de la cadena determina el destino del paquete.

En respuesta a su preocupación específica, diría que su guía es engañosa. A menos que la "acción asociada" sea una de las cinco acciones terminales, los paquetes continuarán fluyendo a través de la cadena hasta que lleguen implícitos RETURNal final.

roaima
fuente
Votaría esta respuesta más de una vez si pudiera.
JakeRobb
Vale la pena señalar que la acción predeterminada para las cadenas definidas por el usuario es RETURN.
rígido
@stark, ¿no es eso lo que dice la última oración?
roaima
1
Ah, ahora entiendo DROP mejor. Eso explica por qué no tengo espacio para las piernas debajo de este escritorio también.
Jonathan Neufeld