У меня есть сценарий, который автоматически заполняет ipset с помощью iblocklist, поэтому в ipset достаточно много IP. Я использую это уже несколько лет, но внезапно замечаю проблему, честно говоря, не функциональную, но мне действительно хотелось бы понять, что происходит на моем устройстве.
Позвольте мне описать проблему с помощью пары команд:
root# ipset version
ipset v6.38, protocol version: 6
root# ipset list -name spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
spywere
root#: ipset list spywere | wc -l
3654
root#: ipset list -name spywere | wc -l
24
root# ipset list level1 | wc -l
256679
root# ipset list -name level1 | wc -l
1657
Несколько соображений:
Количество повторяющихся имен ipset, похоже, связано с объемом данных, которые я кормлю, например. большой ввод создаст гораздо больше дублированных ipset, чем маленький ввод
В любом случае все работает нормально, поэтому можно предположить, что ipset разбивает большой объем данных на куски, возможно, для оптимизации ресурсов, не уверен
ipset были созданы с помощью этой команды:
ipset -N spywere hash: net hashsize 1024 --resize 5 maxelem 409600
Я попытался настроить параметры hashsize, resize и maxelem, но результат идентичен
Отношение между количеством созданных параллельных списков и количеством элементов составляет примерно 150 ~ 155/1. Что, по сути, говорит мне, что каждые 150 элементов нужно найти дублированное имя списка
Заполняются ipset очень просто шлейфом
while read IP do ipset -A -q -! spywere IP done