Solución 1:
Primero da un -p
opción como -p tcp
o -p udp
.
Ejemplos:
iptables -A INPUT -p tcp --dport 22 -m estado --estado NUEVO -j DROP
iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -j ACEPTAR
También puedes probar -p all
pero nunca he hecho eso y no encuentro mucho apoyo en los ejemplos.
Solución 2:
Se requiere el protocolo (-p) si usa --dport. Ejemplo:
-p tcp
Solución 3:
@dmourati y @diegows ya respondieron su primera pregunta, así que abordaré su segunda pregunta. Y pregunta extra. Y también daré un consejo extra;)
iptables -P
solo acepta cadenas INTEGRADAS. En el filter
tabla, sería INPUT
, OUTPUT
y FORWARD
cadenas.
El reenvío de puertos no es manejado por el INPUT
cadena, por lo que no tiene que abrir el puerto en el INPUT
cadena. Lo sí ser manejado por el FORWARD
cadena, sin embargo. Ten cuidado con eso.
Consejo adicional: Al aprender y/o solucionar problemas iptables
, la salida de iptables-save
es cabeza y hombros mejor que la salida de iptables -L -v --line-numbers
. Pruébalo, te sorprenderás gratamente :)
Solución 4:
Otra posible solución es que te olvides de ejecutar como root. Me encontré con esto cuando usaba el tutorial de Debian
$ iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
iptables v1.8.2 (nf_tables): unknown option "--dport"
$ sudo iptables -t nat -I PREROUTING --src 0/0 --dst 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080
# OK
Solución 5:
Si iptables
informa que usa nftables
, uno necesita usar iptables-legacy
en su lugar.
Por ejemplo:
Usa iptables-legacy -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
En lugar de iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
Es una pregunta un poco antigua, pero esa es la primera en los resultados de búsqueda.