it-swarm-ru.tech

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

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

35
Shawn J. Goff

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

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

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

21
BillThor

Поскольку 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

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

15
Kyle Brandt

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

14
ninjalj

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

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

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

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

5
sjas