2016-05-10 12 views
6

Chciałbym utworzyć listę zakresów CIDR, które reprezentują adresy poza podanym przez mnie przedziałem CIDR.Odwróć od zakresu CIDR

W uproszczonym przykładzie:

Jeśli mam zakresy IP z 8.8.8.8 do 8.8.8.10, byłbym w stanie wyrazić to z CIDR waha 8.8.8.8/31 i 8.8.8.10/32. Ale w jaki sposób mogę wyrazić przeciwieństwo tych zakresów w notacji CIDR?

Jestem nowy w CIDR, więc jeśli tego rodzaju narzędzie istnieje już w popularnym formacie, proszę wybaczyć moje pytanie.

Jako dodatkową uwagę, chciałbym ostatecznie wdrożyć to filtrowanie w R, więc jeśli możesz wyrazić swoją odpowiedź za pomocą R, która byłaby lepsza, ale naprawdę interesuje mnie głównie jak zbudować algorytm do rozwiązania tego typu problem.

Odpowiedz

3

Zasadniczo, jeśli masz zakres (X, Y) adresów IP i chcesz reprezentować wszystkie adresy IP, które nie są w (X, Y), możesz je wyrazić jako dwa zakresy: (0.0.0.0, X -1) i (Y + 1, 255.255.255.255).

Następnie wystarczy przekonwertować dwa zakresy na CIDR. Zakres może spowodować wiele CIDR.

W podanym przykładzie zakresy: (0.0.0.0, 8.8.8.7) i (8.8.8.11, 255.255.255.255). Nie mam pojęcia, jak to zrobić w R, ale tutaj jest przydatny kalkulator tutaj: http://www.ipaddressguide.com/cidr

(0.0.0.0, 8.8.8.7):

  • 0.0.0.0/5
  • 8,0. 0,0/13
  • 8.8.0.0/21
  • 8.8.8.0/29

(8.8.8.11, 255.255.255.255)

  • 8.8.8.11/32

  • 8.8.8.12/30

  • 8.8.8.16/28
  • 8.8.8.32/27
  • 8.8.8.64/26
  • 8,8. 8,128/25
  • 8.8.9.0/24
  • 8.8.10.0/23
  • 8 .8.12.0/22
  • 8.8.16.0/20
  • 8.8.32.0/19
  • 8.8.64.0/18
  • 8.8.128.0/17
  • 8.9.0.0/16
  • 8,10 .0.0/15
  • 8.12.0.0/14
  • 8.16.0.0/12
  • 8.32.0.0/11
  • 8.64.0.0/10
  • 8.128.0.0/9
  • 9.0.0.0/8
  • 10.0.0.0/7
  • 12.0.0.0/6
  • 16.0.0.0/4
  • 32.0.0.0/ 3
  • 64.0.0.0/2
  • 128.0.0.0/1