Конденсировать список iptables CIDR?

у меня есть список около 170 000 диапазонов IP, которые я хотел бы заблокировать ( в основном все IP-адреса за пределами США и Канады ). Список в формате CIDR.

есть ли какое-либо программное обеспечение, в которое я могу передать это и получить наиболее сжатую форму?

Я хотел бы ввести это в iptables, но слышал, что практический предел для iptables составляет около 25 000

пример входного файла,

1.0.0.0/24
1.0.1.0/24
1.0.2.0/23
1.0.4.0/22
1.0.8.0/21
1.0.16.0/20
1.0.32.0/19
1.0.64.0/18
1.0.128.0/17
1.1.0.0/24

и просто ручной конвертации
1.0.1.0/24 и 1.0.0.0/24 сведенных 1.0.0.0/23
который в сочетании с 1.0.2.0/23 может быть 1.0.0.0/22, которое при соединении с 1.0.4.0/22 будут 1.0.0.0/21 и т. д.

Так вручную конденсации это будет

1.0.0.0/16
1.1.0.0/24
20
задан Tim Holum
07.02.2023 21:30 Количество просмотров материала 2640
Распечатать страницу

2 ответа

Я нашел инструмент, который делает это https://sourceforge.net/projects/cidrmerge/

cat unopt.txt | ./cidrmerge > optimized.txt
3
отвечен Tim Holum 2023-02-09 05:18

посмотрите в ipsets. Все это можно поместить в одно правило, которое можно динамически обновлять без перезагрузки правил. У меня был действительно хороший успех с использованием этого, чтобы справиться с такими вещами. вот ссылка на man-страницу для ipsets.

Это очень простой в использовании установлено:

ipset create <nameofset> <typeofset>

в вашем случае:

ipset create blockset hash:net

затем добавьте подсети в наборе:

ipset -A blockset 1.1.1.1/24

затем добавить правила в iptables, чтобы делать то, что вы хотите с трафиком.

iptables -A INPUT -m set --set blockset src -j DROP

просто пример. Есть много вещей, которые вы можете сделать с ipsets.

2
отвечен Grim76 2023-02-09 07:35

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх