I would recommend the use of IPNetwork Library https://github.com/lduchosal/ipnetwork.
As of version 2, it supports IPv4 and IPv6 as well.
Contains
IPNetwork ipnetwork1 = IPNetwork.Parse("10.1.0.0/16"); // 10.1.*.*
IPNetwork ipnetwork2 = IPNetwork.Parse("192.168.1.0/24"); // 192.168.1.*
IPAddress ipaddress1 = IPAddress.Parse("192.168.1.1");
IPAddress ipaddress2 = IPAddress.Parse("192.168.2.100");
IPAddress ipaddress3 = IPAddress.Parse("10.1.2.3");
IPAddress ipaddress4 = IPAddress.Parse("10.4.5.6");
bool contains1 = IPNetwork.Contains(ipnetwork2, ipaddress1);
bool contains2 = IPNetwork.Contains(ipnetwork2, ipaddress2);
bool contains3 = IPNetwork.Contains(ipnetwork1, ipaddress3);
bool contains4 = IPNetwork.Contains(ipnetwork1, ipaddress4);
Console.WriteLine("{0} contains {1} : {2}", ipnetwork1, ipaddress1, contains1);
Console.WriteLine("{0} contains {1} : {2}", ipnetwork1, ipaddress2, contains2);
Console.WriteLine("{0} contains {1} : {2}", ipnetwork2, ipaddress3, contains3);
Console.WriteLine("{0} contains {1} : {2}", ipnetwork2, ipaddress4, contains4);
Output
10.1.0.0/16 contains 192.168.1.1 : True
10.1.0.0/16 contains 192.168.2.100 : False
192.168.1.0/24 contains 10.1.2.3 : True
192.168.1.0/24 contains 10.4.5.6 : False
Have fun !