iptables e destino RETURN

8

Eu não entendo o que o RETURN target faz em um comando iptables.

A dúvida vem deste guia , onde diz:

A chain is a set of rules that a packet is checked against sequentially. When the packet matches one of the rules, it executes the associated action and is not checked against the remaining rules in the chain.

Portanto, se um pacote corresponder a uma regra e deixar de verificar outras regras, por que preciso de um RETURN ?

Por exemplo, encontrei isso na 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 que preciso de RETURN ? Se um pacote corresponder à primeira regra, ele automaticamente interromperá a execução de outras regras.

    
por zer0uno 21.03.2015 / 13:05

1 resposta

16

Os pacotes percorrem uma cadeia até atingir ACCEPT , DROP , REJECT ou RETURN . Eles não param em uma partida, a menos que essa correspondência contenha uma ação de finalização. No seu exemplo, um pacote correspondente à primeira regra será marcado, mas será examinado (e possivelmente processado) pela segunda regra.

Apenas para referência, aqui estão as seções relevantes da página do manual :

Uma regra de firewall especifica critérios para um pacote e um destino. Se o pacote não corresponder, a próxima regra na cadeia será a examinada; se corresponder, a próxima regra será especificada pelo valor do destino, que pode ser o nome de uma cadeia definida pelo usuário ou um dos valores especiais ACCEPT , DROP [ REJECT ], QUEUE ou RETURN .

  • ACCEPT significa deixar o pacote passar.
  • DROP significa descartar o pacote no chão, ou seja, descartá-lo e não enviar nenhuma resposta
  • [ REJECT é usado para enviar de volta um pacote de erro em resposta ao pacote correspondente: caso contrário, ele é equivalente a DROP , de modo que é um TARGET de terminação, traversal de regras finais.]
  • QUEUE significa passar o pacote para o userspace.
  • RETURN significa parar de atravessar essa cadeia e continuar na próxima regra na cadeia anterior (chamada). Se o fim de uma cadeia interna for atingido ou uma regra em uma cadeia interna com o destino RETURN for correspondida, o destino especificado pela política da cadeia determinará o destino do pacote.

Em resposta à sua preocupação específica, eu diria que seu guia é enganoso. A menos que "ação associada" seja uma das cinco ações do terminal, os pacotes continuarão a fluir pela cadeia até atingirem um RETURN implícito no final.

    
por 21.03.2015 / 14:34

Tags