У меня в IPTABLES есть такие правила:
-A INPUT -s 166.100.102.50/32 -j LOG --log-level 7
и я написал сценарий, который захватывает вывод этих правил и выводит байты с IP на мой сервер.
Я надеялся получить предложения о том, как создать правила, отслеживающие IP-трафик из подсетей диспергатора. IP-адрес не фиксирован, и даже подсети не фиксированы. Например:
120.2.33.45 может быть IP-адресом устройства в один день, а 204.65.3.88 может быть IP-адресом того же устройства на следующий день.
Я думаю, что если бы существовал способ написать правило, чтобы оно давало мне IP-адрес всего, кроме диапазона фиксированных IP-адресов, например 166.100.102.50, тогда я был бы в порядке.
Что-то вроде:
-A ВХОД -s НЕ РАВНЫЙ 166.100.102.50/32 -j LOG --log-level 7
заранее спасибо
Вы хотели (смотрите !
):
iptables -A INPUT ! -s 166.100.102.50/32 -j LOG --log-level 7
Это будет соответствовать всему с исходным адресом НЕ 166.100.102.50.
Из man iptables
[!] -s, --source address[/mask][,...]
Source specification. Address can be either a network name, a
hostname, a network IP address (with /mask), or a plain IP
address. Hostnames will be resolved once only, before the rule
is submitted to the kernel. Please note that specifying any
name to be resolved with a remote query such as DNS is a really
bad idea. The mask can be either a network mask or a plain num‐
ber, specifying the number of 1's at the left side of the net‐
work mask. Thus, a mask of 24 is equivalent to 255.255.255.0.
Здесь начинается соответствующая часть:
A "!" argument before the address specification inverts the
sense of the address. The flag --src is an alias for this
option. Multiple addresses can be specified, but this will
expand to multiple rules (when adding with -A), or will cause
multiple rules to be deleted (with -D).
Вы можете обнаружить, что построение цепочки значительно упростит работу.
Цепочка в основном похожа на подтаблицу. Вы отправляете ему материалы, а затем можете либо вернуть, либо обработать их в этой цепочке.
-t INPUT -N LOGME
# return stuff, that we don't want to handle
-A LOGME -s 166.100.102.50/32 -j RETURN
-A LOGME -s 192.168.27.0/24 -j RETURN
# log everything that hasn't been returned
-A LOGME -j LOG --log-level 7
Другой вариант - создать и использовать ipset, который в основном позволяет вам создать набор адресов, на которые затем можно ссылаться в правиле, используя --match-set
вариант.