Vigorous Pro

The world can always use more heroes.

  1. 1. 注册 MaxMind 账号
  2. 2. 获取 GeoIP 数据库
    1. 2.1. 获取永久链接
    2. 2.2. 获取许可证密钥
    3. 2.3. 下载
  3. 3. 配置 TeamSpeak 服务端
    1. 3.1. 方式一: 添加启动项
    2. 3.2. 方式二: 创建配置文件
  4. 4. 配置自动更新(进阶操作)
  5. 5. 常见问题
    1. 5.1. maxminddb library not found, disabling MMDB usage
  • 参考链接
  • 一直以来, TeamSpeak 服务器都在使用 IP2Location 的数据库,但是因为不能即使更新,所以准确率一直是一个问题。作为Edison 填坑系列之二,我将在本文说明如何在 TeamSpeak 服务器上使用 GeoIP 数据库。

    终于, TeamSpeak 在 1.13.0 的版本开始支持调用 mmdb 格式的数据库了。

    我们想要获取 MaxMind 公司的免费版数据库 GeoLite2 ,先要注册账号。

    注册 MaxMind 账号

    访问 https://www.maxmind.com/en/geolite2/signup 注册账号。

    注册完成后,登录账号,点击页面左侧的 Download Files 选项

    e921332af2152ed43c379fc429fb4177.png

    获取 GeoIP 数据库

    因为 TeamSpeak 只需要精确到国家,所以我们选择 GeoLite2 Country

    01e72c4d98a26f8f9bf9beb9a1a9cbff.png

    获取永久链接

    如果不想配置自动更新,可以忽略这一步,直接右键点击 Download GZIP 获取下载链接即可

    点击 Get Permalinks 会看到如下界面

    5fd7d4dd9db0e6486e6ac841b5efab6e.png

    https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=YOUR_LICENSE_KEY&suffix=tar.gz

    获取许可证密钥

    如果不想配置自动更新,可以忽略这一步

    打开页面左侧的 Manage License Keys 选项卡,点击 Generate new license key

    7f29067d45e85c35f6fe40bcb47023dc.png

    License key description 的部分自己填写就好, 因为我们要自己配置 GeoIP Update 所以下面的选项选 No 即可

    38b2a616f0727b980e55dab0859e6beb.png

    点击 Confirm 之后,我们便可以获取到自己的 ID 和许可证密钥了。复制此处的 License key, 替换到上方链接中。

    请务必妥善保管自己的许可证密钥。

    c610bf232dd1e83652c626b43fbfc06f.png

    举个例子,比如我的Key是 AAAAAAAAAAAAA, 那么链接即 https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=AAAAAAAAAAAAA&suffix=tar.gz

    下载

    在服务器中下载这个文件

    1
    wget 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=AAAAAAAAAAAAA&suffix=tar.gz'

    请注意替换链接

    b9f124b2f7df119eb1bf6c23bbb74078.png

    解压该文件 tar -xvf + Tab

    1
    tar -xvf geoip...=tar.gz

    0b72d523e41b269af5f7690aa157ee24.png

    我们应该能获得三个文件,此处只需要里面的 GeoLite2-Country.mmdb

    复制该文件到 TeamSpeak 服务器端的目录下, 此处以 /opt/teamspeak3-server_linux_amd64/ 为例

    1
    cp GeoLite2-Country_20210302/GeoLite2-Country.mmdb /opt/teamspeak3-server_linux_amd64/

    此处请注意替换目录地址

    配置 TeamSpeak 服务端

    通过添加这个启动项来让服务端调用 mmdb mmdbpath=

    先测试能否正常调用

    1
    ./ts3server mmdbpath=GeoLite2-Country.mmdb

    如果有以下提示,需要安装 maxminddb 库

    1
    2021-03-06 09:02:57.856124|WARNING |GeoIP         |   |maxminddb library not found, disabling MMDB usage

    参见 常见问题 - maxminddb library not found, disabling MMDB usage 部分

    成功运行时,会看到如下的日志

    357d69a528520f7daae1b5399e8f74ed.png

    此时,我们先 Ctrl + C 停止服务器

    方式一: 添加启动项

    接下来,我们只需要在正常的启动命令后面添加刚刚的启动项即可
    比如 ./ts3server_startscript.sh start mmdbpath=GeoLite2-Country.mmdb

    方式二: 创建配置文件

    如果之前有引入过配置文件,或者想要创建配置文件。
    创建名为 ·ts3server.ini· 的配置文件,在配置文件中添加 mmdbpath=<MMDB 文件> ,启动时,调用配置文件即可。

    f2f60bb4b3ee1cdb4a660c56bfc59941.png

    为了方便演示,此处以 ./ts3server inifile=ts3server.ini 的方式启动服务器
    ./ts3server_startscript.sh start inifile=ts3server.ini

    f0d7d50309113b42616ffb7cb52376be.png

    配置自动更新(进阶操作)

    此部分是一个可选项。

    每次更新后,需要重新启动服务器端才能生效

    我写了一个比较简单粗暴的脚本

    创建 /opt/geoip/ 目录 mkdir /opt/geoip

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    cd /opt/geoip
    wget -O geoip.tar.gz -N 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=AAAAAAAAAAAA&suffix=tar.gz'
    tar -zxvf geoip.tar.gz
    chown -R teamspeak:teamspeak GeoLite2-Country*
    cp GeoLite2-Country*/GeoLite2-Country.mmdb /opt/teamspeak3-server_linux_amd64/geoip.mmdb
    rm -r GeoLite2-Country* geoip.tar.gz
    chown -R teamspeak:teamspeak /opt/teamspeak3-server_linux_amd64/geoip.mmdb
    systemctl restart teamspeak

    注意替换脚本中的下载链接,按照我的这个配置中 mmdbpath 也应该被替换为 geoip.mmdb
    如果启动或停止服务器时时通过命令行进行的,那么只需要将 systemctl restart teamspeak 替换为 ./ts3server_startscript.sh start mmdbpath=GeoLite2-Country.mmdb 或其他指令即可。

    接下来把这个配置到 crontab 里面即可
    比如,我自己的服务器设置的是时间是每月1号 4:30 自动更新。

    1
    30 4 1 * * /bin/bash /opt/geoip/update.sh > /dev/null

    至此,替换 IP 数据库,自动更新的操作就完成了。

    常见问题

    maxminddb library not found, disabling MMDB usage

    如果有以下提示,需要安装 maxminddb 库

    1
    2021-03-06 09:02:57.856124|WARNING |GeoIP         |   |maxminddb library not found, disabling MMDB usage

    此处以 Debian 10 x64 系统为例, 安装 libmaxminddb-dev 包即可

    此处需要 sudo 或 root 权限

    1
    sudo apt install libmaxminddb-dev

    参考链接

    https://unix.stackexchange.com/questions/159531/the-geoip2-module-requires-the-maxminddb-library-but-the-library-is-installed

    本文作者 : Edison Jwa
    本文使用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
    本文链接 : https://www.wevg.org/archives/geoip-with-teamspeak/

    本文最后更新于 天前,文中所描述的信息可能已发生改变