Sie müssen herausfinden, welcher Teil der Regel diese Fehlermeldung verursacht. Es ist wahrscheinlich der -m state
Teil, aber nicht unbedingt. Die verschiedenen Erweiterungen zu iptables und netfilter müssen in die iptables-Userspace-Binärdatei und in netfilter im Linux-Kernel kompiliert werden. Sie können feststellen, welcher Teil Ihnen fehlt, indem Sie iptables nach den Hilfeinformationen zu der Erweiterung fragen, die Sie testen. Hier sind einige Möglichkeiten, die verschiedenen Erweiterungen zu testen:
$ iptables -m state -h
$ iptables -p icmp -h
$ iptables -j DROP -h
Wenn Sie eine Hilfeausgabe erhalten, die Informationen über die Erweiterung ganz unten in der Ausgabe enthält, wird sie in die Userspace-Binärdatei kompiliert. Wenn nicht, müssen Sie iptables neu kompilieren. Wenn das funktioniert, versuchen Sie die einfachste mögliche Regel, um zu sehen, ob die Erweiterung im Kernel-Space enthalten ist:
$ iptables -A INPUT -m state --state NEW
$ iptables -A INPUT -p icmp
$ iptables -A INPUT -j DROP
(Vorsichtig mit diesen Regeln, die letzte, die Sie entfernen möchten, da sie wahrscheinlich mehr DROP als Sie möchten!) Wenn Sie die Fehlermeldung erneut erhalten:No chain/target/match by that name
Sie werden wissen, dass eine bestimmte Erweiterung nicht in Ihren Kernel kompiliert ist. Sie müssen Ihren Kernel neu kompilieren.
Sehen Sie sich die Make-Dateien in linux/net/ipv6/netfilter
an , linux/net/ipv4/netfilter
, und linux/net/netfilter
für Optionen zum Aktivieren verschiedener Erweiterungen für den Kernel. Für den Userspace befinden sich die fraglichen Make-Dateien meines Erachtens in iptables/extensions
aber ich denke, die Ordnerstruktur hat sich in neueren Versionen ein wenig geändert.