2016-05-10 19 views
6

Ich möchte eine Liste von CIDR-Bereichen, die die Adressen außerhalb der CIDR-Bereich angeben, die ich angeben.Erhalten Sie das Gegenteil von einem CIDR-Bereich

Als vereinfachtes Beispiel:

Wenn ich die IP-Bereiche von 8.8.8.8 bis 8.8.8.10 habe, würde ich in der Lage sein, dies mit CIDR auszudrücken reicht 8.8.8.8/31 und 8.8.8.10/32. Aber wie könnte ich das Gegenteil dieser Bereiche in der CIDR-Notation ausdrücken?

Ich bin neu bei CIDR also, wenn diese Art von Werkzeug bereits in einem populären Format existiert, bitte entschuldigen Sie meine Frage.

Als eine zusätzliche Anmerkung möchte ich schließlich diese Filterung in R implementieren, also, wenn Sie Ihre Antwort mit R ausdrücken können, wäre vorzuziehen, aber ich bin wirklich interessiert daran, den Algorithmus zu bauen, um diese Art von zu lösen Problem.

Antwort

3

Grundsätzlich, wenn Sie einen Bereich (X, Y) von IP-Adressen haben und alle IP-Adressen darstellen möchten, die nicht in (X, Y) sind, kann es als zwei Bereiche ausgedrückt werden: (0.0.0.0, X -1) und (Y + 1, 255.255.255.255).

Dann konvertieren Sie nur die beiden Bereiche in CIDRs. Ein Bereich kann zu mehreren CIDRs führen.

In dem spezifischen Beispiel möchten Sie Bereiche: (0.0.0.0, 8.8.8.7) und (8.8.8.11, 255.255.255.255). Ich habe keine Ahnung, wie diese in R zu tun, aber hier ist ein handlicher Rechner hier: 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