Есть ли способ узнать, какое правило iptables отвечает за удаление пакета?


31

У меня есть система с брандмауэром, который уже установлен. Брандмауэр состоит из более чем 1000 правил iptables. Одно из этих правил - отбрасывать пакеты, которые я не хочу отбрасывать. (Я знаю это, потому что iptables-saveследовал, iptables -Fи приложение начало работать.) Слишком много правил, чтобы разобраться вручную. Могу ли я сделать что-нибудь, чтобы показать мне, какое правило отбрасывает пакеты?


1
fedorahosted.org/dropwatch также может быть полезным в будущем.
Шон Дж. Гофф

Чтобы увидеть обновления счетчиков в режиме реального времени, используйте <br/> <code> watch iptables -L -v -n </ code>
Крис Гибб,

Ответы:


19

Вы можете добавить правило TRACE в начале цепочки, чтобы регистрировать каждое правило, которое проходит пакет.

Я хотел бы рассмотреть возможность использования, iptables -L -v -n | lessчтобы вы могли искать правила. Я бы посмотрел порт; адрес; и правила интерфейса, которые применяются. Учитывая, что у вас так много правил, вы, скорее всего, используете в основном закрытый брандмауэр и не имеете правила разрешения трафика.

Как построен брандмауэр? Может быть проще взглянуть на правила построителя, чем на собранные правила.


После выяснения этого вопроса я выяснил, что правила взяты из APF, и мне удалось это исправить. Я люблю цель TRACE, хотя. Это было бы очень эффективно.
Шон Дж. Гофф

2
Пример использования цели TRACE находится здесь: serverfault.com/questions/122157/debugger-for-iptables/… .
SLM

14

Запустите, iptables -L -v -nчтобы увидеть счетчики пакетов и байтов для каждой таблицы и для каждого правила.


Это хорошо, я надеюсь на что-то лучшее, так как есть 1000 правил и 1000 отброшенных пакетов.
Шон Дж. Гофф

Используйте sortдля сортировки правил по счетчику пакетов.
Ниндзяль

13

Поскольку iptables -L -v -nесть счетчики, вы можете сделать следующее.

iptables -L -v -n > Sample1
#Cause the packet that you suspect is being dropped by iptables
iptables -L -v -n > Sample2
diff Sample1 Sample2

Таким образом, вы увидите только те правила, которые увеличились.



5
watch -n1 -d "iptables -vnxL | grep -v -e pkts -e Chain | sort -nk1 | tac | column -t"

Имейте в виду, это покажет только материал для фильтра таблицы .

Добавьте -t nat(или таблицу, которую вы используете, кроме фильтра) к своему вызову iptables, чтобы проверить там правила.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.