Я настраиваю маршрутизатор Linux с iptables
. Я хочу написать приемочные тесты для конфигурации, которые утверждают такие вещи, как:
- трафик от какого-то парня в интернете не перенаправляется, и
- TCP на порт 80 на веб-сервере в DMZ от хостов в корпоративной локальной сети пересылается.
Древний FAQ содержит ссылку на iptables -C
опцию, которая позволяет задавать что-то вроде: «при наличии пакета от X до Y на порту Z он будет принят или отброшен?» Хотя часто задаваемые вопросы предполагают, что это работает следующим образом, для iptables
(но, возможно, не так, ipchains
как это используется в примерах) эта -C
опция, по-видимому, не имитирует тестовый пакет, выполняющий все правила, а скорее проверяет наличие точно совпадающего правила. Это имеет мало значения в качестве теста. Я хочу утверждать, что правила имеют желаемый эффект, а не только то, что они существуют.
Я подумал о создании еще большего количества тестовых виртуальных машин и виртуальной сети, а затем исследую инструменты, подобные nmap
эффектам. Однако я избегаю этого решения из-за сложности создания всех этих дополнительных виртуальных машин, что на самом деле является довольно сложным способом генерирования некоторого тестового трафика. Также было бы неплохо иметь методологию автоматизированного тестирования, которая также может работать на реальном сервере.
Как еще я могу решить эту проблему? Есть ли какой-то механизм, который я мог бы использовать для генерации или симуляции произвольного трафика, а затем узнать, был ли он (или будет) отброшен или принят iptables
?