ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
IP 與 ASN

IP 地理位置不準怎麼辦:Geofeed(RFC 8805)釋出與 MaxMind、IP2Location、ipinfo 資料庫更正

5 個步驟 6 分鐘閱讀 12 次閱讀 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 技術支援。

這篇文章有幫助嗎?

相關教程