по bgp получаю несколько сетей, например в виде
10.0.0.0/22
10.0.8.0/22
10.0.16.0/20есть какой либо скрипт, позволяющий получить на выходе 10.0.0.0/19 ?
PS маршруты получаю по openbgp и отправляю в pf-таблицу
>по bgp получаю несколько сетей, например в виде
>10.0.0.0/22
>10.0.8.0/22
>10.0.16.0/20
>
>есть какой либо скрипт, позволяющий получить на выходе 10.0.0.0/19 ?
>
>PS маршруты получаю по openbgp и отправляю в pf-таблицузабыл добавить, что есть еще overlapping сети типа:
172.16.0.0/12
172.16.2.0/24
172.19.0.0/16как отбросить все сети, входящие в сеть 172.16.0.0/12 ?
Вы сформулируйте внятно в терминах битов по какому алгоритму хотите получить объединение и что увидеть на выходе. Сам скрипт легко написать на том же perl, но ваша логика мне пока не ясна.
>Вы сформулируйте внятно в терминах битов по какому алгоритму хотите получить объединение
>и что увидеть на выходе. Сам скрипт легко написать на том
>же perl, но ваша логика мне пока не ясна.алгоритм прост - сравнить сети и если одна входит в другую то оставить бОльшую сеть.
если есть 2 или больше сетей точно попадающих в границы большей сети,
пример1, есть 2 сети:172.16.0.0/12
172.17.0.0/24
сеть 172.17.0.0/24 попадает в диапазон 172.16.0.0/12
значит оставляем сеть 172.16.0.0/12пример2, есть 2 сети
192.168.0.0/24
192.168.1.0/24объединяем обе сети в одну - 192.168.0.0/23
задача максимум - уменьшить количество сетей для фаервола.
PS в программировании не силен, поэтому если у кого есть готовый скрипт то был бы признателен
>забыл добавить, что есть еще overlapping сети типа:
>172.16.0.0/12
>172.16.2.0/24
>172.19.0.0/16Это не совсем overlapping, здесь есть одна сеть, включающая все остальные. Для двух заданных сетей проверить, что одна включает другую - совсем не сложная задачка.
>10.0.0.0/22
>10.0.8.0/22
>10.0.16.0/20
>
>есть какой либо скрипт, позволяющий получить на выходе 10.0.0.0/19 ?А это по какому принципу? Сеть, включающая все остальные? Обратите внимание, что в ней есть хосты, не принадлежащие ни одной заданной сети (10.31.0.1, например).
>[оверквотинг удален]
>
>>10.0.0.0/22
>>10.0.8.0/22
>>10.0.16.0/20
>>
>>есть какой либо скрипт, позволяющий получить на выходе 10.0.0.0/19 ?
>
>А это по какому принципу? Сеть, включающая все остальные? Обратите внимание, что
>в ней есть хосты, не принадлежащие ни одной заданной сети (10.31.0.1,
>например).10.0.16.0/20 входит в сеть 10.0.0.0/19
а про сеть 10.31.0. я не говорил ))
>10.0.16.0/20 входит в сеть 10.0.0.0/19
>а про сеть 10.31.0. я не говорил ))Вот именно, что не говорил, а она тоже входит в 10.0.0.0/19.
>>10.0.16.0/20 входит в сеть 10.0.0.0/19
>>а про сеть 10.31.0. я не говорил ))
>
>Вот именно, что не говорил, а она тоже входит в 10.0.0.0/19.сеть 10.31.0.0 НЕ ВХОДИТ в сеть 10.0.0.0/19, вы что то путаете.
подсчитайте побитно
>подсчитайте побитноУдивительно! Значит про биты Вы всё-таки знаете. Тогда всё просто...
Взять первуюсеть.
Пока Взять_из_списка ещёсеть => взялась; делать
Если Входит_в ещёсеть, То
перваясеть=ещёсеть; ЦиклПродолжить;
ИначеЕсли ещёсеть Входит_в перваясеть, То
ЦиклПродолжить;
Иначе
Пока перваясеть->маска > 0 && ещёсеть не Входит_в перваясеть; делай
перваясеть->маска--; # или около того...
Акоп.
Илсе.
Акоп.ЗЫ: Универсальный результат: 0.0.0.0/0.
Кста-а-ати... Вспомнилось!http://packages.debian.org/sid/aggregate
man ~ http://man.cx/aggregate%288%29ЗЫ: Сам узнал из зависимостей firehol. Пакет присутствовал в sarge, отсутствовал в etch (бинарник из sarge - работает, почему не поставляли не знаю), теперь в lenny снова есть...
А я уже собирался небольшой скриптик на перле написать, задачка казалась интересной.
>Кста-а-ати... Вспомнилось!
>
>http://packages.debian.org/sid/aggregate
>man ~ http://man.cx/aggregate%288%29
>
>ЗЫ: Сам узнал из зависимостей firehol. Пакет присутствовал в sarge, отсутствовал в
>etch (бинарник из sarge - работает, почему не поставляли не знаю),
>теперь в lenny снова есть...спасибо, то что нужно ))
>по bgp получаю несколько сетей, например в виде
>10.0.0.0/22
>10.0.8.0/22
>10.0.16.0/20
>
>есть какой либо скрипт, позволяющий получить на выходе 10.0.0.0/19 ?
>
>PS маршруты получаю по openbgp и отправляю в pf-таблицу1) разберитесь что такое ip 4 адрес - вы этого не понимаете, удивляет кто вам вообще доверил bgp
2) задача называется "агрегирование сетей" и задача не такая простая как кажется
например
10.0.0.0/24 + 10.0.1.0/24 = 10.0.0.0/23 (сети агрегируются)
НО
10.0.1.0/24 + 10.0.2.0/24 = 10.0.1.0/24 + 10.0.2.0/24 (не в коем разе не 10.0.1.0/23, сети не агрегируются)думаю если поискать решенее найдется, в томже перле есть модули для работы с ip адресами и сетями.
если че могу подсказать как решать
>[оверквотинг удален]
>
>например
>10.0.0.0/24 + 10.0.1.0/24 = 10.0.0.0/23 (сети агрегируются)
>НО
>10.0.1.0/24 + 10.0.2.0/24 = 10.0.1.0/24 + 10.0.2.0/24 (не в коем разе не
>10.0.1.0/23, сети не агрегируются)
>
>думаю если поискать решенее найдется, в томже перле есть модули для работы
>с ip адресами и сетями.
>если че могу подсказать как решать1. с чего вы взяли что я не знаю что такое ip адрес? удивляет как можно сделать такое тупое предположение.
2. я знаю как называется эта задача, не надо объяснять как суммировать сетивозможно я неверный пример дал. вопрос был - есть ли скрипт для задачи? знаете такой - подскажите, не знаете - перейдите к следующей теме
>[оверквотинг удален]
>>если че могу подсказать как решать
>
>1. с чего вы взяли что я не знаю что такое ip
>адрес? удивляет как можно сделать такое тупое предположение.
>2. я знаю как называется эта задача, не надо объяснять как суммировать
>сети
>
>возможно я неверный пример дал. вопрос был - есть ли скрипт для
>задачи? знаете такой - подскажите, не знаете - перейдите к следующей
>темедочитай мой пост до конца без нервов
>[оверквотинг удален]
>>1. с чего вы взяли что я не знаю что такое ip
>>адрес? удивляет как можно сделать такое тупое предположение.
>>2. я знаю как называется эта задача, не надо объяснять как суммировать
>>сети
>>
>>возможно я неверный пример дал. вопрос был - есть ли скрипт для
>>задачи? знаете такой - подскажите, не знаете - перейдите к следующей
>>теме
>
>дочитай мой пост до конца без нервоврасслабся, и прочти мой пост до конца.
вопрос решен.
>[оверквотинг удален]
>>>сети
>>>
>>>возможно я неверный пример дал. вопрос был - есть ли скрипт для
>>>задачи? знаете такой - подскажите, не знаете - перейдите к следующей
>>>теме
>>
>>дочитай мой пост до конца без нервов
>
>расслабся, и прочти мой пост до конца.
>вопрос решен.да я и не напрягался ))