How to build a IP geolocation database from scratch?
First, I am big fan of your articles even before I joined IPinfo, where we provide IP geolocation data service.Our geolocation methodology expands on the methodology you described. We utilize some of the publicly available datasets that you are using. However, the core geolocation data comes from our ping-based operation.We ping an IP address from multiple servers across the world and identify the location of the IP address through a process called multilateration. Pinging an IP address from one server gives us one dimension of location information meaning that based on certain parameters the IP address could be in any place within a certain radius on the globe. Then as we ping that IP from our other servers, the location information becomes more precise. After enough pings, we have a very precise IP location information that almost reaches zip code level precision with a high degree of accuracy. Currently, we have more than 600 probe servers across the world and it is expanding.The publicly available information that you are referring to is sometimes not very reliable in providing IP location data as:- They are often stale and not frequently updated.- They are not precise enough to be generally useful.- They provide location context at an large IP range level or even at organization level scale.And last but not least, there is no verification process with these public datasets. With IPv4 trade and VPN services being more and more popular we have seen evidence that in some instances inaccurate information is being injected in these datasets. We are happy and grateful to anyone who submits IP location corrections to us but we do verify these correction submissions for that reason.From my experience with our probe network, I can definitely say that it is far easier and cheaper to buy a server in New York than in any country in the middle of Africa. Location of an IP address greatly influences the value it can provide.We have a free IP to Country ASN database that you can use in your project if you like.https://ipinfo.io/developers/ip-to-country-asn-database