Мне нужно создать правило в iptables, которое будет маркировать трафик, исключая при этом несколько диапазонов IP-адресов. Например: ```bash iptables -A PREROUTING -i enp1s0 -s 10.8.0.0/24 ! -d 10.9.0.0/24 -t mangle -j MARK --set-mark 4 ``` В этом примере, где указано `! -d`, мне необходимо добавить дополнительные диапазоны IP, такие как 10.11.0.0/24, 10.14.0.0/24 и другие. Я знаю, что много информации касается использования ipset, но в основном приводятся примеры с соответствиями по исходным адресам, а не по адресам назначения. Я хотел бы узнать, как можно осуществить это в iptables. Я также понимаю, что можно создавать несколько правил для повторной маркировки трафика, но считаю это не самым оптимальным методом.
Для добавления нескольких диапазонов IP-адресов в правило `iptables`, исключая эти адреса, вы можете использовать `ipset`. Это позволит вам сгруппировать диапазоны IP-адресов в набор и легко управлять ими. Вот шаги, как это сделать: 1. **Установите ipset** (если не установлен): ```bash sudo apt-get install ipset ``` 2. **Создайте набор ipset**: ```bash ipset create excluded_ips hash ip ``` 3. **Добавьте необходимые диапазоны IP в созданный набор**: ```bash ipset add excluded_ips 10.9.0.0/24 ipset add excluded_ips 10.11.0.0/24 ipset add excluded_ips 10.14.0.0/24 ``` 4. **Обновите правило iptables, чтобы использовать набор ipset**: ```bash iptables -A PREROUTING -i enp1s0 -s 10.8.0.0/24 -m set ! --match-set excluded_ips dst -t mangle -j MARK --set-mark 4 ``` Таким образом, вы создаете набор `excluded_ips`, в который добавляете все диапазоны, которые хотите исключить. В последнем правиле `iptables` используется опция `-m set` для проверки, не является ли адрес назначения (`dst`) частью набора `excluded_ips`. Использование ipset позволяет избежать создания множества похожих правил в `iptables`, что делает настройку более чистой и легкой для управления.
Например, так:
iptables -t mangle -N SPISOK iptables -t mangle -A SPISOK -d 10.9.0.0/24 -j RETURN iptables -t mangle -A SPISOK -d 10.11.0.0/24 -j RETURN iptables -t mangle -A SPISOK -d 10.14.0.0/24 -j RETURN iptables -t mangle -A SPISOK -j MARK --set-mark 4 iptables -t mangle -A PREROUTING -i enp1s0 -s 10.8.0.0/24 -j SPISOK