Я ищу умный и короткий способ для расчета суммарных маршрутов. (CIDR, обобщение маршрутов)
Я знаком с предметом суммирования, суперсетями, VLSM, CIDR и т.д., Но я не всегда хочу преобразовать все IP-адреса в двоичный формат, чтобы получить результат.
Я ищу умный способ сэкономить драгоценное время.
Главный вопрос в примере 3
Example1:
Допустим, у нас есть эти два IP-адреса:
- 172.16.64.0/23
- 172.16.66.0/23
Я сразу вижу, что итоговый маршрут будет 172.16.64.0/22.
Я вижу, что я использую 2 подсети -> это 1 бит -> я вычитаю 1 бит из /23 = /22
В двоичном формате:
172.16.64.0 - - -> 10101100.00010000.01000000.00000000
172.16.66.0 - - -> 10101100.00010000.01000010.00000000
22 самых левых совпадающих бита = /22
Когда AND-IN эти IP-адреса, результат
172.16.64.0 - - -> 10101100.00010000.01000000.00000000
Вуаля это работает без конвертации :)
Example2:
- 192.168.4.192/29
- 192.168.4.200/29
- 192.168.4.208/29
- 192.168.4.216/29
Кратко рассмотрим эти IP-адреса, я вижу 4 подсети, которые являются 2 битами (вычтите 2 из /29)
Так что мое предположение 192.168.4.192/27
192.168.4.192 - - -> 10000000.10101000.00000100.11000000
192.168.4.200 - - -> 10000000.10101000.00000100.11001000
192.168.4.208 - - -> 10000000.10101000.00000100.11010000
192.168.4.216 - - -> 10000000.10101000.00000100.11011000
27 самых левых совпадающих битов = /27
Когда AND-IN эти IP-адреса, результат:
192.168.4.192 - - -> 10000000.10101000.00000100.11000000
Вуаля, у нас есть 192.168.4.192/27. Кажется, это работает.
Example3:
(НО) Что если у нас есть подсети с нечетными числами и разными масками (как в примере ниже)
Как я могу сразу получить сводку маршрута? (без преобразования в двоичный файл?)
- 192.168.6.000/27 (10000000.10101000.00000110.00000000)
- 192.168.6.064/27 (10000000.10101000.00000110.01000000)
- 192.168.6.128/26 (10000000.10101000.00000110.10000000)
- 192.168.6.160/26 (10000000.10101000.00000110.10100000)
- 192.168.6.192/28 (10000000.10101000.00000110.11000000)
- 192.168.6.208/28 (10000000.10101000.00000110.11010000)
- 192.168.6.224/30 (10000000.10101000.00000110.11100000)
- 192.168.6.228/30 (10000000.10101000.00000110.11100100)
- 192.168.6.232/30 (10000000.10101000.00000110.11101000)
после преобразования легко увидеть, что это 24 самых левых совпадающих бита = /24
Но есть ли способ, чтобы пропустить конвертацию и сразу найти суммарный маршрут, просто по IP-адресам + маскам?
Пример 4: Этот пример немного подлый, потому что он расходится с моей идеей примера 1:
- 192.168.1.0/24 - 11000000.10101000.00000001.00000000
- 192.168.2.0/24 - 11000000.10101000.00000010.00000000
Результат 192.168.0.0/22
Однако я не мог объяснить, почему это больше не работает.
Я надеюсь, что на этом форуме есть умные люди, которые могут помочь мне найти рабочее решение. :)
заранее спасибо