iptables-tracer — это утилита командной строки для Linux, которая помогает отследить, какие правила iptables применяются к конкретному сетевому пакету. Она особенно полезна при отладке сложных правил фильтрации, когда сложно понять, почему пакет блокируется или пропускается.
В отличие от стандартных методов (например, логирования через -j LOG), iptables-tracer симулирует прохождение пакета через цепочки iptables и показывает путь в реальном времени — без отправки реального трафика.
Возможности
- Имитация входящего/исходящего/перенаправляемого пакета
- Отображение всех цепочек и правил, через которые проходит пакет
- Показывает, какое правило приняло решение (ACCEPT, DROP и т.д.)
- Не требует перезагрузки или изменения текущих правил
Установка
iptables-tracer не входит в стандартные репозитории большинства дистрибутивов, но его можно установить из исходного кода. Утилита написана на языке Rust.
1. Установите Rust (если ещё не установлен)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
2. Установите зависимости
Для сборки потребуется libnetfilter-queue-dev и pkg-config:
# Ubuntu/Debian
sudo apt install libnetfilter-queue-dev pkg-config build-essential
# Fedora/RHEL
sudo dnf install libnetfilter_queue-devel pkg-config gcc
3. Соберите и установите iptables-tracer
git clone https://github.com/aleksandrs-m/iptables-tracer.git
cd iptables-tracer
cargo build --release
sudo cp target/release/iptables-tracer /usr/local/bin/
Готово! Теперь утилита доступна глобально.
Примеры использования
Пример 1: Проверить, как обрабатывается входящий SSH-пакет
sudo iptables-tracer --dport 22 --dst 192.168.1.10 --proto tcp --input eth0
Пример 2: Проверить исходящий HTTP-запрос
sudo iptables-tracer --sport 12345 --dport 80 --dst 93.184.216.34 --proto tcp --output eth0
Пример 3: Проверить UDP-пакет на порт 53 (DNS)
sudo iptables-tracer --dport 53 --dst 8.8.8.8 --proto udp --output eth0
Утилита выведет пошагово, какие цепочки и правила были задействованы, и где было принято окончательное решение (ACCEPT, DROP, REJECT и т.п.).
Важные замечания
- Требуются права root (запуск через
sudo) - Работает только с правилами в таблице
filter(по умолчанию) - Не поддерживает NAT-правила (таблицы
nat,mangle) - Симуляция не влияет на реальный трафик — это «сухой прогон»
Заключение
iptables-tracer — мощный инструмент для системных администраторов и инженеров безопасности, упрощающий диагностику правил файрвола. Он экономит время при отладке сложных конфигураций и помогает избежать ошибок, связанных с неправильной фильтрацией трафика.
Исходный код и документация: https://github.com/aleksandrs-m/iptables-tracer
Комментарии
Пока нет комментариев. Будьте первым!