ipset (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи ipset. Дата последней синхронизации: 10 декабря 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

ipset — это сопутствующее приложение для межсетевого экрана Linux iptables. Он позволяет, помимо прочего, задавать правила для быстрой и простой блокировки набора IP-адресов.

Установка

Установите пакет ipset.

Настройка

Блокировка списка сетей

Для начала создайте новый «набор» сетевых адресов. Эта команда создаст новый «хэш» набор сетевых адресов с названием «myset».

# ipset create myset hash:net

или

# ipset -N myset nethash

Добавьте в набор любые IP-адреса, которые вы хотите заблокировать.

# ipset add myset 14.144.0.0/12
# ipset add myset 27.8.0.0/13
# ipset add myset 58.16.0.0/15
# ipset add myset 1.1.1.0/24

Затем настройте iptables для блокировки любого адреса из этого набора. Данная команда добавляет правило в цепочку INPUT, которое отбрасывает любые входящие пакеты с источником из множества IP-адресов, определенного как «myset».

# iptables -I INPUT -m set --match-set myset src -j DROP

Блокировка списка IP-адресов

Начните с создания нового «набора» IP-адресов. Эта команда создаст новый «хеш» набор IP-адресов с именем «myset-ip».

# ipset create myset-ip hash:ip

или

# ipset -N myset-ip iphash

Добавьте в набор любые IP-адреса, которые вы хотите заблокировать.

# ipset add myset-ip 1.1.1.1
# ipset add myset-ip 2.2.2.2

Наконец, настройте iptables для блокировки любого адреса из этого набора.

# iptables -I INPUT -m set --match-set myset-ip src -j DROP

Делаем ipset постоянным

Созданный вами ipset хранится в памяти и исчезнет после перезагрузки. Чтобы сделать ipset постоянным, вам необходимо сделать следующее:

Во-первых, сохраните ipset в /etc/ipset.conf:

# ipset save > /etc/ipset.conf

Затем включите ipset.service, который работает аналогично iptables.service для восстановления правил iptables.

Важно: Однажды наблюдалась (редкая) ошибка FS#79674, которая привела к сбою iptables.service из-за отсутствия ipsets, несмотря на успешное выполнение ipset.service. Используйте избыточную защиту и подумайте об использовании скрипта мониторинга, если вам нужна 100% уверенность в том, что ваш брандмауэр работает.

Блокировка с помощью PeerGuardian и других черных списков

Инструмент pg2ipset-gitAUR от автора Maeyanie.com в сочетании со скриптом ipset-update.sh может использоваться с cron для автоматического обновления различных чёрных списков. На данный момент по умолчанию реализована блокировка: страны, узла выхода Tor и списка Bluetack pg2.

Другие команды

Для просмотра наборов:

# ipset list

или

# ipset -L

Для удаления набора:

# ipset destroy myset

или

# ipset -X myset

Для удаления всех наборов:

# ipset destroy

Дополнительную информацию см. в ipset(8).

Оптимизация

Инструмент iprangeAUR может помочь уменьшить количество записей в ipset.conf путём объединения соседних диапазонов или удаления пересекающихся диапазонов. Это может повысить производительность маршрутизатора/брандмауэра, если размер таблицы огромен. Этот инструмент также может преобразовать список имён хостов в IP-адреса.

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