IPTABLES(8) iptables 1.8.10 IPTABLES(8) NOMBRE iptables/ip6tables -- Herramienta de administracion para el filtrado de paquetes Ipv4 e IPv6 y NAT SINOPSIS iptables [-t tabla] {-A|-C|-D|-V} cadena definicion-regla ip6tables [-t tabla] {-A|-C|-D|-V} cadena definicion-regla iptables [-t tabla] -I cadena [num_regla] definicion-regla iptables [-t tabla] -R cadena numregla definicion-regla iptables [-t tabla] -D cadena numregla iptables [-t tabla] -S [cadena [numregla]] iptables [-t tabla] {-F|-L|-Z} [cadena [numregla]] [opciones...] iptables [-t tabla] -N cadena iptables [-t tabla] -X [cadena] iptables [-t tabla] -P cadena objetivo iptables [-t tabla] -E antiguo-nombre-cadena nuevo-nombre-cadena definicion-regla = [aciertos...] [objetivo] acierto = -m nombre-acierto [opciones-por-acierto] objetivo = -j nombre-objetivo [opciones-por-objetivo] DESCRIPCION iptables y ip6tables se usan para definir, mantener e inspeccionar las tablas para el filtrado de paquetes Ipv4 e Ipv6 del nucleo de Linux. Es posible definir varias tablas y cada una de ellas contiene varias cadenas predefinidas y tambien puede incluir cadenas definidas por el usuario. Una cadena consiste en una lista de reglas que pueden concordar con un conjunto de paquetes en lo que se denomina un 'objetivo' que puede llevar hasta una cadena definida por el usuario dentro de la misma tabla. OBJETIVOS Una regla del cortafuegos define un criterio para un paquete y un objetivo. Si el paquete no concuerda con ese criterio, se analiza la regla siguiente de la cadena. Si concuerda, la siguiente regla a aplicar vendra dada por el 'objetivo', este podra ser el nombre de una cadena que haya definido el usuario, uno de los objetivos descrito en iptables-extensions(8) o uno de los valores especiales ACCEPT, DROP o RETURN. ACCEPT indica que se permita el paso al paquete. DROP descarta el paquete mientras que RETURN indica que se debe dejar esta cadena y reanudar en la siguiente regla en la cadena anterior. Si se alcanza el final de una cadena predefinida o existe una concordancia con una cadena predefinida con el objetivo RETURN, el destino del paquete vendra dado por el objetivo definido en la norma de la cadena. TABLAS Actualmente existen cinco tablas independientes. Segun la configuracion del nucleo y de sus modulos, tendremos unas u otras tablas presentes. -t, --table tabla Esta opcion define la tabla de concordancia de paquetes con que la orden debe operar. Si el nucleo esta configurado para cargar modulos dinamicamente, se intentara cargar el necesario para esta tabla si no lo esta ya. Las tablas son las siguientes: filter: Esta es la tabla por defecto (si no se ha definido la opcion -t). Contiene tres cadenas predefinidas: INPUT para paquetes con destino a conectores locales), FORWARD para paquetes con destino a otros equipos, y OUTPUT para paquetes creados en el propio equipo. nat: Se consulta esta tabla cada vez que se topa con un paquete que trata de iniciar una conexion. Consta de cuatro elementos predefinidos: PREROUTING para modificar paquetes tan pronto como llegan, INPUT para los paquetes con destino a un conector local, OUTPUT para los paquetes generados desde el propio equipo antes de ser enrutados y POSTROUTING para alterar paquetes a punto de salir. La implementacion de IPV6 NAT esta disponible desde la version 3.7 del nucleo. mangle: Esta tabla se emplea para alteraciones especiales de paquetes. Hasta la version 2.4.17 del nucleo, disponia de dos cadenas predefinidas: PREROUTING para modificar paquetes entrantes antes de ser enrutados y OUPUT para modificar paquetes creados en el propio sistema tambien antes de ser enrutados. Desde la version 2.4.18, estan disponibles otras trescadenas predefinidas: INPUT para los paquetes que llegan al propio equipo, FORWARD para modificar paquetes enrutados a traves del equipo y POSTROUTING para modificar paquetes que estan a punto de salir. raw: Esta tabla se usa principalmente para la configuracion de excepciones al seguimiento de conexiones con el objetivo NOTRACK. Se anota en el gancho netfilter con una mayor prioridad haciendo que se interprete antes que ip_conntrack y qe cualquier otra tabla. Proporciona las siguientes cadenas predefinidas: PREROUTING para paquetes entrantes desde cualquier interfaz de red, OUTPUT para paquetes creados por procesos locales. security: Esta tabla se usa cuando se imponen reglas de control de acceso (MAC)para el trafico de red tales como los establecidos por los objeticos SECMARK y CONNSECMARK. El control de acceso se implementa mediante modulos de seguridad de Linux como SELinux. La tabla de seguridad se interpreta despues de la de filtrado (filter) permitiendo que cualquier regla de control discrecional de acceso (DAC) que contenga la tabla de filtrado pueda aplicarse antes de las reglas MAC. Esta tabla contiene las siguientes cadenas predefinidas: INPUT para los paquetes creados en el propio equipo, OUTPUT para modificar paquetes creados en el propio sistema antes de ser enrutados y FORWARD para modificar paquetes enrutados a traves de este equipo. OPCIONES Las opciones reconocidas por iptables y ip6tables se dividen en varios grupos. ORDENES Estas opciones definen las acciones que se desea realizar. Solo una de ellas puede definirse en la linea de ordenes salvo que se especifique otra cosa. Para usar las versiones largas de de las ordenes y opciones, solo es necesario asegurarse de usar suficientes letras para que iptables puede distinguirlas del resto. -A, --append cadena especificacion-de-regla Anade una o mas reglas al final de la cadena seleccionada. Cuando el nombre del origen o del destino se pueda traducir a mas de una direccion, debera anadirse una regla para cada una de las combinaciones posibles. -C, --check cadena especificacion-de-regla Comprueba si existe una regla que concuerda con la especificacion en la cadena seleccionada. Esta orden emplea el mismo sistema que -D para encontrar una entrada concordante pero no modifica a configuracion actual de iptables y utiliza su estado de salida para indicar su exito o error. -D, --delete cadena especificacion-de-regla -D, --delete cadena numregla Borra una o mas reglas de la cadena seleccionada. Existen dos versiones de esta orden: la regla puede definirse como un numero en la cadena (el 1 seria la primera regla) o una regla concordante. -I, --insert chain [numregla] especificacion-de-regla Inserta una o mas reglas con el numero indicad en la cadena seleccionada. Asi, si el numero de la regla es el 1, dicha regla se insertara al inicio de la cadena. Tambien se pone al inicio si no se indica ningun numero. -R, --replace cadena numregla especificacion-de-regla Sustituye una regla en la cadena seleccionada. Si el origen o el destino pueden resolver a mas de una direccion, la ejecucion fallara. Las reglas se numeran empezando por el numero uno. -L, --list [cadena] Muestra todas las reglas en la cadena seleccionada. Si no se selecciona ninguna cadena, se mostraran todas. Aligual que con cualquier otra orden de iptables, se aplicara a la tabla especificada (por defecto la de filtrado). Asi para ver las reglas NAT debera ejecutar: iptables -t nat -n -L Suele utilizarse con la opcion -n para evitar largas busquedas de DNS. Tambien es posible definir la opcion -Z (cero), en cuyo caso las cadenas se enumeraran y se pondran a cero de una e una. El resultado exacto se ve afectado por los otros argumentos dados. Las reglas exactas se suprimen hasta que se ejecute: iptables -L -v o bien iptables-save(8). -S, --list-rules [cadena] Muestra todas las reglas de la cadena seleccionada. Si no se define ninguna cadena, se muestran todas como en iptable-save. Al igual que cualquier otra orden de iptables, se aplica en la tabla definida (por defecto 'filter'). -F, --flush [cadena] Elimina la cadena seleccionada (todas las cadenas de la tabla si no se define ninguna en concreto). Esto es lo mismo que borrar todas las reglas una por una. -Z, --zero [cadena [reglanum]] Resetea el paquete y el contador de bytes en todas las cadenas, solo en la cadena indicada, o solo en una determinada regla de una cadena. De igual modos, es posible definir la opcion -L, --list (lista) para ver los contadores justo antes de resetearse (consulta mas atras). -N, --new-chain cadena Crea una nueva cadena con el nombre dado. No puede existir ningun objetivo con ese nombre previamente. -X, --delete-chain [cadena] Elimina la cadena opcional definida por el usuario. No puede quedar ninguna referencia a ella, si las hubiese tendran que eliminarse o modificarse dichas reglas para que pueda eliminarse. La cadena tendra que estar vacia, no contener ninguna regla. Si no se indica ningun argumento, intentara eliminar todas las cadenas no nativas de la tabla. Las cadenas vacias preconfiguradas solo podran eliminarse mediante iptables-nft. -P, --policy cadena objetivo Define la norma que se aplicara para la cadena nativa (no definida por el usuario) para el objetivo definido. Dicha norma tiene que ser ACCEPT o DROP. -E, --rename-chain nombre-antiguo nombre-nuevo Renombra la cadena definida con el nombre dado. Esto solo tiene un efecto estetico no afectando a la estructura de la tabla. -h Ayuda. Proporciona una muy breve descripcion de la sintaxis de la orden. PARAMETROS Los siguientes parametros componen una definicion de regla (tal como se emplea en las ordenes add, delete, insert, replace y append). -4, --ipv4 Esta opcion no tiene ningun efecto sobre iptables ni iptables-restore. Si se inserta una regla con la opcion -4 con (y solo con) ip6tables-restore, se ignorara sin mas. Cualquier otra posibilidad emitira un error. Esta opcion permite incluir reglas IPv4 e IPv6 en un mismo archivo para que lo puedan utlizar tanto iptables-restore como ip6tables-restore. -6, --ipv6 Esta opcion no tiene ningun efecto sobre ip6tables ni ip6tables-restore. Si se inserta una regla con la opcion -6 con (y solo con) iptables-restore, se ignorara sin mas. Cualquier otra posibilidad emitira un error. Esta opcion permite incluir reglas IPv4 e IPv6 en un mismo archivo para que lo puedan utlizar tanto iptables-restore como ip6tables-restore. [!] -p, --protocol protocolo El protocolo de la regla o del paquete a comprobar. Dicho protocolo pueder ser alguno de estos: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh o el comodin "all", tambien puede ser un valor numerico en representacion de un de estos protocolos o de otro diferente. Tambien es posible indicar un nombre incluido en /etc/protocols. El caracter "!" invierte la orden dada. El numero '0' equivale a all concordando con todos lo protocolos y sera el comportamiento por defecto cuando se omita esta opcion. No se permite el uso de extensiones del encabezado IPv6 salvo esp. Tanto esp como ipv6-nonext pueden usarse a partir de la version 2.6.11 del nucleo. El hecho de que el '0' sea equivalente a todos los protocolos hace que no sea posible chequear directamente si este campo tiene el valor '0'. Para buscar la concordancia con un encabezado HBH, aunque sea el ultimo, no se puede usar -p 0 si -m hbh. [!] -s, --source direccion[/mascara][,...] Definicion del origen. Direccion puede ser un nombre de red, un nombre de equipo, una direccion IP de red (con /mascara) o una direccion IP simple. Los nombres de equipo se resolveran solo una vez, antes de enviar la regla al nucleo. No es buena idea especificar cualquier nombre para resolver con una consulta remota como DNS. La mascara puede ser una mascara de red ipv4 (para iptables) o un numero simple, especificando el numero de unos en el lado izquierdo de la mascara de red. Por lo tanto, una mascara de iptables de 24 es equivalente a 255.255.255.0. El argumento '!' antes de especificar la direccion invertira el sentido de la direccion. El indicador --src es un alias para esta opcion. Se pueden especificar varias direcciones, pero hara expandir a multiples reglas (al agregar con -A) o provocara que se eliminen multiples reglas (con -D). [!] -d, --destination direccion[/mascara][,...] Definicion del destino. Consulte la descripcion del indicador -s (fuente) para obtener una descripcion detallada de la sintaxis. El indicador --dst es un alias para esta opcion. -m, --match match Define una concordancia para usar, es decir, un modulo de extension que comprueba una propiedad especifica. El conjunto de concordancias sera la condicion bajo la cual se invoca un objetivo. Las concordancias se evaluan del primero al ultimo segun lo especificado en la linea de ordenes. la evaluacion se detendra tan pronto el resultado de una extension resulte falso. -j, --jump objetivo Esto definira el objetivo de la regla; es decir, que hacer si el paquete concuerda. El objetivo puede ser una cadena definida por el usuario (distinta de aquella en la que se encuentra esta regla), uno de los objetivos integrados especiales que deciden el destino del paquete o una extension (consulte EXTENSIONES DE CONCORDANCIA Y OBJETIVO a continuacion). Si esta opcion se omite en una regla (y no se usa -g), el hecho de concordar con la regla no tendra ningun efecto en el destino del paquete, pero los contadores de la regla se incrementaran. -g, --goto cadena Esto indica que el procesamiento debe continuar en una cadena definida por el usuario. A diferencia de la opcion --jump, RETURN no continuara procesando en esta cadena sino en la cadena que nos invoco a traves de --jump. [!] -i, --in-interface nombre Nombre de una interfaz a traves de la cual se recibio un paquete (solo para paquetes que ingresan a las cadenas INPUT, FORWARD y PREROUTING). El argumento '!' empleado antes del nombre de la interfaz, invertira el significado. Si el nombre de la interfaz termina en '+', concordara con cualquier interfaz que comience con este nombre. Si se omite esta opcion, cualquier nombre de interfaz concordara.. [!] -o, --out-interface nombre Nombre de una interfaz a traves de la cual se va a enviar un paquete (para paquetes que entran en las cadenas FORWARD, OUTPUT y POSTROUTING). El argumento '!' antes del nombre de la interfaz hara que el sentido se invierta. Si el nombre de la interfaz termina con '+', concordara con cualquier interfaz que comience con este nombre. Si se omite esta opcion, cualquier nombre de interfaz concordara. [!] -f, --fragment Esto significa que la regla solo se refiere al segundo y posteriores fragmentos IPv4 de paquetes fragmentados. Dado que no es posible conocer los puertos de origen o destino de dicho paquete (o tipo de ICMP), dichos paquetes no concordaran con ninguna regla que los especifique. Cuando el argumento '!' precede al indicador '-f', la regla solo concordaracon fragmentos principales o paquetes no fragmentados. Esta opcion es especifica de IPv4, no esta disponible en ip6tables. -c, --set-counters paquetes bytes Permite al administrador inicializar los contadores de paquetes y bytes de una regla (durante las operaciones INSERT, APPEND, REPLACE). OTRAS OPCIONES Pueden especificarse las siguientes opciones adicionales: -v, --verbose Salida detallada. Esta opcion hace que la orden de listado muestre el nombre de la interfaz, las opciones de regla (si las hay) y las mascaras TOS. Los contadores de paquetes y bytes tambien se enumeran, con el sufijo 'K', 'M' o 'G' para multiplicadores de 1000, 1.000.000 y 1.000.000.000 respectivamente (consulte el indicador -x para modificarlo). Ya sea para agregar, insertar, eliminar o eemplazar, esto mostrara informacion detallada sobre la regla o reglas. -v se puede especificar varias veces para (posiblemente) que muestre mensajes de depuracion mas y mas detallados: si se especifica dos veces, iptables-legacy volcara la informacion de la tabla y las entradas en libiptc, iptables-nft volcara las reglas en netlink (codigo VM) presentacion. Si se especifica tres veces, iptables-nft tambien volcara cualquier mensaje de enlace de red enviado al nucleo. -V, --version Muestra la version del programa y la API del nucleo utilizada. -w, --wait [segundos] Espere a que se bloquee xtables. Para evitar que se ejecuten varias instancias del programa al mismo tiempo, se intentara obtener un bloqueo exclusivo en el inicio. Por defecto, el programa se cerrara si no se puede obtener el bloqueo. Con esta opcion, el programa esperara (indefinidamente o los segundos indicados) hasta que pueda obtener dicho bloqueo exclusivo. -n, --numeric Salida numerica. Las direcciones IP y los numeros de puerto se mostraran en formato numerico. De forma predeterminada, el programa intentara mostrarlos como nombres de equipo, nombres de red o servicios; segun corresponda. -x, --exact Expande numeros. Muestra el valor exacto de los contadores de paquetes y bytes, en lugar de solo el numero redondeado en K (multiplos de 1000), M (multiplos de 1000 K) o G (multiplos de 1000 M). Esta opcion solo es relevante para la orden -L. --line-numbers Anade el numero de linea al inicio de cada regla cuando se listen las reglas, viendo asi la posicion de la regla en la cadena. --modprobe=orden Emplea orden para cargar cualquier modulo que necesite (objetivos, etc...) al anadir o insertar reglas en una cadena. ARCHIVO DE BLOQUEO iptables usa el archivo /run/xtables.lock para su bloqueo exclusivo al inicio. La variable de entorno XTABLES_LOCKFILE puede usarse para anular la configuracion predeterminada. CONCORDANCIAS Y EXTENSIONES DE OBJETIVO iptables puede utilizar modulos de destino y concordancia de paquetes extendidos. Puede ver una lista en la pagina de manual iptables-extensions(8). DIAGNOSTICOS Varios mensajes de error se muestran por la salida de error estandar. Como es usual, el codigo 0 indica un correcto funcionamiento. Los errores causados por parametros no validos o abusados causaran un codigo de salida de 2. Los errores que indican una incompatibilidad entre el nucleo y el espacio del usuario emiten un codigo de salida de 3. Los errores que indican un problema de recursos, como un bloqueo ocupado, la asignacion de memoria fallida o los mensajes de error del nucleo provocan un codigo de salida de 4. Otro tipo de errores provocaran un codigo de salida de 1. ERRORES ?Errores? ?Que sera eso? ;-) Enfin, eche un vistazo en https://bugzilla.netfilter.org/ iptables terminara su ejecucion inmediatamente con un codigo de error 111 si se intenta ejecutar como SUID root. iptables no se puede utilizar de forma segura de esta manera porque confia en las bibliotecas compartidas (concordancias, objetivos) cargadas en tiempo de ejecucion; es posible configurar la ruta de busqueda mediante variables de entorno. COMPATIBILIDAD CON IPCHAINS iptables es muy similar a ipchains. La principal diferencia es que las cadenas INPUT y OUTPUT solo son 'atravesadas' por paquetes que llegan y por los que se origina en el equipo local. Por lo tanto, cada paquete solo pasa a traves de una de las tres cadenas (excepto el trafico de loopback, donde se involucran las cadenas de ENTRADA y SALIDA); anteriormente, un paquete reenviado pasaria por los tres. La otra diferencia principal es que -i se refiere a la interfaz de entrada; -o se refiere a la interfaz de salida y ambas estan disponibles para paquetes que entran en la cadena FORWARD. Se han separado las distintas formas de NAT; iptables es un filtro de paquetes puro cuando se utiliza la tabla de 'filtro' predeterminada, con modulos de extension opcionales. Esto deberia evitar gran parte de la confusion sobre la combinacion de enmascaramiento de IP y filtrado de paquetes vista anteriormente. Entonces las siguientes opciones se manejan de manera diferente: -j MASQ -M -S -M -L Hay varios otros cambios en iptables. VEASE TAMBIEN iptables-apply(8), iptables-save(8), iptables-restore(8), iptables-extensions(8), El documento COMO (HOW-TO en ingles) de filtrado de paquetes detalla el uso de iptables para el filtrado de paquetes, el COMO de NAT detalla NAT, el COMO de extensiones de netfilter detalla extensiones que no estan en la distribucion estandar y el COMO de hacking de netfilter detalla las partes internas de netfilter. Visite https://www.netfilter.org/. AUTORES Rusty Russel es el autor original de iptable en conjuncion con Michael Neuling. Marc Boucher hizo que Rusty abandonara ipnatctl presionando para que se creara un marco de seleccion de paquetes generico en iptables, luego escribio la tabla de mangle, la concordancia de propietario, varios asuntos del marcado ademas de varias aportaciones interesantes en general. James Morris escribio el objetivo TOS, y el acierto tos. Jozsef Kadlecsik escribio el objetivo REJECT. Harald Welte escribio el objetivo ULOG y NFQUEUE, el nuevo libiptc, asi como las concordancias y objetivos TTL, DSCP, ECN. El equipo principal de Netfilter lo forman: Jozsef Kadlecsik, Pablo Neira Ayuso , Eric Leblond, Florian Westphal y Arturo Borrero Gonzalez. Los miembros emeritos de dicho equipo son los siguientes: Marc Boucher, Martin Josefsson, Yasuyuki Kozakai, James Morris, Harald Welte and Rusty Russell. Esta pagina de manual fue escrita por Herve Eychenne . VERSION Esta pagina de manual es aplicable a la version 1.8.10 de iptables/ip6tables TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . iptables 1.8.10 IPTABLES(8)