No hackery required for a simple solution. Just Split() the address segments, pad the segments with zeros, and then join them back together. Put this one line static method into a static class like this:
public static class StringHelper
{
public static string IpAddressLabel(string ipAddress)
=> string.Join(".", ipAddress.Split('.').Select(part => part.PadLeft(3, '0')));
}
And then call it at will:
=> new[] {"192.168.1.100", "192.168.1.1", "192.168.1.19"}
.OrderBy(ip => StringHelper.IpAddressLabel(ip));
Also, this can be used as a filename or elsewhere when a sortable label is desired:
192.168.001.001.log
192.168.001.019.log
192.168.001.100.log