获取CIDR范围的相反值

8
我想列出一份CIDR范围的清单,其中包括我指定的CIDR范围之外的地址。
举个简单的例子:如果我有从8.8.8.8到8.8.8.10的IP范围,我可以用CIDR范围8.8.8.8/31和8.8.8.10/32来表示。但是如何用CIDR符号表示这些范围的相反范围?
我对CIDR不熟悉,所以如果这种工具已经存在于流行格式中,请原谅我的问题。
另外,我最终想在R中实现此过滤,因此如果您能使用R表达您的答案,那将是更可取的,但我真正感兴趣的是如何构建算法来解决这类问题。
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接