Un vistazo a iptables

Las políticas que hemos definido en el post anterior se tienen que llevar a cabo mediante iptables. No voy a entrar en detalle sobre su funcionamiento; para los interesados recomiendo el manual de iptables y el manual de filtrado de paquetes de Joan Fuster (Monzó). Dado que tenía montado un router con varios servicios en casa, ya conocía iptables y había trabajado con ella. Sin embargo, al intentar ampliar el número de redes, me he dado cuenta de que mis conocimientos eran demasiado superficiales, y que estaba dedicándome más al ensayo y al error que a una aproximación razonada del problema (por decirlo claro: que había estado varias tardes probando sin llegar a ningún sitio, y andaba bastante perdido).  Esto me llevó a plantearme el funcionamiento de iptables, ya que no sabía a ciencia cierta por dónde pasaban los paquetes, y dónde tenía que “meter mano” para conseguir lo que andaba buscando. Como se ha dicho en mil sitios, iptables tiene tres tablas: FILTER, para el filtrado de paquetes; MANGLE, para realizar marcaje en los paquetes de comunicaciones, y NAT, para realizar… pues eso, NAT.Cada una de estas tablas tiene unas cadenas predefinidas. Una cadena es algo que se ejecuta cuando el paquete llega a un sitio determinado. Se llama cadena porque puede contener varias reglas, que se ejecutarán una después de otra, y que son las que podemos definir. ¿Cuándo se ejecutan cada una de esas cadenas? Eso es lo que no tenía claro, de manera que lo primero fue buscar un esquema de funcionamiento que relacionase las tres tablas y cada una de sus cadenas. Lo encontré en el manual de iptables, y lo reproduzco aquí en un formato un poco más aseado que de donde lo copié: En verde he marcado la tabla FILTER, en amarillo la tabla NAT y en azul la tabla MANGLE. El texto en las elipses es el nombre de la cadena que se ejecuta. De este modo, podemos ver que se ejecuta antes la cadena FORWARD de la tabla mangle que la cadena FORWARD de la tabla filter. Este orden es importante a la hora de diseñar las reglas que utilizaremos. En iptables se pueden crear cadenas definidas por el usuario, que se lanzarían desde las cadenas predefinidas, pero es algo que no voy a utilizar y no he entrado a mirarlo en detalle. Ahora, con esta información, ya tengo más claro cómo hay que transformar las políticas de acceso en reglas de iptables. Por regla general, para las políticas de acceso utilizaremos la tabla FILTER. Para dar acceso a internet desde una sola IP utilizaremos la tabla NAT, y la tabla MANGLE va a ser útil para las políticas de QoS, con las que espero meterme algún día. En fin, sigamos.
Comments
  1. Juan

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *