Skip to content

管理地理位置

Cloink的管理系统依赖于地理位置数据库。

Cloink 使用MaxMind 公司的 GeoLite2 城市数据库,根据 IP 地址识别对等节点的地理位置。

启动时下载数据库

下载完成后,管理系统会准备数据库以供使用。如果数据库已存在,系统将加载并使用现有数据库。

更新GeoLite2 数据库

GeoLite2 数据库每周更新两次,以反映地理位置数据的变化。保持本地 GeoLite2 数据库的更新至关重要。服务management启动时,会查询下载 URL以检查当前数据库是否已过期。如果数据库已过期或不存在,则会自动下载并加载文件。重启服务management将触发更新检查。

--disable-geolite-update可以通过向命令传递标志management或在组合配置文件disableGeoliteUpdate: true中进行设置来禁用此行为:

shell
disableGeoliteUpdate: true

禁用此功能后,仅当数据目录中不存在 GeoLite 数据库文件时,服务才会下载数据库。如果存在多个数据库,则会加载日期最新的数据库。如果数据库不存在,则会下载并加载该数据库,但该数据库不会在management服务后续重启时更新。

完全禁用地址位置信息

如果您不需要基于地理位置的姿态检查,可以通过设置环境变量完全禁用地理位置服务:

shell
NB_DISABLE_GEOLOCATION=true

设置后,管理服务器将跳过地理位置初始化,并且不会尝试下载任何数据库。

故障排除

GeoLite2 在受限网络中下载失败

在某些网络环境下,GeoLite2 数据库的自动下载pkgs.netbird.io可能会失败。这种情况通常发生在以下情况下:

企业防火墙执行深度包检测 (DPI),拦截 HTTPS 流量并使用内部证书颁发机构重新签名证书。管理服务器无法验证这些拦截到的证书,导致下载过程中出现 TLS 错误。 出站访问受到防火墙规则pkgs.netbird.io或代理限制的阻止。

该服务器完全无法访问互联网(物理隔离环境)。

如果您受到影响,您可以手动提供 GeoLite2 数据库文件,而不是依赖自动下载:

  1. 通过在配置中传递--disable-geolite-update标志或设置来禁用自动更新disableGeoliteUpdate: true,以防止服务器尝试下载或覆盖数据库。
  2. MaxMind 的 GeoLite2 页面下载 GeoLite2 城市数据库。您需要一个免费的 MaxMind 帐户才能下载 MMDB 文件。
  3. 将文件放置在管理数据目录中,并按照命名约定进行命名:GeoLite2-City_YYYYMMDD.mmdb(例如,GeoLite2-City_20260127.mmdb)。

查找数据目录:

  • 如果您使用的是 Docker 部署,数据目录通常在/var/lib/cloink/management路径下
  • 如果您使用的是自托管部署,数据目录通常在/var/lib/cloink/management路径下。
shell
/var/lib/docker/volumes/netbird_data/_data/

目录内容大致如下:

shell
root@selfhosted-1:/var/lib/docker/volumes/netbird_data/_data# ls -l
total 72452
-rw-r--r-- 1 root root 63524357 Feb 13 23:00 GeoLite2-City_20260127.mmdb
-rw-r--r-- 1 root root   425984 Feb 17 19:31 events.db
-rw-r--r-- 1 root root  7307264 Feb 13 23:00 geonames_20260127.db
-rw-r--r-- 1 root root    98304 Feb 18 14:07 idp.db
-rw-r--r-- 1 root root  2826240 Feb 18 14:07 store.db

将下载的 GeoLite2 MMDB 文件复制到此目录,然后重启管理服务。服务器将自动检测并加载现有数据库文件,无需重新下载。