使用geoipupdate自动更新GeoIP数据库

一、  什么是 GeoIP?

通过在数据库中将地理位置和 IP 地址相互映射,软件程序便可以使用 IP 地址来确定其对应的地理位置,其中包括国家/地区、州/省、城市、邮政编码、纬度/经度、ISP、区号和其他信息。

很多软件都使用 MaxMind 的数据库对 IP 地址的地理位置进行解析,例如前面所提到的 Clash 就是通过解析出口 IP 地址的地理位置,来判断该 IP 是否需要经过代理进行访问。

二、  注册maxmind账号

GeoLite2 Sign Up | MaxMind

● 个人全名(Full name)与公司名(Company)可全部填写个人名字;

● 行业(Industry)可随意选择,我选择的是数据分析(Analytics);

● 国家(Country)我选择的是中国;

● 用途(Intended use)我选择的是网站数据分析(Web analytics);

● 邮箱(Email address)填写为个人邮箱,邮箱将为成为登陆账户;

剩余两项,电话及使用计划为非必填项所以忽略。

点击继续(Continue)后,邮箱会收到一封注册邮件,按箭头点击跳转至设置密码页面。

三、  下载 GeoLite2 数据库

Maxmind 提供了两种版本的 GeoIP 数据库,分别是收费的 GeoIP2 数据库和免费的 GeoLite2 数据库,只需要 注册账户就可以获得免费的 GeoLite2 数据库的 下载链接

图1 MaxMind数据库文件下载页面

通常,很多软件加载的是 .mmdb 格式的 GeoIP 数据库文件,所以我们只需下载红框中的数据库文件。使用 GeoLite2-Country 数据库,IP 地址只解析到对应的国家或地区,使用 GeoLite2-City 数据库,IP 地址可以具体解析到国家/地区、州/省和城市,点击 Download GZIP 就会下载对应的最新版本 GeoLite2 数据库文件。

当然,我们也可以选择点击 Get Permalinks 来获取永久的下载链接。

图2 获取数据库文件的永久下载链接

四、  生成许可证密钥

在账户的 管理许可证密钥 页面中,我们可以生成个人的许可证密钥。许可证密钥可以用来获取数据库的永久下载链接,也可以授权 geoipupdate 程序自动更新数据库文件。

创建license key

主要进行如下 5 步操作:

1.  点击 Generate new license key 按钮。

2.  在 License key description 中给密钥命名。

3.  “Will this key be used for GeoIP Update?”(该密钥是否用于 GeoIP 更新?)选择 yes

4.  选择”Generate a license key and config file for use with geoipupdate version 3.1.1 or newer.”(生成用于 3.1.1 以上版本的 geoipupdate 的许可证密钥和配置文件)

5.  点击 Confirm 确定

图4 生成许可证密钥

图5 创建后显示的用户ID和许可证密钥

出于安全考虑,许可证密钥只会在第一次生成时完整显示一次,之后仅能查看密钥的前 4 个字符。所以在许可证密钥生成后,务必第一时间把它记录下来。

点击 Download Config 按钮,就会下载用于 geoipupdate 程序的配置文件。用文本编辑器打开可以看到如下内容:

# GeoIP.conf file for `geoipupdate` program, for versions >= 3.1.1.
# Used to update GeoIP databases from https://www.maxmind.com.
# For more information about this config file, visit the docs at
# https://dev.maxmind.com/geoip/updating-databases?lang=en.# `AccountID` is from your MaxMind account.
AccountID 6735# `LicenseKey` is from your MaxMind account
LicenseKey O2Z1dEfCCCCC# `EditionIDs` is from your MaxMind account.
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country

五、  安装和配置 GeoIP 更新程序

在生成了 License key 之后,我们就可以使用永久链接来下载 GeoLite2 数据库文件了,例如下载 GeoLite2-City 数据库:

export YOUR_ACCOUNT_ID=6735
export YOUR_LICENSE_KEY=O2Z1dEfuSBsRAk
curl -O -J -L -u $YOUR_ACCOUNT_ID:$YOUR_LICENSE_KEY 'https://download.maxmind.com/geoip/databases/GeoIP2-City-CSV/download?suffix=zip'

这种方法虽然每次能下载到最新版本的 GeoLite2 数据库文件,但是每次数据库更新都依靠手动下载必然是非常麻烦的,所以我们可以使用 MaxMind 提供的官方 GeoIP 数据库更新程序 geoipupdate。

https://dev.maxmind.com/geoip/updating-databases#directly-downloading-databases

1. 安装 GeoIP 更新程序

GeoIP 更新程序 geoipupdate 可以在 Github 下载。

通过rpm在RedHat或CentOS上安装

