You could use hostip. They have a constantly evolving list of IPs and where they are located.
You can get information such as physical location, country and the host name for that IP.
You could poll for data and check the host name against a list of pre defined carriers with a regular expression or something.
More info here: http://www.hostip.info/