2017-04-20 104 views
-1

我有一个场景,就是我在azure上创建了一个具有CIDR块中地址范围的虚拟网络,例如, 10.0.0.0/24,则需要创建具有类似CIDR块中的地址范围的默认子网,例如10.1.0.0/16。我需要验证子网地址范围应驻留在虚拟网络地址范围意味着我需要验证10.1.0.0/16是否在10.0.0.0/24的范围内?验证子网地址范围在vnet地址范围下通过c#

我搜索它在互联网上,但我下CIDR块只得到IP地址验证,但我想要的是验证CIDR块是范围在其他CIDR块像蔚蓝的门户网站完成在创建虚拟网络和子网的验证。任何帮助,将不胜感激。由于

+0

到目前为止你有什么尝试?你的代码中哪部分是错误? – astaykov

+0

实际上我没有找到任何验证cidr范围下的cidr范围的代码。我发现它的代码只验证CIDR范围内的IP,而不验证CIDR范围内的CIDR范围。 –

回答

0

,但我想要的是验证CIDR块是在其他CIDR块像蔚蓝的门户网站做了验证范围,同时创建虚拟网络和子网

对于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方面处理。

+0

谢谢布鲁斯它的工作原理 –