Приклади використання IP sets

Див. також: Конфігурація IP set, Фільтрація трафіку за DNS через IP sets

IP sets — це функціональність netfilter, яка дозволяє об’єднувати велику кількість хостів або мереж у єдиний іменований набір (set). Правила netfilter можуть порівнювати поля пакетів з цим набором, а не з кожною адресою окремо. Це значно підвищує ефективність, наприклад, завдяки використанню хеш-пошуку замість лінійного.

`firewall4` підтримує найпоширеніші функції IP sets. У цьому розділі наведено приклади, як використовувати IP sets у правилах netfilter.

IP sets добре підходить для об'єднання великої кількості IP-адрес/мереж під одним ярликом (label), який потім використовується як єдиний критерій у правилах файрволу.

Одне з головних застосувань — блокування генераторів спаму (станції або мережі, що розсилають мільярди листів щодня). Таких генераторів тисячі, і додавання окремого правила на кожен створить величезний і неефективний список правил netfilter.

Замість цього всі спам-мережі додаються до одного IP set з назвою dropcidr, а потім ця назва використовується в одному правилі.

У конфігурації файрволу `/etc/config/firewall` додайте:

config ipset
	option name     'dropcidr'
	option match    'src_net'
	option enabled  '1'
	list entry      '42.56.0.0/16'
	list entry      '180.178.160.0/20'
	list entry      '79.133.43.0/24'
	list entry      '27.44.0.0/15'
	list entry      '192.168.3.0/24'
 
config rule
	option src          'wan'
	option ipset        'dropcidr'
	option dest_port    '25'
	option target       'DROP'
	option name         'DROP-SMTP-WAN-LAN'
	option enabled      '1'

Конфігурація `ipset` створює IP-набір із назвою dropcidr і вказує файрволу перевіряти його за полем джерела мережі у відповідному правилі.

Щоб переглянути створені IP sets:

nft list sets

Ядро OpenWrt виконує додаткову оптимізацію всередині модулів IP sets. Цей набір використовує ефективну хеш-таблицю замість повного перебору (linear search).

Секція `rule` перевіряє, чи IP джерела належить до набору dropcidr і чи порт дорівнює 25 (SMTP). Якщо так — спрацьовує `DROP`. Для таких випадків бажано використовувати саме `DROP`, а не `REJECT`.

Див. також: Керування netfilter для перегляду та перевірки нових правил.

У наведеному прикладі список `list entry` задає IP-адреси безпосередньо в конфігурації. 192.168.3.0/24 — це приватна тестова мережа; решта — реальні джерела спаму.

На практиці зручніше використовувати опцію loadfile, яка дозволяє завантажувати IP-адреси з зовнішнього текстового файлу.

Створіть файл:

cat << "EOF" > /etc/dropcidr.txt
42.56.0.0/16
180.178.160.0/20
79.133.43.0/24
27.44.0.0/15
192.168.3.0/24
EOF

Потім змініть конфігурацію IP set у файрволі, видаливши `list entry` та додавши `loadfile`:

config ipset
	option name     'dropcidr'
	option match    'src_net'
	option enabled  '1'
	option loadfile '/etc/dropcidr.txt'

CIDR-адреси можна додавати або видаляти динамічно, навіть під час активності правила.

Окрім ручного додавання, пакет dnsmasq-full може автоматично заповнювати набір IP. Це корисно, коли потрібна фільтрація за доменами: IP-адреси, які відповідають певним DNS-іменам, додаються до IP set.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/06/01 19:08
  • by vazaz