Debe averiguar qué parte de la regla está causando ese mensaje de error. Probablemente sea el -m state
parte, pero no necesariamente. Las diversas extensiones de iptables y netfilter deben compilarse en el binario del espacio de usuario de iptables y en netfilter en el kernel de Linux. Puede determinar qué parte le falta solicitando a iptables la información de ayuda sobre la extensión que está probando. Aquí hay algunas formas de probar las diversas extensiones:
$ iptables -m state -h
$ iptables -p icmp -h
$ iptables -j DROP -h
Si obtiene un resultado de ayuda que incluye información sobre la extensión en la parte inferior del resultado, entonces se compila en el binario del espacio de usuario. Si no, entonces necesita recompilar iptables. Si eso funciona, pruebe la regla más simple posible para ver si la extensión está incluida en el espacio del kernel:
$ iptables -A INPUT -m state --state NEW
$ iptables -A INPUT -p icmp
$ iptables -A INPUT -j DROP
(¡Cuidado con esas reglas, querrás eliminar la última porque probablemente DROP más de lo que quieras!) Cuando vuelvas a recibir el mensaje de error:No chain/target/match by that name
sabrá que esa extensión en particular no está compilada en su núcleo. Deberá volver a compilar su kernel.
Mire a través de los archivos make en linux/net/ipv6/netfilter
, linux/net/ipv4/netfilter
y linux/net/netfilter
para obtener opciones sobre cómo habilitar varias extensiones para el kernel. Para el espacio de usuario, creo que los archivos make en cuestión están en iptables/extensions
pero creo que la estructura de carpetas ha cambiado un poco en las versiones más recientes.