获得与CIDR范围相反的信息

cyl*_*ude 7 ip r cidr

我想列出一个CIDR范围列表,它代表我指定的CIDR范围之外的地址.

作为简化示例:

如果我的IP范围从8.8.8.8到8.8.8.10,我可以用CIDR范围8.8.8.8/31和8.8.8.10/32来表达.但是我怎么能用CIDR表示法表达这些范围的反面呢?

我是CIDR的新手,所以如果这种工具已经以流行的形式存在,请原谅我的问题.

作为一个补充说明,我想最终在R中实现这个过滤,所以如果你能用R来表达你的答案,那将是更好的但我真的最感兴趣的是如何构建算法来解决这类问题.

Ami*_*rni 4

基本上,如果您有一个 IP 地址范围 (X, Y),并且想要表示不在 (X, Y) 范围内的所有 IP 地址,那么它可以表示为两个范围:(0.0.0.0, X-1) 和(Y+1,255.255.255.255)。

然后您只需将这两个范围转换为 CIDR 即可。一个范围可能会产生多个 CIDR。

在特定示例中,您需要范围:(0.0.0.0, 8.8.8.7) 和 (8.8.8.11, 255.255.255.255)。我不知道如何在 R 中执行此操作,但这里有一个方便的计算器: 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