Проще говоря, я хочу использовать эти правила:
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