跳到主要內容區塊

計資中心電子報C&INC E-paper

技術論壇

揭開IP地理定位的面紗
  • 卷期:v0070
  • 出版日期:2024-09-20

作者:邵喻美 / 臺灣大學計算機及資訊網路中心資訊網路組程式設計師


對於現今日益緊密連接的世界,IP地理定位已是不可或缺的技術,其應用廣泛出現在各種領域,使其成為許多數位服務及運作的重要一環。IP地理定位經常運用於改善個人化使用經驗、針對性廣告行銷、詐騙偵測預防、符合法令規範要求、適地性服務(Location-based services),以及牽涉公共安全的緊急服務等。然而,從IP位址到地理位置不是一件簡單的事,IP地理定位牽涉的資料量龐大、來源複雜、變動性高、涵蓋區域更是遍佈全球,本篇文章將揭開IP地理定位的面紗,一探其資料、技術、挑戰、及限制等實際情況。

 

前言 – IP位址 vs. IP地理定位

IP地理定位這門技術在現代數位版圖中扮演一個重要的角色,也就是將網際網路(Internet)這個虛擬數位世界映射到地球上的實際位置。透過精確定位一個IP位址,IP地理定位技術可讓我們介接網際網路虛擬空間與實際地理位置之間的鴻溝。這門技術不僅止用於找到某個設備所在地點,更可運用在商業應用上,例如線上服務營運商、金融機構、搜尋引擎、廣告商、及所有提供線上購物等電子商務服務等機構,能夠透過IP地理定位技術提供客戶其所在地區最好的商品及服務。此種IP地理定位服務對於預防網路詐騙、管理數位智財權、及提供針對性的行銷內容與定價也至關重要。

基於各種線上服務產業對於IP地理定位資訊的高度依賴,許多商業IP地理定位服務也應運而生,從免費、付費、到企業專用等類型皆有。這類型IP地理定位服務供應商大多宣稱具備高資料準確度,但要驗證IP地理定位服務的正確性是一件高度挑戰的任務,且需要大量基準資料。這些資料通常收集自各ISP或AS(自治系統,Autonomous System),而且必須隨意分散於各地理區域,以提高資料覆蓋率。然而實際上,這種資料通常不是隨手可得的,接下來讓我們探討IP地理定位技術的資料來源、取得方式、及判斷機制。

 

IP地理定位的資料基礎

  1. IP位址分佈

IPv4協定採用32位元位址,理論上此位址空間可提供4,294,967,297(2^32)個IP位址。IPv6協定則採用128位元位址,其位址空間可容納更多IP位址(2^128),但也是有限的。基於網際網路要求每個上網設備的IP位址必須獨一無二,因此全世界IP位址空間的分配是嚴格規範的。

IANA(The Internet Assigned Numbers Authority)就是掌管全球IP位址分配、AS號碼分配、DNS系統的根領域(root zone)管理、及其他網際網路協定相關規範的非營利組織。IANA負責將大範圍IP位址空間區段分配給區域網際網路管理機構(Regional Internet Registries, RIRs),包含 AFRINIC(非洲)、APNIC(亞太地區)、ARIN(美加及部分加勒比海島嶼)、LACNIC(拉丁美洲及部分加勒比海島嶼)、RIPE NCC(歐洲、中東、及中亞地區)。這些RIR再將負責的IP位址區塊分配給本地網際網路管理機構(Local Internet Registries, LIRs),例如 APNIC會將部分IP區段指派給臺灣網路資訊中心(Taiwan Network Information Center, TWNIC)。所有IP管理機構都會把其餘可用的位址空間分配給需要連到公共網際網路的組織。

 

  1. 自治系統(Autonomous System)

自治系統是指一個擁有可自行使用之IP位址空間的系統組織。該組織必須先註冊為一個AS,取得一個獨特的自治系統號碼(Autonomous System Number, ASN)並用以識別其自治網路。

網際網路服務商(ISP)是最常見的AS營運者,不過不僅於此,實際上任何想在網際網路上使用自己IP位址的組織都可算是一個AS。AS組織通常可任意自行運用其分配到的IP位址,甚至任何地理位置。他們可將一段IP位址分配給同一企業下位於任何地理位置的任何AS單位,甚至分租給完全不同地點的其他組織。

因此,唯一最準確的IP地理資料來自於各AS營運者,也就是唯一能夠確認他們的IP位址用於何處。然而,AS卻沒有與其他單位分享其內部資訊的義務,除了司法管轄範圍內的執法機構。

市面上的商業IP地理資料服務商並沒有取得AS內部資料的管道,不過有些服務商卻宣稱具備與ISP之間的整合服務,或者直接從ISP取得資料。但全球共有8萬多個註冊的AS組織,其中超過6萬個隨時都在運作,要與這麼多AS保持商業關係實在並非可行之事。從少數本地ISP取得資料可能可以某個程度改進區域IP地理資料正確性,但以全球規模角度而言則是不夠的。

 

IP地理定位資訊服務商如何取得其資料

  1. Whois資料庫

