URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 83894
[ Назад ]

Исходное сообщение
"как просуммировать сети"

Отправлено kirk , 31-Янв-09 00:21 
по bgp получаю несколько сетей, например в виде
10.0.0.0/22
10.0.8.0/22
10.0.16.0/20

есть какой либо скрипт, позволяющий получить на выходе 10.0.0.0/19 ?

PS маршруты получаю по openbgp и отправляю в pf-таблицу


Содержание

Сообщения в этом обсуждении
"как просуммировать сети"
Отправлено kirk , 31-Янв-09 00:24 
>по 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  ?


"как просуммировать сети"
Отправлено angra , 31-Янв-09 02:47 
Вы сформулируйте внятно в терминах битов по какому алгоритму хотите получить объединение и что увидеть на выходе. Сам скрипт легко написать на том же perl, но ваша логика мне пока не ясна.

"как просуммировать сети"
Отправлено kirk , 31-Янв-09 12:58 
>Вы сформулируйте внятно в терминах битов по какому алгоритму хотите получить объединение
>и что увидеть на выходе. Сам скрипт легко написать на том
>же 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 в программировании не силен, поэтому если у кого есть готовый скрипт то был бы признателен


"как просуммировать сети"
Отправлено const86 , 31-Янв-09 10:29 
>забыл добавить, что есть еще 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, например).


"как просуммировать сети"
Отправлено kirk , 31-Янв-09 12:47 
>[оверквотинг удален]
>
>>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. я не говорил ))



"как просуммировать сети"
Отправлено const86 , 31-Янв-09 14:45 
>10.0.16.0/20  входит в сеть 10.0.0.0/19
>а про сеть 10.31.0. я не говорил ))

Вот именно, что не говорил, а она тоже входит в 10.0.0.0/19.


"как просуммировать сети"
Отправлено kirk , 31-Янв-09 15:04 
>>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, вы что то путаете.
подсчитайте побитно


"как просуммировать сети"
Отправлено Andrey Mitrofanov , 31-Янв-09 16:27 
>подсчитайте побитно

Удивительно! Значит про биты Вы всё-таки знаете. Тогда всё просто...

Взять первуюсеть.
Пока Взять_из_списка ещёсеть => взялась; делать
  Если  Входит_в ещёсеть, То
    перваясеть=ещёсеть; ЦиклПродолжить;
  ИначеЕсли ещёсеть Входит_в перваясеть, То
    ЦиклПродолжить;
  Иначе
    Пока перваясеть->маска > 0 && ещёсеть не Входит_в перваясеть; делай
      перваясеть->маска--; # или около того...
    Акоп.
  Илсе.
Акоп.

ЗЫ: Универсальный результат: 0.0.0.0/0.


"есть! :))"
Отправлено Andrey Mitrofanov , 31-Янв-09 16:41 
Кста-а-ати... Вспомнилось!

http://packages.debian.org/sid/aggregate
man ~ http://man.cx/aggregate%288%29

ЗЫ: Сам узнал из зависимостей firehol. Пакет присутствовал в sarge, отсутствовал в etch (бинарник из sarge - работает, почему не поставляли не знаю), теперь в lenny снова есть...


"есть! :))"
Отправлено angra , 31-Янв-09 16:47 
А я уже собирался небольшой скриптик на перле написать, задачка казалась интересной.

"есть! :))"
Отправлено kirk , 31-Янв-09 18:43 
>Кста-а-ати... Вспомнилось!
>
>http://packages.debian.org/sid/aggregate
>man ~ http://man.cx/aggregate%288%29
>
>ЗЫ: Сам узнал из зависимостей firehol. Пакет присутствовал в sarge, отсутствовал в
>etch (бинарник из sarge - работает, почему не поставляли не знаю),
>теперь в lenny снова есть...

спасибо, то что нужно ))


"как просуммировать сети"
Отправлено Pahanivo , 31-Янв-09 16:18 
>по 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 адресами и сетями.
если че могу подсказать как решать


"как просуммировать сети"
Отправлено kirk , 31-Янв-09 16:35 
>[оверквотинг удален]
>
>например
>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. я знаю как называется эта задача, не надо объяснять как суммировать сети

возможно я неверный пример дал. вопрос был - есть ли скрипт для задачи? знаете такой - подскажите, не знаете - перейдите к следующей теме


"как просуммировать сети"
Отправлено Pahanivo , 31-Янв-09 22:03 
>[оверквотинг удален]
>>если че могу подсказать как решать
>
>1. с чего вы взяли что я не знаю что такое ip
>адрес? удивляет как можно сделать такое тупое предположение.
>2. я знаю как называется эта задача, не надо объяснять как суммировать
>сети
>
>возможно я неверный пример дал. вопрос был - есть ли скрипт для
>задачи? знаете такой - подскажите, не знаете - перейдите к следующей
>теме

дочитай мой пост до конца без нервов


"как просуммировать сети"
Отправлено kirk , 31-Янв-09 23:18 
>[оверквотинг удален]
>>1. с чего вы взяли что я не знаю что такое ip
>>адрес? удивляет как можно сделать такое тупое предположение.
>>2. я знаю как называется эта задача, не надо объяснять как суммировать
>>сети
>>
>>возможно я неверный пример дал. вопрос был - есть ли скрипт для
>>задачи? знаете такой - подскажите, не знаете - перейдите к следующей
>>теме
>
>дочитай мой пост до конца без нервов

расслабся, и прочти мой пост до конца.
вопрос решен.


"как просуммировать сети"
Отправлено Pahanivo , 31-Янв-09 23:45 
>[оверквотинг удален]
>>>сети
>>>
>>>возможно я неверный пример дал. вопрос был - есть ли скрипт для
>>>задачи? знаете такой - подскажите, не знаете - перейдите к следующей
>>>теме
>>
>>дочитай мой пост до конца без нервов
>
>расслабся, и прочти мой пост до конца.
>вопрос решен.

да я и не напрягался ))