https://github.com/maxmind/geoipupdate#installing-on-redhat-or-centos-via-the-rpm

下载适合您的系统的.rpm。

运行rpm-Uvhi path/to/geopupdate_5.0.0.0_linux_amd64.rpm(根据需要替换版本号和体系结构)。你需要root权限。这将把geopupdate安装到/usr/bin/geopupdate。

geopupdate默认情况下会查找配置文件/etc/GeoIP.conf。

安装包下载路径

https://github.com/maxmind/geoipupdate/releases

wget https://github.com/maxmind/geoipupdate/releases/download/v7.0.1/geoipupdate_7.0.1_linux_amd64.rpmrpm -ivh geoipupdate_7.0.1_linux_amd64.rpm

2. 配置 GeoIP 更新程序

用文本编辑器打开 /etc/GeoIP.conf,把先前生成的许可证密钥对应的配置文件内容粘贴进去,或者手动输入 AccountID、LicenseKey 和 EditionIDs。剩余部分保持默认。

# 编辑配置文件
vim /etc/GeoIP.conf    # 修改 AccountID 和 LicenseKey 为上面记录的值
    AccountID [your account id]
    LicenseKey [your license key]    # 修改需要下载的ip库,下述只是示例,根据自己需要配置
    EditionIDs GeoLite2-City GeoLite2-Country    # 修改ip库的保存路径
    DatabaseDirectory [/usr/share/GeoIP]

3. 运行 GeoIP 更新程序

运行 geoipupdate 指令,程序便会下载最新的 GeoIP 数据库文件到 /usr/share/GeoIP 目录。

[root@yearning home]# geoipupdate
[root@yearning GeoIP]# pwd
/usr/share/GeoIP
[root@yearning GeoIP]# ll
总用量 55740
-rw-r--r--. 1 root root 50443830 7月   3 17:01 GeoLite2-City.mmdb
-rw-r--r--. 1 root root  6629084 7月   3 17:01 GeoLite2-Country.mmdb
[root@yearning GeoIP]#

六、  自动更新 GeoIP 数据库

如果要自动下载更新最新的 GeoIP 数据库文件,我们还需要添加计划任务。

首先在终端中输入以下指令编辑计划任务:

crontab -e

在 crontab 中添加 geoipupdate 自动更新计划任务:

14 4 * * 0,4 /usr/bin/geoipupdate > /var/log/geoipupdate.log 2>&1

添加完成后,保存并退出。其中,如果系统使用的是 nano 文本编辑器,只需依次按 Ctrl + O 和 Ctrl + X 即可,如果系统使用的 vim 文本编辑器,则需要先按 Esc ,再输入 :wq。

按照以上内容添加到计划任务,系统会在每个星期的星期天和星期四凌晨 4:14 对 GeoIP 数据库文件进行更新。

GeoIP商业版计费方式

参考资料:

使用 geoipupdate 自动更新 GeoIP 数据库 - 嘻嘻琦琦

GeoIP的安装和更新 – 悟禅小书童

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyMongo Sort 操作:提升你的数据查询效率

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

使用Python和Selenium爬取京东商品数据

简介❤❤ 码农不是吗喽(大学生版)-CSDN博客 在本文中,我们将探讨如何使用Python编程语言结合Selenium库来爬取京东网站上的商品数据。Selenium是一个强大的工具,可以模拟真实用户对网页的交互操作,非常适合进行网页自…

Etcd-v3.4.27集群部署

下载etcd # wget https://storage.googleapis.com/etcd/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz --2024-07-16 09:46:54-- https://storage.googleapis.com/etcd/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz Resolving storage.googleapis.com (storage.googleapis.com)... …

AI写作辅助,如何确保学术诚信?

感谢笔灵AI,让我论文完成后但毕竟是AI生成的,充满了AI的痕迹。不敢轻率地将其呈交!最终一个必须完成的任务就是清除AI的痕迹。今天就为大家带来笔灵去AI痕迹,好用到哭!走起! 传送门:https://ib…

Mysql知识大全

Mysql 数据库是所有软件体系中最核心的存在 DBA 1.1什么是数据库 数据库(DB,DataBase) 概念:数据仓库,软件,安装在操作系统上(window,linux...) 作用:存…

新版本WPS不登录无法编辑的解决办法

原因分析:新版本的WPS因加入多种在线功能,建议登录账号获得更加体验 解决办法:首选第一种修改注册表后重启WPS,第二种仅作为临时满足工作需求,过一段时间会自动失效 方法一:键盘同时按下WINR键,…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.07.10-2024.07.15

文章目录~ 1.FairyLandAI: Personalized Fairy Tales utilizing ChatGPT and DALLE-32.Human-like Episodic Memory for Infinite Context LLMs3.Mitigating Entity-Level Hallucination in Large Language Models4.Predicting and Understanding Human Action Deci…