Whois是目前最常見的IP地理位置資料來源。Whois資料庫來自於區域及本地管理組織(RIR/LIR)的挹注,這些組織有義務公開其負責的註冊資料,這些資料揭露包含ISP及各組織註冊的IP位址資訊。IP地理資訊服務商可利用RIS網站、API、或大量存取方式向這些管理組織取得資料。Whois資料經常更新,內容包含IP位址區段,以及註冊該IP區段的組織資訊。此外也可能包含登記組織的地址,或者網路所在位置座標等,但這些都不是被強制要求的。

Whois資料有多準確呢?全球Whois資料庫單就IPv4就包含約一千萬筆紀錄,其中部分資料可做為非常精確的IP地理位置資料來源。舉例來說,一家擁有一個或一組固定IP位址的網咖,在本地管理組織(RIR)資料庫登記其店家地址,那麼這種情形下,其IP地理位置資訊的準確精度可達到街道地址。然而大部分情況,若IP使用組織登記不正確或過時的資訊,或將註冊的位址區段授權給其他團體使用,那麼其紀錄就無法顯示正確的IP使用地點。

 

  1. BGP資料

邊界閘道協定Border Gateway Protocol(BGP)是一種全球網際網路位址路由協定,用於AS之間交換路由資訊的外部閘道協定。BGP會維護並宣告網際網路位址區段前置碼(prefix)及偏好路徑來達到路由目的。

當一個AS組織希望在網際網路上使用某IP位址區段時,必須將此資訊宣告給鄰近組織:我負責這段前置碼IP區段,所以任何要與此範圍內設備通訊的流量都傳給我。此宣告訊息將會散播到全世界所有連線組織,通知他們如何把流量傳給該IP區段。

那麼BGP資料如何用於IP地理位置資訊呢?首先,不同於Whois顯示特定IP位址區段登記的組織,BGP資料可透露實際使用IP位址的組織,而此項資訊不一定跟Whois註冊資料相同。舉例來說,假設一家位於美國地址的美國公司向ARIN註冊一段IP位址區段,但卻被一個向RIPE登記在土耳其的AS 使用。那麼有極大可能這段IP位址在土耳其使用,此項資訊可提高IP地理位置的準確度。其次,BGP資料也可顯示那些IP位址根本沒被使用,因此無須嘗試取得其地理位置。

 

  1. 實地驗證資料

其他還有許多可用於IP地理位置的資料來源可被稱為實地驗證資料,最佳範例就是直接來自使用者、透過行動手機或平板等啟用GPS功能的設備所提交的資料。此種資料可顯示一個使用公共IP位址設備的地理位置座標,並作為該特定IP位址在那個時刻所在地理位置的實證資料。其他類似資料來源還包括:

  • 來自電子商務的資料來源,例如某客戶的帳單/送貨地址與進行該筆交易時IP位址之間的關聯
  • 已知地點的IoT設備及IP位址與設備群資料
  • 自願公開或付費取得的地理位置資料

不過,關於實地驗證資料必須注意的是,此方法只能取得特定時間點的IP地理位置資訊,而且很容易出錯,例如設備設定錯誤或故障,或者透過VPN或Proxy轉導網路等,都可能是資料收集過程中造成資料不正確的情境。

 

  1. 科學計算資料

一直以來也有許多嘗試以其他測量方式取得IP地理位置資料的解決方式。這些做法大多透過時間延遲與距離關係轉換的研究,例如三角運算(triangulation),或網路介面(路由器)最近的網路連接點(Point of Presence)。不過全球網路流量介面非常複雜,這種假設兩個網路介面之間的時間延遲和兩者之間實體距離成比例的假設並不一定正確,例如以下情況:

  • 有些大型ISP會隱藏其內部子網路,因此外界看不到其內部節點而無法計算
  • 實際運作的路由決策是基於”最低成本”(least cost)路由原則,而非一般學術理論假設的最短路徑
  • 基於服務品質(Quality of Service, QoS)考量,有些網路介面也可能設定為刻意延遲

因此,時間延遲與距離之間的關係是不一致且無法作為估算的基礎。到目前為止,沒有任何一個基於時間延遲三角運算的理論被引用於IP地理定位服務,也不大可能成為全球商業性質IP地理定位服務的主要實作技術。

 

  1. DNS反解資料

網域名稱系統(Domain Name System, DNS)可說是網際網路的電話簿。通常DNS是用來將網域名稱轉換成IP位址,讓網頁瀏覽器能順利載入網際網路資源。同時,DNS也可以反向運作,你可以向DNS查詢某個IP位址連結哪個網域名稱紀錄。此種與IP位址連結的文字紀錄並非強制性,因為當某個上網設備不需要提供公開網際網路服務時,設定IP位址的網域名稱也就沒甚麼必要。不過,有些ISP會基於內部識別用途利用此種文字記錄為IP位址加註標記。

有些DNS紀錄可用來透露地理位置特性,例如,假設目標IP位址或沿途最後一個路由器的DNS網域名稱為p1-0-0.sanjose1.br2.bbnplanet.net,那麼該IP位址有可能就位於美國加州聖荷西市。這是一種利用可解讀的DNS網域名稱判斷IP位址所在區域的附加優勢。

