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

iptables для подсети / 16 с исключением / 24

Проще говоря, я хочу использовать эти правила:

iptables -I FORWARD -i br0.105 -d 192.168.0.0/16 -j DROP
iptables -I FORWARD -s 192.168.0.0/16 -i br0.105 -j DROP

но за исключением подсети 192.168.99.0/24.

Есть ли способ указать это в строках выше? Я предпочитаю не добавлять правило исключения с -j accept для .99-subnet, поскольку существуют другие правила, относящиеся к этой конкретной подсети.

Используйте новую цепочку. Есть несколько способов сделать это, я бы предпочел:

iptables -N DROP_BAD_HOSTS
iptables -A DROP_BAD_HOSTS -s 192.168.99.0/24 -j RETURN
iptables -A DROP_BAD_HOSTS -i br0.105 -d 192.168.0.0/16 -j DROP
iptables -A DROP_BAD_HOSTS -s 192.168.0.0/16 -i br0.105 -j DROP
iptables -A FORWARD -j DROP_BAD_HOSTS

Обратите внимание, что первое правило выполняет RETURN, если источником является / 24, который вы хотите исключить.

Другой метод - это, но он менее гибкий, поскольку вы не можете добавить еще один диапазон для исключения в будущем:

iptables -N DROP_BAD_HOSTS
iptables -A DROP_BAD_HOSTS -i br0.105 -d 192.168.0.0/16 -j DROP
iptables -A DROP_BAD_HOSTS -s 192.168.0.0/16 -i br0.105 -j DROP
iptables -A FORWARD ! -s 192.168.99.0/24 -j DROP_BAD_HOSTS

поскольку есть и другие правила, которые также применяются

Какие еще правила? Он применяется для подсети .99 или применяется для 192.168.0.0/16?

Если он применяется только для подсети .99, вам нужно только переместить его выше этих двух правил.

Создайте новую цепочку:

iptables -N subnet1

Направьте сеть исключений в новую цепочку:

iptables -I FORWARD -i br0.105 -d 192.168.99.0/24 -j subnet1

Примените другие правила к трафику в этой цепочке:

iptables -I subnet1 ... -j DROP/ACCEPT