Ipset — компонент универсального фреймворка фильтрации и преобразования пакетов netfilter, предназначенный для хранения больших списков IP-адресов и подсетей, MAC-адресов, TCP/UDP-портов с возможностью быстрого поиска по ним.
Основные новшества:
- Полная поддержка IPv6
- Устранено ограничение для списков типа ipporthash, ipportiphash и ipportnethash, предписывавшее, что адреса в пределах одного списка должны принадлежать одному блоку /16, также устранено ограничение для списков типа ipporthash и ipportnethash, запрещавшее сохранять в них адреса хоста, на котором работает ipset
- Для всех типов списков, сохраняющих номера портов, теперь поддерживается сохранение протокола (TCP/UDP/ICMP, в последнем случае вместо номера порта сохраняется пара значений тип/код ICMP), а также реализована поддержка таймаутов
- Добавление/удаление нескольких записей в рамках одной транзакции
- Для связи ядро-userspace теперь используется протокол Netlink
- Оптимизировано потребление памяти алгоритмом хэширования hash-типов
- Улучшен синтаксис
- Добавлен слой совместимости синтаксиса с веткой 4.х
Прежние версии ipset (ветка 4.х) не включались в основную ветку ядра в силу множества замечаний разработчиков Linux в адрес ipset, однако могли быть собраны в виде отдельных модулей. Версия 5, из-за использования Netlink, требует более жёсткой связи с ядром, поэтому для её работы необходима модификация заголовков ядра с последующей пересборкой. Однако устранение вышеупомянутых замечаний разработчиков ядра даёт надежду на скорое включение ipset в основную ветку разработки.
>>> Подробности