Sto configurando un router Linux con iptables
. Voglio scrivere test di accettazione per la configurazione che affermano cose come:
- il traffico di un ragazzo su Internet non viene inoltrato, e
- Il TCP alla porta 80 sul server Web nella DMZ dagli host sulla LAN aziendale viene inoltrato.
Un'antica FAQ fa riferimento a iptables -C
un'opzione che consente di chiedere qualcosa del tipo, "dato un pacchetto da X, a Y, sulla porta Z, sarebbe accettato o eliminato?" Sebbene le FAQ suggeriscano che funzioni in questo modo, per iptables
(ma forse non ipchains
come usa negli esempi) l' -C
opzione sembra non simulare un pacchetto di test che attraversa tutte le regole, ma piuttosto controlla l'esistenza per una regola esattamente corrispondente. Questo ha poco valore come test. Voglio affermare che le regole hanno l'effetto desiderato, non solo che esistono.
Ho pensato di creare ancora più VM di prova e una rete virtuale, quindi di sondare con strumenti come nmap
per gli effetti. Tuttavia, sto evitando questa soluzione a causa della complessità della creazione di tutte quelle macchine virtuali aggiuntive, che è davvero un modo piuttosto pesante per generare traffico di test. Sarebbe anche bello avere una metodologia di test automatizzata che può funzionare anche su un vero server in produzione.
In quale altro modo potrei risolvere questo problema? Esiste un meccanismo che potrei usare per generare o simulare il traffico arbitrario, quindi sapere se è stato (o sarebbe) eliminato o accettato da iptables
?