Можно ли с помощью iptables отменить несколько диапазонов IP-адресов в одном правиле?

Можно ли с помощью iptables отменить несколько диапазонов IP-адресов в одном правиле?

Я хочу регистрировать все внешние, не наши IP-блоки, соединения с портом. Для одного диапазона правило выглядит так:

-A INPUT ! -s 10.20.0.0/16 -p tcp -m tcp --dport 8443 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New 8443 Connection"

Логически идея заключается в том, чтобы не регистрировать соединения с портом 8443, если они исходят из 10.20.0.0/16или 10.30.0.0/16. Я атакую ​​проблему с неправильной логикой для iptables? Возможно ли это вообще с iptables?

Обратите внимание, что это всего лишь примеры диапазонов IP-адресов, а не те, для которых я хочу прекратить запись в журнал.

решение1

Вы можете использовать ipset:

-A INPUT -p tcp -m tcp --dport 8443 -m set ! --match-set OUR_IP4 src -j LOG

Обратите внимание, что ipset необходимо поддерживать с помощью отдельного инструмента (включая создание/восстановление при загрузке).

Вы можете использовать подцепочку:

-A INPUT -p tcp -m tcp --dport 8443 -j FOOSERVICE

-N FOOSERVICE
-A FOOSERVICE -s 10.20.0.0/16 -j RETURN
-A FOOSERVICE -s 10.30.0.0/16 -j RETURN
-A FOOSERVICE -j LOG --log-prefix "New connection to foo: "
-A FOOSERVICE -j RETURN
   # optional; subchains always return at the end

Связанный контент