Em um roteador antigo, eu estava usando este comando:
iptables -t mangle -I PREROUTING -i br0 -s 192.168.157.0/24 -j MARK --set-mark 7
Esse roteador morreu (o led vermelho da morte), e agora sou forçado a tentar recriar uma implementação que não entendi muito bem, mesmo quando consegui que funcionasse pela primeira vez. De qualquer forma, a mensagem de erro que produz é assim:
iptables: No chain/target/match by that name.
Se eu deixar tudo fora de if after -j, então este comando será executado com sucesso (embora faça pouco para atingir meus objetivos). Isso sugere que tanto o PREROUTING quanto o mangle estão disponíveis. Lembro-me vagamente de que a marcação de pacotes pode ser seu próprio módulo do kernel, mas não sou capaz de determinar qual seria o nome dele, se fosse esse o caso.
O que preciso fazer para depurar isso? Não sei por onde começar com este. Alguma coisa não é compilada no kernel que deveria ser?
A versão do kernel parece ser 2.6.22.19.
Eu tenho outros comandos do iptables que estão falhando de maneira similar, embora eu espere que a explicação para esse comando ilumine os outros.