Если вы не укажете 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