You can do either method by using the PHP shipping hooks. You can either return only one shipping method based on your condition or you can set the "free shipping" flag for the items in the order. It is custom development, there are not administrative methods to do so. I don't believe IP address is a supported condition in promotions.
Could you tell me where to look for? I've been puzzling in checkout.php, but since this is something I do for one site I'm not too familiar with how everything works yet.