Quando o iptables atinge o final de uma cadeia definida pelo usuário, o fluxo retorna para a próxima regra na cadeia de chamada. O RETURN é, portanto, implícito; não precisa ser explicitamente dado.
Eu não consigo descobrir quais são as conseqüências de uma regra RETURN ausente no final das cadeias de iptables definidas pelo usuário. Obviamente, "iptables [missing] return [jump]" são palavras-chave realmente ruins para procurar.
A manpage e qualquer blog ou como eu poderia desenterrar apenas me diga o que o -j RETURN
faz (o que é bastante óbvio), mas não o que acontece se estiver faltando. Além disso, não consigo configurar regras experimentais sãs para experimentá-lo ...
iptables -N userchainA
iptables -A INPUT -j userchainA
iptables -N userchainB
iptables -A INPUT -j userchainB
iptables -A INPUT -j ACCEPT
iptables -A userchainA ... # anything here, that DOES NOT MATCH
#### no explicit return from userchainA!
iptables -A userchainB ... # anything here, that DOES NOT MATCH
iptables -A userchainB -j RETURN
Dadas estas regras, nada funciona bem. Os pacotes percorrem todas as cadeias e finalmente atingem o ACCEPT from INPUT
, como se o (em falta) -j RETURN
de userchainA
fosse feito implicitamente. É este o caso?
Por que isso está funcionando? Eu teria esperado algum tipo de erro ou pelo menos uma mensagem de log sobre a queda de uma cadeia.
Quando o iptables atinge o final de uma cadeia definida pelo usuário, o fluxo retorna para a próxima regra na cadeia de chamada. O RETURN é, portanto, implícito; não precisa ser explicitamente dado.
Tags iptables