iptables e destino RETURN

15

Não entendo o que o RETURNdestino faz em um comando iptables.

A dúvida vem deste guia, onde diz:

Uma cadeia é um conjunto de regras contra as quais um pacote é verificado sequencialmente. Quando o pacote corresponde a uma das regras, ele executa a ação associada e não é verificado com relação às regras restantes na cadeia.

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

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

zer0uno
fonte

Respostas:

32

Pacotes atravessar uma cadeia até que atingiu ACCEPT, DROP, REJECT, ou RETURN. Eles não param em uma partida, a menos que ela contenha uma ação de encerramento. 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 de 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 é 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] QUEUEou RETURN.

  • ACCEPT significa deixar o pacote passar.
  • DROP significa soltar 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, é equivalente a, DROPportanto, é um TARGET de término, terminando o percurso da regra.]
  • QUEUE significa passar o pacote para o espaço do usuário.
  • RETURNsignifica parar de percorrer essa cadeia e continuar na próxima regra na cadeia anterior (de chamada). Se o final de uma cadeia interna for atingido ou se uma regra em uma cadeia interna com destino RETURNfor 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 "ação associada" seja uma das cinco ações terminais, os pacotes continuarão a fluir pela cadeia até atingirem um implícito RETURNno final.

roaima
fonte
Eu recomendaria esta resposta mais de uma vez, se pudesse.
JakeRobb #
Vale ressaltar que a ação padrão para cadeias definidas pelo usuário é RETURN.
Stark
@stark não é isso que diz a última frase?
roaima
1
Ah, agora eu entendo o DROP melhor. Isso explica por que não tenho espaço para as pernas também embaixo dessa mesa.
Jonathan Neufeld