Is there a more accurate method to determine the country of origin for an IP than the methods I've described above?
Physical geography and DNS do not match. Some of the most popular web sites in Indian under the .in domain are physically in the US and owned by US companies. Having a web site under the .in domain is a means to reach a market. Physical geography and IP addresses do not match. Once the RIR allocates to the LIR, the LIR can sub-allocate anywhere. So a LIR (ISP) in Singapore with a regional business could allocate their address block to customers in Singapore, Hong Kong, China, India, and any other place where they offer services. DNS LOC Recorded might be helpful. But, as noted in one CAIDA paper ... "Both the whois-based and hostname-based mapping rely on the assumption that educated guesses are required in the absence of explicit location information. While RFC 1876 [RFC1876] did define a DNS extension to provide a LOC resource record type that allows administrators to associate latitude and longitude information with entries, it turns out to be sub-optimally useful. First, the RFC specifies only the format and interpretation of the new field, without establishing where or at what granularity to use it. Because of this, finding the appropriate LOC resource record may require multiple DNS queries. More importantly, people just do not use it. NetGeo currently does not use DNS LOC queries by default because their low success rate does not justify the expense of the three or more DNS lookups typically needed to rule out the existence of a valid DNS LOC record." ---> http://www.caida.org/outreach/papers/2000/inet_netgeo/inet_netgeo.html#dnslo c There are tools that CAIDA has worked on like NetGeo (now something sold by Ixia) http://www.caida.org/tools/utilities/netgeo/. Might be something to check out along with all the other Internet mapping projects.