Назад | Перейти на главную страницу

Как посчитать пакеты, приходящие извне, с помощью iptables?

Если вы не укажете iptables в качестве цели, он просто подсчитает, сколько байтов и пакетов соответствует правилу. Я хотел бы подсчитать все пакеты, которые приходят извне, т.е. не соответствуют 10.0.0.0/8 и не соответствуют 192.168.0.0/16.

Моя первая интуиция:

iptables -A INPUT ! -s 10.0.0.0/8,192.168.0.0/16

Однако при этом добавляются два правила, каждое из которых считается отдельно, и количество внешних пакетов не различимо. Итак, как мне считать внешние пакеты?

У меня возникнет соблазн сделать что-то подобное, создав цепочку. Затем добавьте правила в цепочку, чтобы вернуть то, что вам не нужно. То, что длится до последнего правила цепочки, будет тем, что вам нужно.

# untested
# create a new input counter chain
/sbin/iptables -t filter -N inputcounter
# redirect all traffic to chain
/sbin/iptables -t filter -A INPUT -j inputcounter
# return stuff we don't want to count
/sbin/iptables -t filter -A inputcounter -s 10.0.0.0/8 -j RETURN
/sbin/iptables -t filter -A inputcounter -s 192.168.0.0/16 -j RETURN
# Final rule will return everything else.  This should be a count of 
# everything that wasn't not previously excluded
/sbin/iptables -t filter -A inputcounter -j RETURN