Я бы преобразовал их в целые числа, а затем сравнил бы целое число. Но то, что правильно, зависит от того, как вы определяете диапазоны.
UInt32 Ip4ToInt(string ip)
{
UInt32[] parts=ip.Split('.').Select(s=>UInt32.Parse(s)).ToArray();
if (parts.Length != 4)
throw new ArgumentException("InvalidIP");
return (parts[0]<<24) | (parts[1]<<16) | (parts[2]<<8) | parts[3];
}
Например, 1.1.1.99
должен быть частью диапазона 1.1.1.1 - 1.1.2.2
? При сравнении каждой группы это не так, при сравнении целых это.