【NLP大模型】词嵌入的空间表示与应用

文章目录 一、语义特征空间二、引入新维度:皇室三、语义特征向量的用途四、向量运算类比五、词嵌入的维度和应用词嵌入的应用 六、测量欧几里得距离向量计算向量和欧几里得距离 七、使用点积测量相似度八、创建词嵌入 一、语义特征空间 考虑“男人”、“女人”、“…

33页PPT免费下载 | 2024企业数据资产化及数据资产入表白皮书

一、前言 2024年01月,财政部《关于加强数据资产管理的指导意见》,通过加强和规范公共数据资产基础管理工作探索公共数据资产应用机制,促进公共数据资产高质量供给,有效释放公共数据价值,为赋能实体经济数字化转型升级…

JS【详解】数组(数组的本质、创建数组、常用数组操作API汇总对比和实战范例、数组的遍历、复制、去重等)

数组用于存储多个有序的数据 数组本质上是以数字为键(从0开始,依次递增),并外加一个会自动增长的 length 属性的对象。 创建数组 方式 1 - 通过字面量创建 // 空数组 let arr1 []; let arr2 [1,2,3];方式 2 - 使用构造函数 ne…

Java用JDBC链接mysql

一、什么是JDBC: 是Java平台上的标准数据库访问技术。它提供了一套API(应用程序编程接口),允许Java应用程序与各种类型的数据库进行交互,包括关系型数据库(如MySQL、Oracle、SQL Server等)和非关…

【日记】艾尔登法环终于玩完了(348 字)

正文 昨天打了一天游戏。法环差不多通关了。最终 boss 艾尔登鼻涕虫实在打不过,两个人开挂打了。艾尔登之兽老是马拉松,这谁顶得住,追都追不上。据兄长说,这游戏大概还有 50%-60% 的内容没玩,不过就这样吧,…

解决VMware虚拟机在桥接模式下无法上网的问题

解决VMware虚拟机在桥接模式下无法上网的问题 windows11系统自动启动了热点功能,开启热点可能会干扰虚拟机的桥接设置。 方法一:windows11可以提供网络热点服务 方法二:手动指定桥接的物理网卡 方法一:关闭热点功能 优点&#xff…

MYSQL 四、mysql进阶 10(数据库其它调优策略)

一、数据库调优的措施 1.1 调优的目标 尽可能节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大)合理的结构设计和参数调整,以提高用户操作响应的速度 。(响应速度更快)减少系统的瓶颈&#xff…

13 循环神经网络—序列模型,语言模型

目录 1.序列模型序列数据统计工具自回归模型马尔可夫模型因果关系前向算法举例(根据过去的事件推测未来的事件)方案 A -马尔科夫假设方案 B -潜变量模型总结代码实现 使用马尔科夫假设 训练一个MLP2.文本预处理常见的文本预处理步骤代码实现3.语言模型**使用计数来建模**N 元…

VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案

前言 在做打印功能的时候,以前大部分客户端都是用C#做的,静默打印(也就是不弹出打印对话框)比较简单。 但是使用浏览器作为客户端,静默打印(也就是不弹出打印对话框)做起来就比较困难。困难的…

getaddrinfo 获取地址信息(C语言函数库/CRT)

getaddrinfo 是POSIX定义的通用函数,该函数可以在 Windows、MacOS X、Linux、Android 等平台正确编译且工作。 getaddrinfo 函数的作用为:解释域/IP的地址信息,可简易理解为DNS解析函数。 static IPEndPoint Ipep_GetEndPointWithNative(cons…

python笔记(转存ipynb)------1

list1 ["tom","cat","Lili"] print(list1[0].title())Tom#append()列表方法在列表末尾添加新元素 list1.append(233) print(list1) #可以先创建空列表,再进行追加append(..)以添加[tom, cat, Lili, 233]#insert()列表方法插入元素 l…

29.【C语言】自定义函数

1、自定义详解 *提示&#xff1a;先看第12,19篇 例&#xff1a;写一个程序交换两个变量的值 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void swap(int x, int y) {int z 0;z x;x y;y z; } int main() {int a 10;int b 20;swap(a, b);printf("%d…

让AI语言模型自由飞翔:LangChain框架的奇妙世界

今天&#xff0c;我将为大家揭开一项令人激动的技术——LangChain。想象一下&#xff0c;如果能将人工智能的强大能力与我们日常使用的数据和工具无缝连接&#xff0c;那将开启怎样崭新且无限的可能&#xff01; LangChain&#xff0c;一个专为大型语言模型设计的框架&#xf…