error de iptables: opción desconocida --dport

19

El comando iptables ya no reconoce una de las opciones más utilizadas en la definición de reglas: --dport.

Me sale este error:

[root@dragonweyr /home/calyodelphi]# iptables -A INPUT --dport 7777 -j ACCEPT_TCP_UDP
iptables v1.4.7: unknown option `--dport'
Try `iptables -h' or 'iptables --help' for more information.

El comando Agregar regla anterior es solo un ejemplo para habilitar las conexiones Terraria.

Esto es lo que tengo actualmente como una configuración básica de iptables ( listiptablesalias iptables -L -v --line-numbers), y es obvio que --dportha funcionado en el pasado:

root@dragonweyr /home/calyodelphi]# listiptables 
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       39  4368 ACCEPT     all  --  lo     any     anywhere             anywhere            
2      114 10257 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
3        1    64 ACCEPT     tcp  --  eth1   any     anywhere             anywhere            tcp dpt:EtherNet/IP-1 
4       72 11610 ACCEPT     all  --  eth1   any     anywhere             anywhere            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 91 packets, 10045 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain ACCEPT_TCP_UDP (0 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            

También estoy tratando de definir una cadena personalizada (inspirada en esta pregunta ) para aceptar conexiones tcp y udp para que no tenga que definir dos reglas para todo para lo que quiero habilitar tcp y udp (como un Minecraft o Servidor Terraria u otro servicio por completo). Pero incluso esto no funciona:

[root@dragonweyr /home/calyodelphi]# iptables -P ACCEPT_TCP_UDP DROP
iptables: Bad built-in chain name.

Esto se está volviendo muy frustrante, en términos corteses (la cantidad de insultos involucrados en esto haría que un marinero me diga que cuide mi boca). Mi Google-fu es terrible, así que aún no he encontrado una solución que funcione para nada de esto. Estoy ejecutando CentOS 6.5 en el enrutador. Cualquier ayuda y sugerencias que ustedes puedan ofrecer serían increíbles.

EDITAR:

Pregunta adicional: también estoy planeando configurar el reenvío de puertos también. ¿Sigue siendo necesario establecer reglas para aceptar conexiones entrantes a través de puertos específicos?

Calyo Delphi
fuente

Respuestas:

27

Primero da una -popción como -p tcpo -p udp.

Ejemplos:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP

iptables -A INPUT -p udp --dport 53 --sport 1024: 65535 -j ACCEPT

También podría intentarlo, -p allpero nunca lo he hecho y no encuentro demasiado apoyo para ello en los ejemplos.

dmourati
fuente
1
Acabo de probar esto -p ally obtuve exactamente el mismo error. unknown option --dport. Funcionó con, -p tcppero eso no me va a ayudar realmente en este caso, ya que solo conduce al mismo problema: definir reglas individuales tcp / udp para todo.
Calyo Delphi
Desde mi experiencia, el uso allnunca funcionó con la especificación de un puerto. Sin embargo, en lugar de tener múltiples reglas para diferentes protocolos, puede pensar en las reglas en una dirección diferente. Cree reglas basadas en el protocolo y luego use la multiportsopción para agrupar algunas reglas juntas.
canadmos
Entonces, si quiero habilitar las conexiones Terraria y Minecraft, ¿puedo usar multipuertos para abrir 7777 y 25565, y crear una regla TCP y UDP para cada par de puertos?
Calyo Delphi
3
La opción para -p tiene que ser un protocolo único que tenga el concepto de puertos ( -p ICMP --dport whatevertampoco funcionaría, por razones obvias).
Falcon Momot
9

Se requiere el protocolo (-p) si usa --dport. Ejemplo:

-p tcp
Diego Woitasen
fuente
Además, debe especificar un protocolo que tenga el concepto de puertos, como señaló @FalconMomot en un comentario anterior.
un CVn
Tienes razón, para ese detalle :)
Diego Woitasen
3

@dmourati y @diegows ya respondieron su primera pregunta, así que abordaré su segunda pregunta. Y pregunta extra. Y también arrojaré una propina extra;)

iptables -P solo acepta cadenas INTEGRADAS. En la filtermesa, que sería INPUT, OUTPUTy FORWARDcadenas.

El reenvío de puertos no es manejado por la INPUTcadena, por lo que no tiene que abrir el puerto en la INPUTcadena. Sin embargo, la FORWARDcadena lo maneja . Ten cuidado con eso.

Consejo adicional: al aprender y / o solucionar problemas iptables, la salida de iptables-savecabeza y hombros es mejor que la salida de iptables -L -v --line-numbers. Pruébalo, te sorprenderá gratamente :)

pepoluan
fuente
+1 para una buena respuesta, pero estoy un poco sorprendido por tu último comentario. Yo odio el diagnóstico de iptableslos problemas de la -savesalida; ¿Por qué lo encuentras mejor que iptables -L -n -v [--line-numbers]?
MadHatter apoya a Monica el
@MadHatter ejemplo simple: puede ver fácilmente que las reglas con las --dportopciones realmente tienen -p tcpen frente. También puede ver cómo / cuándo el procesamiento de reglas salta de una cadena integrada (por ejemplo, INPUT) a una cadena personalizada (por ejemplo, ACCEPT_TCP_UDP). Estas dos informaciones importantes no son visibles en la salida de iptables -L -n.
pepoluan
3
Otro beneficio: puedo hacer iptables-save > somefile, editar somefileusando vim, luego hacer iptables-apply -t 600 somefilepara probarlo. Si accidentalmente me bloqueo, después de 600 segundos las reglas se revierten.
pepoluan
La propina de bonificación es muy apreciada y ya se está utilizando. Había estado utilizándome iptables-savepara aprender de un volcado de configuración sin procesar antes de hacer esta pregunta. Sin embargo, no esperaba que la FORWARDcadena estuviera donde debía prestar atención al reenvío de puertos. Tendré que leer sobre eso.
Calyo Delphi
@CalyoDelphi si realiza una búsqueda del "diagrama de flujo de paquetes de netfilter", verá dónde se aplica cada tabla y cadena ;-)
pepoluan