Не всё так просто, особенно с мобильным интернетом. Я, например, нахожусь в Брянске, и если сижу с мобилы, мой ip московский. Давно уже перевалили за 50% по мобильному трафику, поэтому в большинстве случаев geo по ip определяется не точно. Конечно в массштабах стран всё - ок.
Если отвечать конкретно на Ваш вопрос, то базы
maxmind в помощь. У них есть платные и бесплатные.