3

У меня есть список из примерно 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

2 ответа2

3

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

cat unopt.txt | ./cidrmerge > optimized.txt
2

Посмотри в ипсец. Вы можете поместить все это в одно правило, которое вы можете динамически обновлять без необходимости перезагрузки правил. У меня был действительно хороший успех с использованием этого, чтобы справиться с такими вещами. Вот ссылка на справочную страницу для 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .