Vous devez déterminer quelle partie de la règle est à l'origine de ce message d'erreur. C'est probablement le -m state
partie, mais pas nécessairement. Les différentes extensions d'iptables et de netfilter doivent être compilées dans le binaire de l'espace utilisateur iptables et dans netfilter dans le noyau Linux. Vous pouvez déterminer quelle partie vous manque en demandant à iptables les informations d'aide sur l'extension que vous testez. Voici quelques façons de tester les différentes extensions :
$ iptables -m state -h
$ iptables -p icmp -h
$ iptables -j DROP -h
Si vous obtenez une sortie d'aide contenant des informations sur l'extension tout en bas de la sortie, elle est compilée dans le binaire de l'espace utilisateur. Sinon, vous devez recompiler iptables. Si cela fonctionne, essayez la règle la plus simple possible pour voir si l'extension est incluse dans l'espace du noyau :
$ iptables -A INPUT -m state --state NEW
$ iptables -A INPUT -p icmp
$ iptables -A INPUT -j DROP
(Attention avec ces règles, la dernière que vous voudrez supprimer car elle DROP sera probablement plus que vous ne le souhaitez !) Lorsque vous obtenez à nouveau le message d'erreur :No chain/target/match by that name
vous saurez que cette extension particulière n'est pas compilée dans votre noyau. Vous devrez recompiler votre noyau.
Parcourez les fichiers make dans linux/net/ipv6/netfilter
, linux/net/ipv4/netfilter
, et linux/net/netfilter
pour les options d'activation de diverses extensions pour le noyau. Pour l'espace utilisateur, je pense que les fichiers make en question sont en iptables/extensions
mais je pense que la structure des dossiers a un peu changé dans les versions plus récentes.