不過,這種利用DNS反解推算IP地理位置資訊的方法也有其限制,例如,許多網路介面沒有指定的DNS名稱、錯誤命名導致推估出不正確的地點、城市名稱經常會重複出現在不同國家或區域,例如哥斯大黎加和美國加州都有聖荷西市、以及由於缺乏全球共通的規範及命名規則,使得這些紀錄需要人工處理,既費時又容易出錯。

 

IP地理定位技術

IP地理定位服務商可從多重來源取得其資料,不過沒有任何一項可被視為唯一且無庸置疑的正確資料來源。當資料之間可彼此互相佐證,也就是多個資料來源都指出相同的IP地理位置時,事情就簡單了。不過最常見的是,從不同來源取得的資料互相牴觸,這就是棘手的部分。經常有人說,IP地理位置資訊是科學與藝術的結合。接下來就談談藝術的部分,也就是猜測的藝術!讓我們看看一般IP地理位置服務商要處理的問題。

  1. IP地理定位的挑戰
    1. 假設我們手上有一筆實地驗證資料,例如由使用者自己提交的資訊,其中顯示某IP位址X.X.X.5今天使用於美國紐約市曼哈頓某處。
    2. Whois資料顯示上述IP所屬的IP位址區段 X.X.X.0 – X.X.X.255註冊在一家位於美國加州安大略市的公司下。
    3. BGP資料則顯示該IP位址由某個註冊在美國德州奧斯丁市的AS組織宣告,且其IP前置碼長度為/22。

根據以上情境,讓我們試著回答以下問題:

  • 該IP位址的實際地理位置在哪裡?我們能說 X.X.X.0 – X.X.X.255 IP區段位於紐約嗎?
  • 或甚至整段 /22 IP區段也在紐約?
  • 也許只有 X.X.X.5 位在紐約,而IP網段的其他部分則遠在他方?
  • 還是,我們取得的實地驗證資料根本就是錯的,其實際位置根本在加州或德州?

如果我們剛好從鄰近位址紀錄取得更多資料點證據,那麼當這些資料支持其中一個最有可能的猜測論點時,才有可能增加我們對推論結果的信心。然而,如果資料之間有衝突,這會讓地理位置估算非常困難。萬一我們得到IP位址X.X.X.128就在幾天前於加拿大多倫多使用的更進一步證據呢?那麼這個IP地理位置是否最近剛從加拿大移到美國,或者只是IP區段內的一部分,還是某個部分出錯?

資料精細度(data granulation)是另一個複雜的問題。IP位址通常以區段方式配置,區段越大對於全球路由較有利。如果IP區段切割得太小,那麼全世界的路由表將會大幅擴增,導致路由器面臨記憶體溢流的問題。因此,IP地理定位服務可以合理地假設,某段連續的IP位址很可能具備相近的地理位置關係。

然而,確定IP位址區段界線是一件棘手且牽涉專業理論推測的過程,而且可能需要人為介入。舉例來說,透過區段中IP位址DNS反解資料的相似性,可能可以推測屬於相同網路。還有,可在追蹤IP位址傳送路徑過程(traceroute),尋找封包傳遞沿途節點IP位址之間的相關性。

但無論選擇以上哪一種方法,通常都很容易出錯:

  1. 進一步分析
    1. 資料來源的挑戰
    1. 降低錯誤的複雜性
    • DNS紀錄不一定都存在,或者很可能是錯誤的。
    • 路徑追蹤(traceroute)不總是能夠顯示傳送路徑上的所有節點,因為有些節點不回應ICMP要求。
    • 網路節點之間不一定都存在完美的相關性,因為同一個路由設備通常會使用多個IP位址於連接埠上。因此traceroute結果可能顯示不同IP位址,但實際上是同一個路由設備,因而導致錯誤推測。

IP地理定位服務商如何運作

初階IP地理定位服務商:很可能使用較少的資料來源,通常只採用Whois資料,因而限制其決策範圍的選擇項目。這會讓處理過程較容易且快速,但相對就犧牲了準確度。

高階IP地理定位服務商:則可能將許多最後判斷決策交由人力處理,再加上某種程度的自動化程序,藉以提高其資訊準確度。不過,人力處理並不一定保證較佳結果,因為人力也可能出錯,同時讓整個流程變慢。因此,通常商業IP地理位置資料庫更新速度通常只能以月分為單位,頂多每周更新。

 

結論

基於以上介紹的IP地理定位相關資料及技術,顯然要達到精準定位並不是一件容易的事,眾IP地理定位服務商各擁有其專精的地理區域、資料精細度、及運算技術,使用者運用時建議多方參考不同IP地理定位服務的資訊,並且記得:there’s no such thing as 100% accuracy.

 

參考文獻

  1. https://en.wikipedia.org/wiki/Internet_geolocation
  2. https://www.bigdatacloud.com/blog/how-accurate-can-ip-geolocation-get
  3. https://geotargetly.com/blog/how-ip-geolocation-works