Você precisa descobrir qual parte da regra está causando essa mensagem de erro. É provavelmente a parte -m state
, mas não necessariamente. As várias extensões para iptables e netfilter devem ser compiladas no binário userspace do iptables e no netfilter no kernel do Linux. Você pode determinar qual parte está faltando, pedindo ao iptables as informações de ajuda na extensão que está testando. Aqui estão algumas maneiras de testar as várias extensões:
$ iptables -m state -h
$ iptables -p icmp -h
$ iptables -j DROP -h
Se você obter uma saída de ajuda que inclua informações sobre a extensão na parte inferior da saída, ela será compilada no binário userspace. Se não, então você precisa recompilar o iptables. Se isso funcionar, tente a regra mais simples possível para ver se a extensão está incluída no espaço do kernel:
$ iptables -A INPUT -m state --state NEW
$ iptables -A INPUT -p icmp
$ iptables -A INPUT -j DROP
(Cuidado com essas regras, a última que você vai querer remover porque provavelmente vai DROP mais do que você quer!) Quando você receber a mensagem de erro novamente: No chain/target/match by that name
você saberá que a extensão específica não é compilado em seu kernel. Você precisará recompilar seu kernel.
Examine os arquivos de criação em linux/net/ipv6/netfilter
, linux/net/ipv4/netfilter
e linux/net/netfilter
para opções de ativação de várias extensões para o kernel. Para o userspace, acho que os arquivos make em questão estão em iptables/extensions
, mas acho que a estrutura da pasta mudou um pouco nas versões mais recentes.