You need to make a comparer: (Tested)
class IPComparer : IComparer {
public int Compare(string a, string b) {
return Enumerable.Zip(a.Split('.'), b.Split('.'),
(x, y) => int.Parse(x).CompareTo(int.Parse(y)))
.FirstOrDefault(i => i != 0);
}
}
You can then write
ips.OrderBy(p => p, new IPComparer())