Estoy configurando un enrutador Linux con iptables
. Quiero escribir pruebas de aceptación para la configuración que afirman cosas como:
- el tráfico de algún tipo en Internet no se reenvía
- Se reenvía el TCP al puerto 80 en el servidor web en la DMZ desde los hosts en la LAN corporativa.
Un antiguo FAQ alude a una iptables -C
opción que le permite a uno preguntar algo como, "dado un paquete de X, a Y, en el puerto Z, ¿sería aceptado o descartado?" Aunque las preguntas frecuentes sugieren que funciona así, para iptables
(pero tal vez no ipchains
como se usa en los ejemplos) la -C
opción parece no simular un paquete de prueba que ejecuta todas las reglas, sino que verifica la existencia de una regla que coincida exactamente. Esto tiene poco valor como prueba. Quiero afirmar que las reglas tienen el efecto deseado, no solo que existen.
He considerado crear aún más máquinas virtuales de prueba y una red virtual, y luego probar con herramientas como nmap
efectos. Sin embargo, estoy evitando esta solución debido a la complejidad de crear todas esas máquinas virtuales adicionales, que es realmente una forma bastante pesada de generar algo de tráfico de prueba. También sería bueno tener una metodología de prueba automatizada que también pueda funcionar en un servidor real en producción.
¿De qué otra forma podría resolver este problema? ¿Hay algún mecanismo que pueda usar para generar o simular tráfico arbitrario, y luego saber si fue (o sería) descartado o aceptado iptables
?