Есть ли способ узнать, какое правило 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чтобы вы могли искать правила. Я бы посмотрел порт; адрес; и правила интерфейса, которые применяются. Учитывая, что у вас так много правил, вы, скорее всего, используете в основном закрытый брандмауэр и не имеете правила разрешения трафика.

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

BillThor
источник
После выяснения этого вопроса я выяснил, что правила взяты из APF, и мне удалось это исправить. Я люблю цель TRACE, хотя. Это было бы очень эффективно.
Шон Дж. Гофф
2
Пример использования цели TRACE находится здесь: serverfault.com/questions/122157/debugger-for-iptables/… .
SLM
14

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

ninjalj
источник
Это хорошо, я надеюсь на что-то лучшее, так как есть 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

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

Кайл Брандт
источник
9

В моей компании мы используем watch -n 2 -d iptables -nvL, он показывает изменения между запросами

Марсело Салазар
источник
5
watch -n1 -d "iptables -vnxL | grep -v -e pkts -e Chain | sort -nk1 | tac | column -t"

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

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

sjas
источник