ESC

开始输入,可搜索发票、服务、域名、工单,以及 更多...

搜索... Ctrl+K
IP 与 ASN

IP 地理位置不准怎么办:Geofeed(RFC 8805)发布与 MaxMind、IP2Location、ipinfo 数据库更正

5 个步骤 6 分钟阅读 1 次阅读 0
本文目录

新拿到的 IP 段常出现“服务器在日本,IP 却显示在美国”的情况,导致网站跳错语言、流媒体或支付风控异常。IP 地理位置不准的根本原因是各家 IP 数据库(MaxMind、IP2Location、ipinfo 等)的数据未更新。本文介绍如何发布 Geofeed(RFC 8805)文件、在 WHOIS 中声明 geofeed 属性,以及如何向主流 IP 数据库提交更正,适用于在 Debian/Ubuntu 或 CentOS/Rocky/AlmaLinux 上自建 Web 服务托管 Geofeed 的场景。

步骤 1:检查 IP 当前的地理位置与 WHOIS 信息

先记录各数据库当前显示的国家和城市,以及 WHOIS 中的 country 字段,便于之后对比。注意 WHOIS 的 country 通常是注册地,不一定等于实际使用地,但部分数据库会参考它。

curl -s https://ipinfo.io/198.51.100.10/json
whois 198.51.100.10 | grep -iE "inetnum|netname|country|geofeed"

步骤 2:编写 Geofeed(RFC 8805)CSV 文件

Geofeed 是一个简单的 CSV 文本,每行一个前缀,字段依次为:前缀、国家代码(ISO 3166-1)、地区代码(ISO 3166-2,可留空)、城市、邮编(可留空)。一个 /24 可以拆分为多个更小的前缀分别声明位置,IPv6 同样支持。以 # 开头的行为注释。

# geofeed.csv  (RFC 8805: prefix,country,region,city,postal)
198.51.100.0/25,JP,JP-13,Tokyo,
198.51.100.128/25,HK,,Hong Kong,
2001:db8:100::/48,KR,KR-11,Seoul,
Geofeed 中的前缀必须属于引用它的 WHOIS 对象范围内,超出范围的条目会被数据库忽略。城市请填写英文通用名称。

步骤 3:通过 HTTPS 公开托管 Geofeed 文件

把文件放到任意可公开访问的 HTTPS 地址即可,例如您网站根目录下的 geofeed.csv。确认返回 200 状态码且内容可以直接读取,不要求登录或跳转到 HTML 页面。

# Debian / Ubuntu: apt install -y nginx    CentOS / Rocky / AlmaLinux: dnf install -y nginx
cp geofeed.csv /var/www/html/geofeed.csv        # Rocky/Alma default root: /usr/share/nginx/html
curl -sI https://www.example.com/geofeed.csv
curl -s  https://www.example.com/geofeed.csv

步骤 4:在 WHOIS 中添加 geofeed 属性

为了让 IP 数据库自动发现您的 Geofeed,需要在 inetnum/inet6num 对象中引用它。RIPE 数据库支持专用的 geofeed: 属性;其他 RIR 可按 RFC 9632 使用 “remarks: Geofeed URL” 的格式。WHOIS 对象只能由 IP 资源持有者维护,对于向 IMIDC 租用的 IP,请提交工单提供 Geofeed 地址,IMIDC 作为 RIPE NCC、APNIC、ARIN、AFRINIC 会员可代为更新 WHOIS,必要时也可同步调整 country 字段。

# RIPE NCC (inetnum / inet6num attribute)
geofeed:  https://www.example.com/geofeed.csv
# APNIC / ARIN / AFRINIC (RFC 9632 remarks format)
remarks:  Geofeed https://www.example.com/geofeed.csv

whois -h whois.ripe.net 198.51.100.0/24 | grep -iE "geofeed|remarks"

步骤 5:向 MaxMind、IP2Location、ipinfo 提交更正

Geofeed 发布后,部分数据库会自动抓取,但主动提交能明显加快更新:

  • MaxMind(GeoIP2 / GeoLite2):通过官网的 GeoIP 数据更正申请页面(maxmind.com/en/geoip-data-correction-request)提交,可直接填写 Geofeed 地址。
  • IP2Location:在官网的数据更正(Data Correction)页面提交 IP 段和正确位置。
  • ipinfo:访问 ipinfo.io/corrections 填写更正,或在说明中附上 Geofeed 链接。

各数据库更新周期不同,通常数天到数周生效;使用这些数据库的网站和应用还要等它们下载新版数据。可以定期复查:

for s in ipinfo.io/198.51.100.10/country ipinfo.io/198.51.100.10/city; do
  echo -n "$s: "; curl -s "https://$s"; echo
done

常见问题

Geofeed 发布后多久生效?

ipinfo 等通常较快,MaxMind 一般随每周数据更新生效,下游应用可能还要更久。若一个月后仍未变化,可再次提交并附上 WHOIS 截图。

Google 显示的位置还是不对?

Google 使用自有定位数据,可通过 Google 的 IP 地理位置问题反馈表单提交,并保持 Geofeed 与 WHOIS 一致。

可以把 IP 声明到实际不在的国家吗?

不建议。Geofeed 应反映 IP 的真实使用地,虚假声明可能被数据库忽略或标记为不可信。

如仍无法解决,可提交工单联系 IMIDC 7×24 技术支持。

这篇文章有帮助吗?

相关教程