Chapter 5. Salvando y restaurando grandes conjuntos de reglas

El paquete iptables tiene dos herramientas muy útiles, especialmente cuando te enfrentas a conjuntos de reglas muy grandes. Estas herramientas son iptables-save e iptables-restore, y se usan respectivamente para salvar y restaurar conjuntos de reglas en un formato de fichero específico, que parece bastante diferente del código del intérprete de comandos (shell) estándar que puedes ver en el resto del tutorial.

5.1. Considerando la velocidad

Una de las razones más convincentes para utilizar los comandos iptables-save e iptables-restore es que aceleran considerablemente la carga y la copia de los conjuntos de reglas más grandes. El principal problema al ejecutar un script en la línea de comandos que contenga reglas de iptables, es que cada vez que se invoca a iptables en el script se procede en primer lugar a extraer el conjunto de reglas completo del espacio del núcleo de Netfilter, para a continuación insertar, añadir o efectuar el cambio que sea necesario por el comando específico. Por último, devolverá el conjunto de reglas desde su propia memoria al espacio del núcleo. Utilizando un script, estas operaciones se ejecutan en cada una de las reglas que queramos insertar y consecuentemente cada vez cuesta más extraer e insertar el conjunto de reglas, pues cada vez hay más reglas en el conjunto.

Para resolver este problema se han creado los comandos iptables-save e iptables-restore. El primero (iptables-save) se usa para guardar el conjunto de reglas en un fichero de texto con un formato especial, mientras que iptables-restore carga ese fichero de texto de nuevo en el núcleo. Lo mejor de todo ésto es que cargan y guardan el conjunto de reglas mediante una sóla petición: iptables-save captará el conjunto de reglas completo del núcleo y lo guardará en un fichero en un sólo paso; iptables-restore cargará en el núcleo un conjunto de reglas específico en un paso por cada tabla. O sea, en vez de copiar el conjunto de reglas desde el núcleo, que en un ejemplo grande podría significar repetir el proceso 30.000 veces (si hubieran 30.000 reglas) y después volverlo a cargar en el núcleo otras tantas veces, podremos copiar desde el núcleo de una vez y volver a cargar en el núcleo en 3 pasos (suponiendo que hayan sólo 3 tablas).

Como puedes comprender, estas herramientas son exactamente lo que necesitas si estás trabajando con una gran cantidad de reglas y debes insertarlas en el conjunto de reglas. Sin embargo tienen sus inconvenientes, como discutiremos a continuación.