2016-05-10 30 views
6

Vorrei creare un elenco di intervalli CIDR che rappresentano gli indirizzi al di fuori dell'intervallo CIDR che specifica.Ottieni l'opposto di un intervallo CIDR

Come un esempio semplificato:

Se ho la IP varia da 8.8.8.8 a 8.8.8.10, che sarebbe in grado di esprimere questo con CIDR gamme 8.8.8.8/31 e 8.8.8.10/32. Ma come potrei esprimere l'opposto di questi intervalli nella notazione CIDR?

Sono nuovo al CIDR quindi se questo tipo di strumento esiste già in un formato popolare, scusate la mia domanda.

Come nota aggiuntiva, vorrei implementare questo filtro in R, quindi se puoi esprimere la tua risposta usando R che sarebbe preferibile, ma sono molto interessato a come costruire l'algoritmo per risolvere questo tipo di problema.

risposta

3

In sostanza, se si dispone di un intervallo (X, Y) di indirizzi IP e si desidera rappresentare tutti gli indirizzi IP che non sono in (X, Y), allora può essere espresso come due intervalli: (0.0.0.0, X -1) e (Y + 1, 255.255.255.255).

Quindi basta convertire i due intervalli in CIDR. Un intervallo può causare più CIDR.

Nell'esempio specifico si desidera intervalli: (0.0.0.0, 8.8.8.7) e (8.8.8.11, 255.255.255.255). Non ho idea di come fare questo in R, ma ecco un pratico calcolatore qui: 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):

01.235.
  • 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