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

<p>у меня есть система с брандмауэром, который уже установлен. брандмауэр состоит из более 1000 правил iptables. одно из этих правил - отбрасывать пакеты, которые я не хочу отбрасывать. (я знаю это, потому что я сделал <code>iptables-save</code> с последующим <code>iptables -f</code> и приложение начало работать.) слишком много правил для ручной сортировки. могу ли я сделать что-нибудь, чтобы показать мне, какое правило отбрасывает пакеты?</p>

<p>вы можете добавить правило trace в начале цепочки, чтобы регистрировать каждое правило, которое проходит пакет.</p><p>я хотел бы рассмотреть возможность использования <code>iptables -l -v -n | less</code>, чтобы позволить вам искать правила. я бы посмотрел порт; адрес; и правила интерфейса, которые применяются. учитывая, что у вас так много правил, вы, скорее всего, используете в основном закрытый брандмауэр и не имеете правила разрешений для трафика.</p><p>как построен брандмауэр? может быть проще взглянуть на правила построителя, чем на собранные правила.</p>

<p>поскольку <code>iptables -l -v -n</code> есть счетчики, которые вы можете сделать следующим образом.</p><pre><code>iptables -l -v -n > sample1 #cause the packet that you suspect is being dropped by iptables iptables -l -v -n > sample2 diff sample1 sample2 </code></pre><p>таким образом, вы увидите только те правила, которые увеличились.</p>

<p>запустить <code>iptables -l -v -n</code> чтобы увидеть счетчики пакетов и байтов для каждой таблицы и для каждого правила.</p>

<p>в моей компании мы используем <code>watch -n 2 -d iptables -nvl</code>, показывает изменения между запросами</p>

<pre><code>watch -n1 -d "iptables -vnxl | grep -v -e pkts -e chain | sort -nk1 | tac | column -t" </code></pre><p>имейте в виду, что это покажет вещи только для таблицы <strong>фильтр</strong>.</p><p>добавить <code>-t nat</code> (или любую таблицу, которую вы используете, кроме фильтра) для вашего вызова iptables, чтобы проверить там правила.</p>