通过c#验证vnet地址范围下的子网地址范围

时间:2017-04-20 16:00:31

标签: javascript c#

我有一个场景,就是我在天蓝色上创建了一个虚拟网络,其地址范围在CIDR块中,例如10.0.0.0/24然后需要创建一个默认子网,其地址范围在类似的CIDR块中,例如10.1.0.0/16。我需要验证子网地址范围应该位于虚拟网络地址范围内意味着我需要验证10.1.0.0/16是否在10.0.0.0/24范围内?

我通过互联网搜索它,但我只获得了CIDR块下的IP地址验证,但我想要的是验证CIDR块在其他CIDR块下的范围内,就像在创建虚拟网络和子网时在azure门户上完成的验证一样。任何帮助,将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

  

但我想要的是验证CIDR块在其他CIDR块下的范围内,例如在创建虚拟网络和子网时在azure门户上完成的验证

对于CIDR范围比较,我假设您可以使用IPNetwork中的IPNetwork.Contains方法,如下所示:

IPNetwork addressSpaceRange = IPNetwork.Parse("172.20.0.0/24");
IPNetwork subnetAddressRange = IPNetwork.Parse("172.20.0.0/25");

Console.WriteLine($"Address space [{addressSpaceRange.ToString()}]:");
Console.WriteLine($"FirstUsable address:{addressSpaceRange.FirstUsable}");
Console.WriteLine($"LastUsable address:{addressSpaceRange.LastUsable}\r\n");

Console.WriteLine($"Subnet address range [{subnetAddressRange.ToString()}]:");
Console.WriteLine($"FirstUsable address:{subnetAddressRange.FirstUsable}");
Console.WriteLine($"LastUsable address:{subnetAddressRange.LastUsable}\r\n");

Console.WriteLine("addressSpaceRange contains subnetAddressRange:" + IPNetwork.Contains(addressSpaceRange, subnetAddressRange));

<强>输出

enter image description here

enter image description here

enter image description here

此外,根据我的测试,此方法仅检查地址空间是否包含子网地址范围,我假设将在Azure端处理子网地址和地址的验证检查。