IP 定位不準的原因:為什麼 11 個 IP 庫給出不同位置
IP 定位不準是常態。IP 地址本身不帶座標,所有“歸屬地”都是資料庫根據註冊資訊、路由和測量推斷出來的,各家資料來源和更新節奏不同,結果自然有出入。國家級通常比較一致,城市級落到鄰近城市、甚至落到另一個省都不少見。判斷哪個結果更可信,要看多家是否一致,以及註冊資訊和網路型別能不能對上,而不是隻信某一家。
下文依次講資料來源、分歧原因、自查步驟,最後說明 cdnping IP 與環境檢測 頁面上“11 個地理庫投票”和置信度怎麼讀。
IP 地址本身包含位置資訊嗎?
不包含。IPv4 地址是 32 位的數字,IPv6 是 128 位,協議裡沒有任何欄位寫著“這個地址在上海”。
地址是逐級分配的:IANA 把大塊地址分給五個區域網際網路註冊管理機構(RIR,亞太地區是 APNIC),RIR 再分給運營商、雲廠商或企業,運營商再分到具體的都會網路、機房或家庭寬頻。只有最後一層的使用者知道地址實際在哪裡用,而這一層通常不公開。
所以 IP 地理庫做的是用公開線索拼出最可能的位置。線索不同、拼法不同,答案就不同。
IP 地理庫的資料從哪裡來?
常見來源大致有四類,各家的組合和權重不一樣。
1. 註冊資訊(RIR / WHOIS / RDAP)
RIR 資料庫記錄了每個網段分給了誰,帶有組織名稱、國家程式碼,有時還有地址。國家級判斷大多以它為起點。
問題在於,註冊資訊寫的是持有者的登記地,不一定是使用地。總部在 A 國的雲廠商,可以把同一個註冊段拿到 B 國的機房去用;全國性運營商的網段,登記地址可能就是總部所在城市。
2. 路由資料(BGP 與 ASN)
從 BGP 路由表可以看到某個網段由哪個自治系統(ASN)宣告、在哪些位置宣告。ASN 的歸屬能幫助區分機房、家寬和行動網路,宣告位置能提供地理線索。
但同一個網段可以在多個地方同時宣告(Anycast),也可以隨時遷移。路由只說明流量從哪裡進出,不等於使用者在哪裡。
3. 主動測量(延遲與路由跟蹤)
有的資料庫會從分佈在各地的探針向目標 IP 發包,測往返延遲,再用光在光纖中傳播速度的上限反推距離範圍。多個探針的結果交叉,可以圈出一個大致區域。
這種方法擅長判斷“這個 IP 不可能在某地”,對具體城市只能給出範圍。目標不響應 ping、鏈路繞路、中間有隧道,都會讓結果偏移。
4. 運營商自報與使用者反饋
部分網路運營者會發布 geofeed(RFC 8805 定義的 CSV 格式),宣告自己每個網段在哪個國家和城市使用。有的資料庫採納,有的不採納,採納的時間也不同。
另一類來源是使用者糾錯和應用側資料,例如有人提交“這個 IP 實際在某城市”。這類資料有時很準,有時只代表某個時間點。
為什麼不同 IP 庫給出的位置不一樣?
把四類來源放在一起看,分歧主要來自下面幾種情況:
| 分歧原因 | 典型表現 | 判斷方法 |
|---|---|---|
| 註冊地與使用地不同 | 有的庫顯示總部城市,有的顯示機房城市 | 查 RDAP,看註冊組織和國家 |
| 更新滯後 | 網段剛換了用途或地區,部分庫還是舊位置 | 看多數庫是否已經改口 |
| 廣播 IP(註冊在 A 地、在 B 地使用) | 國家都不一致,一部分說 A 國,一部分說 B 國 | 對比註冊國家和多數庫給出的使用國家 |
| Anycast | 各庫給出互不相關的城市 | 看 ASN 是否屬於 CDN 或 DNS 服務商 |
| 城市級靠推斷 | 國家、省份一致,城市各說各話 | 只信到省一級 |
| 行動網路與 CGNAT | 定位落在運營商閘道器所在城市 | 看 IP 型別是否為移動 |
| 資料庫預設值 | 只能判斷到國家時,填國家中心點或首都 | 座標落在國家幾何中心附近時要警惕 |
更新滯後最容易被忽略。很多 IP 地理庫按固定週期釋出新版本,網站接入後還可能快取一段時間。一個網段從 A 地機房遷到 B 地,各庫陸續更新,中間會有一段各家說法不一的過渡期。
廣播 IP 和原生 IP 的區別也和地理庫直接相關:廣播 IP 註冊在一個國家、宣告到另一個國家使用,地理庫最容易在這裡分成兩派。概念細節見 原生 IP 和廣播 IP 的區別。
城市級定位能準到什麼程度?
各資料庫對自己精度的說法不同,也沒有統一的公開基準,這裡不給具體百分比。按層級看,大致是這樣:
- 國家級:多數情況下各庫一致,分歧集中在廣播 IP、Anycast 和剛遷移的網段。
- 省份 / 州級:家寬和行動網路一般能對上,機房 IP 取決於機房登記是否準確。
- 城市級:本質上是推斷。家寬 IP 往往定位到運營商匯聚節點所在的城市,而不是你家所在的區縣;行動網路更粗,可能整個省都落到同一個城市。
- 經緯度座標:很多查詢結果給出小數點後好幾位的座標,這不代表精度。它通常是城市中心點或資料庫內部的預設點,附帶的“精度半徑”比座標本身更值得看。
如果某個網站顯示你的 IP 在隔壁城市,多數情況下不是出了故障,城市級定位本來就是這個精度。
自己核對 IP 位置:五步檢查
下面的步驟不依賴特定資料庫,適合排查“為什麼某網站把我識別成別的地區”。
第 1 步:確認你查的是哪個出口 IP
同一臺機器可能有多個出口:IPv4 和 IPv6 走不同線路,瀏覽器和命令列走不同代理,不同網站被分流到不同出口。先分別看清楚:
# 命令列看到的 IPv4 / IPv6 出口
curl -4 https://cloudflare.com/cdn-cgi/trace
curl -6 https://cloudflare.com/cdn-cgi/trace
返回內容裡,ip= 是出口地址,loc= 是 Cloudflare 判斷的國家程式碼,colo= 是你連上的 Cloudflare 機房。瀏覽器側的出口可以開啟 /ip 檢視,頁面也做多出口檢測。如果 IPv4 和 IPv6 出口不一致,先看 IPv6 代理不生效:雙棧網路下出口不一致的排查。
第 2 步:查註冊資訊(RDAP)
RDAP 是 WHOIS 的結構化替代,返回 JSON,更好讀。下面以文件保留地址 203.0.113.10 為例,使用時換成你的出口 IP:
# 查詢 APNIC 的 RDAP 服務;地址不歸 APNIC 管時,按返回的跳轉去對應 RIR
curl -sL https://rdap.apnic.net/ip/203.0.113.10 | jq '{name, country, startAddress, endAddress}'
# 或者用傳統 whois
whois 203.0.113.10 | grep -iE 'netname|country|descr|org'
重點看 country(註冊國家)和 name / netname(網段名稱)。網段名裡常帶有機房、雲廠商或寬頻業務的標識。
第 3 步:查 ASN,判斷網路型別
whois -h whois.radb.net 203.0.113.10 | grep -iE 'origin|descr'
拿到 ASN 後看它屬於誰:家寬運營商、移動運營商、雲廠商還是 CDN。機房 IP 和家寬 IP 在地理庫裡的表現差別很大,判斷方法見 機房 IP 和家寬 IP 有什麼區別。
第 4 步:橫向比對多個庫,只信一致的部分
把多個資料庫的結果放在一起,按“國家 → 省份 → 城市”逐級看。從哪一級開始分歧,就只信到上一級。
第 5 步:用延遲做反向驗證
假設某個庫說這個 IP 在東京,而你從國內到它的往返延遲和到美國西海岸差不多,這個城市結論就站不住。延遲不能精確定位,但能排除不可能的位置。原理見 網站如何用延遲判斷你在用代理。
cdnping 的 11 庫投票和置信度怎麼讀?
/ip 頁面的“出口 IP 情報”會同時查詢 11 個地理庫,按結果投票給出位置,並附一個置信度。讀的時候可以這樣理解:
- 投票結果是多數庫認同的位置,不是某一家的答案。11 個庫裡大部分給出同一個國家和城市時,比單庫查詢更可靠。
- 置信度低,說明各庫之間有明顯分歧,這時應該展開看每個庫的具體結果。
- 國家一致、城市分散:最常見的情況,按上文說的,只信到國家或省份。
- 國家分成兩派:優先懷疑廣播 IP 或網段剛遷移,對照頁面上的 RDAP 註冊資訊和“原生 IP / 廣播 IP”判斷一起看。
- IP 型別顯示為機房:機房網段的地理資訊多來自登記,城市級更容易出現總部城市和機房城市混用。
各項檢測的資料口徑可以在 資料方法 頁面檢視。要注意,多庫一致不能證明結果就是真實位置:如果幾個庫引用了同一份上游資料,它們會一起錯。
網站把我識別成別的地區,該怎麼辦?
先分清兩種情況:
- 地理庫本身不準:你確實在 A 地直連上網,但某網站認為你在 B 地。可以向對應的資料庫提交糾錯(多數提供商有公開的糾錯入口),或者問你的運營商是否釋出了 geofeed。糾錯生效要等資料庫發版,網站側也可能還有快取。
- 出口和你以為的不一樣:分流規則、IPv6、DNS 讓部分流量走了另一個出口。用 /ip 的多出口檢測和 DNS 洩漏檢測排查,再對照 國內網站如何看到你的真實 IP 理解分流結果。
一些線上服務會按地區提供或限制功能,判斷依據往往不只是 IP 地理庫。遇到這類提示,以服務方的官方說明為準,並遵守服務條款和當地法規。
地理位置和 IP 純淨度是一回事嗎?
不是。地理庫回答“這個 IP 在哪”,信譽庫回答“這個 IP 有沒有濫用記錄、是不是代理或機房”。兩者資料來源不同,也會各自出現分歧。同一個 IP 完全可能各庫地理位置一致,信譽評分卻差很多,原因見 為什麼不同網站測出的 IP 純淨度不一樣。
如果想把出口 IP、DNS、IPv6 和 API 連通性一次查完,可以按 開發者網路自檢清單(2026 版) 逐項走,再用 首頁測速 看各家 AI API 的實際連線情況。
核對順序可以記成一句話:先確認出口,再看 RDAP 和 ASN,然後比較多個庫,在開始分歧的那一級停下,必要時用延遲排除不可能的位置。