- ฐานข้อมูลระบุตำแหน่งภูมิศาสตร์ของ IP จะเชื่อมช่วง IP เข้ากับ ประเทศ·เมือง·รหัสไปรษณีย์·เขตเวลา·พิกัด โดย ipapi.is มีทั้งฐานข้อมูล CSV ฟรีและฐานข้อมูลเชิงพาณิชย์แบบ CSV/MMDB
- รุ่นฟรีครอบคลุมพื้นที่ IPv4·IPv6 ได้ไม่ครบทั้งหมดและมีความแม่นยำต่ำกว่า แต่รุ่นเชิงพาณิชย์เป็น ฐานข้อมูลฉบับเต็ม ที่ใช้กับฟิลด์
locationของ API และอัปเดตอย่างน้อยสัปดาห์ละ 2 ครั้ง - หากจะสร้างเอง ต้องใช้ทั้ง
geoloc·geofeedจาก WHOIS, การอนุมานตำแหน่ง จากฟิลด์ที่อยู่·คำอธิบายใน WHOIS และโครงการสาธารณะอย่าง RIPE IPmap·geofeed-finder·OpenGeoFeed ร่วมกัน - ความแม่นยำอาจสั่นคลอนเมื่อเครือข่ายกระจายอยู่หลายพื้นที่ หรือมีการจัดสรรใหม่·ให้เช่า IP โดย ณ เดือนกรกฎาคม 2023 ของ RIPE NCC ค่า coverage ของ
geolocอยู่ที่ 2.3% และ coverage ของ URLgeofeedอยู่ที่ 0.17% - ข้อมูลที่เก็บมาแล้วจำเป็นต้อง เสริมข้อมูล·ทำมาตรฐาน เช่น หา พิกัดจากเมือง·ประเทศ หรือหาเมืองที่ใกล้ที่สุดจากพิกัด โดย ipapi.is ใช้ไฟล์ข้อมูลรหัสไปรษณีย์·เมือง·ประเทศของ GeoNames
โครงสร้างของฐานข้อมูลระบุตำแหน่งภูมิศาสตร์ของ IP
- IP to Geolocation Database คือฐานข้อมูลที่เก็บข้อมูลตำแหน่งภูมิศาสตร์ตามช่วง IP
- ที่อยู่ IP สามารถระบุตำแหน่งได้ด้วยข้อมูลต่อไปนี้
- ประเทศ เมือง รัฐ รหัสไปรษณีย์
- เขตเวลา
- ละติจูด ลองจิจูด
- ฐานข้อมูลของ ipapi.is แบ่งเป็นรุ่นฟรีและรุ่นเชิงพาณิชย์
- รุ่นฟรีดาวน์โหลดได้ในรูปแบบ CSV
- รุ่นเชิงพาณิชย์มีให้ทั้งรูปแบบ CSV และ MMDB
- รุ่นเชิงพาณิชย์ครอบคลุมพื้นที่ IPv4·IPv6 ทั้งหมด
- รุ่นฟรีมีเพียงบางส่วนของพื้นที่ IPv4·IPv6
- ฐานข้อมูลเชิงพาณิชย์อัปเดต อย่างน้อยสัปดาห์ละ 2 ครั้ง
ความต่างระหว่างรุ่นฟรีกับรุ่นเชิงพาณิชย์
- ฐานข้อมูลระบุตำแหน่งภูมิศาสตร์ของ IP แบบฟรีมี จำนวนรายการน้อยกว่า รุ่นเชิงพาณิชย์ และไม่ครอบคลุมพื้นที่ที่อยู่ IPv4·IPv6 ทั้งหมด
- รุ่นฟรีมีความแม่นยำของตำแหน่งภูมิศาสตร์ต่ำกว่า
- แหล่งข้อมูลหลักของรุ่นฟรีคือข้อมูล WHOIS และ RFC 8805 Geofeeds
- ฐานข้อมูลเชิงพาณิชย์คือฐานข้อมูลฉบับเต็มที่ใช้กับฟิลด์
locationของ API ของ ipapi.is - รุ่นเชิงพาณิชย์คำนวณตำแหน่งจากหลายแหล่งข้อมูลร่วมกัน
- ระเบียน WHOIS
- การวัด latency แบบ active จาก ping และ traceroute
- RFC 8805 Geofeeds
- การค้นหา reverse DNS
ฟอร์แมตฐานข้อมูลและฟิลด์ความแม่นยำ
- ไฟล์ฐานข้อมูลอยู่ในรูปแบบ CSV หรือ MMDB
- ฟิลด์หลักจะเก็บช่วง IP ตำแหน่ง พิกัด และความแม่นยำไว้ด้วยกัน
ip_version: IPv4 คือ4, IPv6 คือ6start_ip,end_ip: IP เริ่มต้น·สิ้นสุดของช่วงเครือข่ายcontinent,country_code,country,state,city,ziptimezone,latitude,longitudeaccuracy
accuracyใช้ระบุระดับความแม่นยำโดยประมาณของข้อมูลตำแหน่งภูมิศาสตร์ตั้งแต่ 1 ถึง 51: แม่นยำสูงมาก โดยปกติไว้ใจได้ถึงระดับเมือง2: แม่นยำสูง โดยทั่วไปไว้ใจได้ถึงระดับเมือง3: แม่นยำปานกลาง ไม่น่าเชื่อถือมากนักในระดับเมือง4: แม่นยำต่ำ โดยปกติแม่นในระดับประเทศ5: แม่นยำต่ำมาก คาดหวังได้เพียงระดับประเทศ
วิธีดูตัวอย่าง MMDB
- สามารถดาวน์โหลดตัวอย่าง MMDB ได้ด้วย
curl - สามารถอ่านตัวอย่างด้วย mmdbctl
mmdbctl read -f json-pretty 0.239.249.144 locationSample.mmdb
- ตัวอย่างผลลัพธ์จะคืนข้อมูลต่อไปนี้สำหรับ IP
0.239.249.144- เมือง
Copenhagen - ประเทศ
Denmark - พิกัด
55.67594,12.56553 - เครือข่าย
0.239.249.144-0.239.249.151 - แหล่งที่มา
geofeed|https://api.arelion.com/public/v1/geolocation
- เมือง
การใช้งานและข้อจำกัดของการระบุตำแหน่ง IP
- การระบุตำแหน่งภูมิศาสตร์ของ IP คือกระบวนการแมปที่อยู่ IP เข้ากับ ตำแหน่งทางภูมิศาสตร์ ที่นิยามด้วยละติจูด·ลองจิจูด
- ธุรกิจและผู้ให้บริการออนไลน์นำข้อมูลตำแหน่งภูมิศาสตร์ไปใช้ได้หลายรูปแบบ
- โฆษณาแบบกำหนดกลุ่มเป้าหมาย
- การตรวจจับและป้องกันการทุจริต
- การทำเนื้อหาให้เหมาะกับท้องถิ่น
- DRM และการปฏิบัติตามข้อกำหนด
- ความปลอดภัยเครือข่าย
- การวิเคราะห์และอินไซต์
- มีเหตุผลเชิงโครงสร้างที่ทำให้การระบุตำแหน่ง IP ไม่แม่นยำเสมอไป
- เครือข่าย IPv4·IPv6 ที่ได้รับการจัดสรรอาจกระจายอยู่หลายพื้นที่ทางภูมิศาสตร์
- มีเครือข่ายที่ออกแบบมาให้ครอบคลุมหลายพื้นที่ เช่น เครือข่ายมือถือหรือเครือข่ายดาวเทียม
- เมื่อ Regional Internet Registry หรือบริษัทให้เช่า IP มีการจัดสรรใหม่หรือจัดสรรต่อ เครือข่าย IP ตำแหน่งก็อาจเปลี่ยนได้
- การระบุตำแหน่งที่อยู่ IP เป็นเรื่องซับซ้อน แต่ก็สามารถให้ความแม่นยำในระดับที่ API ที่อยู่ IP มองข้ามได้ยาก
งานที่ต้องทำเมื่อสร้างจากศูนย์
- ที่อยู่ IP แต่ละรายการบนอินเทอร์เน็ตมีองค์กรใดองค์กรหนึ่งเป็นเจ้าของหรือดูแล
- Regional Internet Registry(RIR) เช่น ARIN และ APNIC จะเก็บข้อมูลความเป็นเจ้าของไว้ในฐานข้อมูล WHOIS
- ระเบียน WHOIS ไม่ได้มีข้อมูลตำแหน่งภูมิศาสตร์ของเครือข่ายที่จัดสรรไว้อยู่เสมอไป
- องค์กรเจ้าของเครือข่ายสามารถใช้ IP ในตำแหน่งทางภูมิศาสตร์ที่ต้องการได้ และยังอาจจัดสรรให้บุคคลที่สามหรือปล่อยเช่าบล็อก IP ได้ด้วย
- การรวบรวมข้อมูลตำแหน่งภูมิศาสตร์แบ่งใหญ่ ๆ ได้เป็น 3 แนวทาง
- ดึงข้อมูลตำแหน่งโดยตรง เช่น
geoloc,geofeedจากระเบียน WHOIS - อนุมานตำแหน่งทางอ้อม จากที่อยู่ไปรษณีย์ คำอธิบาย และข้อมูลประเทศใน WHOIS
- ใช้โครงการสาธารณะอย่าง RIPE IPmap, geofeed-finder, OpenGeoFeed
- ดึงข้อมูลตำแหน่งโดยตรง เช่น
ข้อมูลตำแหน่งโดยตรงแยกตาม RIR
-
RIPE NCC
- อ็อบเจ็กต์
inetnum,inet6numของ RIPE NCC ใช้จัดสรรเครือข่าย IP ให้กับองค์กร - ข้อมูลตำแหน่งภูมิศาสตร์อาจให้ผ่าน 2 แอททริบิวต์คือ
geolocและgeofeed geolocเก็บละติจูดและลองจิจูดในรูปแบบสตริง- ตัวอย่าง:
47.855374 12.132041 - ณ เดือนกรกฎาคม 2023 ฐานข้อมูลของ RIPE NCC มี
inetnum4,190,644 รายการ และinet6num819,381 รายการ - ในจำนวนนี้มีอ็อบเจ็กต์ที่มีแอททริบิวต์
geolocอยู่ 114,389 รายการ คิดเป็น coverage รวม 2.3% geofeedเก็บ URL ของไฟล์ CSV ตามรูปแบบ RFC 8805- URL ของ geofeed อาจถูกบันทึกไว้ในแอททริบิวต์
geofeedโดยตรง หรือในรูปแบบGeofeed {URL}ภายในแอททริบิวต์remarks - ณ เดือนกรกฎาคม 2023 RIPE NCC มี URL geofeed ในแอททริบิวต์
remarksจำนวน 6,643 รายการ และมีระเบียน WHOIS ที่มีแอททริบิวต์geofeedจำนวน 2,035 รายการ - coverage ของ URL geofeed อยู่ที่ 0.17% แต่ตัวเลขนี้อาจทำให้เข้าใจผิดได้ เพราะไฟล์ geofeed หนึ่งไฟล์อาจครอบคลุมหลายเครือข่าย
- อ็อบเจ็กต์
-
ARIN
- ARIN ให้ข้อมูลตำแหน่งภูมิศาสตร์โดยใส่ URL ของ geofeed ไว้ในแอททริบิวต์
Commentของอ็อบเจ็กต์NetRange - เคยมีการขอเพิ่มแอททริบิวต์ geofeed โดยเฉพาะ แต่ถูกปฏิเสธด้วยเหตุผลว่า
CommentหรือRemarkก็เพียงพอแล้ว - ต่างจาก RIPE NCC ฐานข้อมูลของ ARIN ไม่ใช้แอททริบิวต์
geoloc
- ARIN ให้ข้อมูลตำแหน่งภูมิศาสตร์โดยใส่ URL ของ geofeed ไว้ในแอททริบิวต์
-
LACNIC
- LACNIC มีความกระตือรือร้นเรื่องการรองรับตำแหน่งภูมิศาสตร์มากกว่า ARIN
- LACNIC ให้บริการ Geofeed Service ที่สมาชิกสามารถส่งข้อมูลตำแหน่งภูมิศาสตร์ของที่อยู่ IP ที่ถือครองอยู่ได้
- ข้อมูลสาธารณะมีให้ที่ milacnic.lacnic.net/lacnic/geofeeds
- ฐานข้อมูล WHOIS ของ LACNIC ให้ข้อมูลตำแหน่งภูมิศาสตร์ในระดับเมืองโดยปริยาย
- สามารถดาวน์โหลดฐานข้อมูลของ LACNIC ได้จากเซิร์ฟเวอร์ FTP ftp.lacnic.net/lacnic/dbase/
-
AFRINIC และ APNIC
- AFRINIC ระบุว่าไม่ได้ให้บริการตำแหน่งภูมิศาสตร์ และไม่มีความสัมพันธ์อย่างเป็นทางการหรือเชิงปฏิบัติการกับผู้ให้บริการตำแหน่งภูมิศาสตร์
- AFRINIC รองรับการใช้ URL geofeed ในแอททริบิวต์
remarksคล้ายกับ RIPE NCC - APNIC รองรับตำแหน่งภูมิศาสตร์ในระดับใกล้เคียงกับ RIPE NCC
- แอททริบิวต์
geoloc - URL geofeed ในแอททริบิวต์
remarks
- แอททริบิวต์
- APNIC แสดงท่าทีเปิดกว้างต่อการปรับปรุงการรองรับข้อมูลตำแหน่งภูมิศาสตร์
วิธีอนุมานตำแหน่งจาก WHOIS
- เป้าหมายหลักของ WHOIS คือให้ข้อมูลผู้จดทะเบียนขององค์กรที่เป็นเจ้าของหมายเลขอินเทอร์เน็ต เช่น ที่อยู่ IP หรือหมายเลข AS
- WHOIS มักมีที่อยู่ไปรษณีย์และประเทศของสำนักงานใหญ่หรือสถานที่บริหารจัดการขององค์กรรวมอยู่ด้วย
- บางครั้งที่อยู่ไปรษณีย์ขององค์กรอาจตรงกับสถานที่ใช้งานที่อยู่ IP แต่ก็ไม่ใช่เสมอไป
- สำหรับองค์กรขนาดใหญ่ ที่อยู่สำหรับการบริหารจัดการอาจไม่ตรงกับตำแหน่งของที่อยู่ IP ทั้งหมดขององค์กรนั้น
-
การอนุมานใน RIPE NCC
- ในอ็อบเจ็กต์
inetnum,inet6numของ RIPE NCC แอททริบิวต์ที่นำมาใช้ได้มีดังนี้country: ให้ความแม่นยำได้เพียงระดับประเทศdescr: คำอธิบายเครือข่าย ซึ่งอาจมีข้อมูลตำแหน่ง·ที่อยู่netname: แยกวิเคราะห์ได้ยากและความน่าเชื่อถือต่ำaddress: โดยเคร่งครัดแล้วเป็นแอททริบิวต์ของอ็อบเจ็กต์roleและเก็บที่อยู่ไปรษณีย์
- แอททริบิวต์
countryระบุรหัสประเทศแบบตัวอักษร ISO 3166-2 แต่ไม่ได้บอกว่าประเทศนั้นเป็นที่ตั้งสำนักงานใหญ่ ดาต้าเซ็นเตอร์ หรือผู้ใช้ปลายทาง - แอททริบิวต์
descrเป็นคำอธิบายแบบอิสระ แต่บางองค์กรใส่ข้อมูลตำแหน่งเครือข่ายและที่อยู่ไว้ ทำให้มีประโยชน์ต่อการอนุมานตำแหน่งภูมิศาสตร์ addressอาจให้ความแม่นยำสูงได้ แต่หากสมมติว่าที่อยู่ไปรษณีย์ของอ็อบเจ็กต์ role ตรงกับสถานที่ใช้งานของที่อยู่ IP ก็อาจทำให้เกิดข้อผิดพลาด
- ในอ็อบเจ็กต์
-
การอนุมานใน ARIN
- ใน ARIN แอททริบิวต์ WHOIS ต่อไปนี้ค่อนข้างเชื่อถือได้สำหรับองค์กรขนาดเล็ก หรือองค์กรที่กระจุกอยู่ในสถานที่เดียว
AddressCityStateProvPostalCodeCountry
- องค์กรอย่างมหาวิทยาลัย โรงพยาบาล หรือหน่วยงานรัฐ อาจใช้งานที่อยู่ IP ในอ็อบเจ็กต์
NetRangeณ สถานที่เดียวกับที่อยู่ไปรษณีย์สำหรับการบริหารจัดการ - แต่ในกรณีของบริษัทใหญ่หรือองค์กรระดับประเทศที่มี
NetRangeจำนวนมาก ที่อยู่ไปรษณีย์สำหรับการบริหารจัดการอาจไม่ตรงกับสถานที่ใช้งาน IP จริง - ตัวอย่าง Google Fiber หากใช้ที่อยู่จาก WHOIS จะถูกระบุเป็น Mountain View, California แต่ผู้ให้บริการตำแหน่งภูมิศาสตร์ส่วนใหญ่จะระบุ IP นั้นว่าอยู่ที่ San Antonio, Texas
- ใน ARIN แอททริบิวต์ WHOIS ต่อไปนี้ค่อนข้างเชื่อถือได้สำหรับองค์กรขนาดเล็ก หรือองค์กรที่กระจุกอยู่ในสถานที่เดียว
-
LACNIC, AFRINIC, APNIC
- LACNIC ให้ข้อมูลตำแหน่งภูมิศาสตร์อยู่แล้วในฐานข้อมูล WHOIS จึงไม่จำเป็นต้องอนุมานเพิ่มเติม
- AFRINIC ใช้ฟอร์แมตฐานข้อมูล WHOIS แบบเดียวกับ RIPE NCC จึงใช้หลักการเดียวกันได้
country,descraddressของอ็อบเจ็กต์role
- APNIC ก็ใช้ฟอร์แมตฐานข้อมูล WHOIS แบบเดียวกับ RIPE NCC เช่นกัน จึงใช้หลักการเดียวกัน
โครงการตำแหน่งภูมิศาสตร์สาธารณะ
-
RIPE IPmap
- RIPE IPmap เคยเป็น API ที่ให้ข้อมูลตำแหน่งภูมิศาสตร์ของโครงสร้างพื้นฐานอินเทอร์เน็ตหลัก
- ดูเหมือนว่าจะไม่ได้รับการบำรุงรักษาอีกต่อไป และดูเหมือนว่าไม่มีคอนทริบิวชันใหม่หลังปี 2019
- RIPE IPmap อนุมานตำแหน่งภูมิศาสตร์ของที่อยู่ IP ด้วยหลายเอนจิน
- เอนจิน
latencyและsingle-radiusใช้ค่าการวัดจาก RIPE Atlas เพื่อให้รัศมี latency ของที่อยู่ IP - ค่าการวัด RTT ต่ำสุดให้ขอบบนของระยะทางสูงสุดที่เป็นไปได้ เนื่องจากข้อจำกัดความเร็วแสงในสื่อใยแก้วนำแสง
- เอนจิน
reverse-dnsดึงตำแหน่งระดับเมืองจากชื่อโฮสต์ในระเบียน PTR - สามารถดาวน์โหลดฐานข้อมูล RIPE IPmap ได้จาก https://ftp.ripe.net/ripe/ipmap/
- ความแม่นยำและ coverage ของโครงการนี้ลดลงมากตามข้อมูลในเว็บไซต์ของผู้ดูแลเดิม
-
geofeed-finder
- geofeed-finder เป็นเครื่องมือโอเพนซอร์สสำหรับค้นหาและดึงไฟล์ geofeed จากข้อมูล WHOIS
- เครื่องมือนี้ยังตรวจสอบความเป็นเจ้าของ prefix, จัดการแคช และตรวจสอบรหัส ISO ด้วย
- สามารถดึง geofeed จากข้อมูล WHOIS ได้ตาม RFC 9092
- เนื่องจาก coverage ของข้อมูล geofeed ในเครือข่ายทั้งหมดต่ำมาก ประโยชน์ในการใช้งานจริงจึงมีจำกัด
-
LACNIC Geofeeds Service และ OpenGeoFeed
- LACNIC Geofeeds Service ให้ข้อมูลตำแหน่งภูมิศาสตร์ของสมาชิก LACNIC จำนวนมาก
- ข้อมูลเปิดให้ดาวน์โหลดสาธารณะที่ milacnic.lacnic.net/lacnic/geofeeds
- เป็นโครงการสำคัญในแง่ที่แสดงให้เห็นว่าสามารถเก็บข้อมูลตำแหน่งภูมิศาสตร์ได้ในระดับ RIR
- OpenGeoFeed เป็นโครงการโอเพนซอร์สที่รวบรวม geofeed สาธารณะที่เผยแพร่เองตาม RFC 9092
- OpenGeoFeed มีไฟล์เดียวที่รวมไฟล์ geofeed สาธารณะที่ทราบทั้งหมดไว้ที่ opengeofeed.org/feed/public.csv
- OpenGeoFeed ดูมีอนาคต แต่ดูเหมือน coverage ของ geofeed จะไม่อัปเดตนัก และมีโอกาสต่ำที่แหล่งข้อมูลจะได้รับการอัปเดตบ่อย
การเสริมข้อมูลและการทำมาตรฐาน
- ข้อมูลตำแหน่งภูมิศาสตร์ดิบที่รวบรวมมาจากหลายแหล่งอาจไม่สมบูรณ์หรือไม่สอดคล้องกัน
- อาจมีทั้งระเบียนที่มีข้อมูลประเทศ·เมืองแต่ไม่มีพิกัด และระเบียนที่มีพิกัดแต่ไม่มีข้อมูลประเทศ·เมือง
- หากระเบียนต้นทางมีเพียงประเทศ ความแม่นยำก็มักไปได้ไม่เกินระดับประเทศ
- ข้อมูลที่รวบรวมมาจำเป็นต้อง เสริมข้อมูล·แปลงให้อยู่ในฟอร์แมตร่วมกัน
- การเสริมข้อมูลทำโดยใช้ฐานข้อมูลภูมิศาสตร์โอเพนซอร์ส
- งานเสริมข้อมูลแบ่งเป็น 2 กรณี
- ค้นหาละติจูดและลองจิจูดจากคู่เมือง·ประเทศ
- ค้นหาเมืองและประเทศที่ใกล้ที่สุดจากละติจูด·ลองจิจูด
- ipapi.is ใช้ฐานข้อมูลต่อไปนี้ในการเสริมข้อมูลตำแหน่งภูมิศาสตร์
- GeoNames Postal Code Files: รหัสไปรษณีย์ทั่วโลก โดยยกเว้นบางประเทศด้วยเหตุผลทางกฎหมาย
- cities500.zip: เมืองที่มีประชากรมากกว่า 500 คน
- countryInfo.txt: เมทาดาทาของประเทศ เช่น เมืองหลวง ประชากร และทวีป
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผมอ่านบทความของเขามาตั้งแต่ก่อนเข้าร่วม IPinfo แล้ว และที่ IPinfo เราให้บริการ ข้อมูลตำแหน่งทางภูมิศาสตร์ของ IP
เราใช้วิธีที่ขยายต่อจากแนวทางที่อธิบายไว้ที่นี่ และแม้จะใช้ชุดข้อมูลสาธารณะบางส่วน แต่ข้อมูลตำแหน่งหลักมาจาก การวัดแบบอิง ping
เราส่ง ping ไปยังที่อยู่ IP จากเซิร์ฟเวอร์หลายแห่งทั่วโลก แล้วใช้การวัดพหุภาคี (multilateration) เพื่อระบุตำแหน่ง ping จากเซิร์ฟเวอร์เดียวให้ข้อมูลหนึ่งมิติได้แค่ว่าอยู่ที่ไหนสักแห่งในรัศมีหนึ่ง แต่ถ้าทำซ้ำจากหลายเซิร์ฟเวอร์ ตำแหน่งก็จะค่อย ๆ แม่นยำขึ้น
หากวัดมากพอ ก็สามารถไปถึงความแม่นยำใกล้ระดับรหัสไปรษณีย์ได้ ปัจจุบันมีเซิร์ฟเวอร์ตรวจจับมากกว่า 600 เครื่องทั่วโลก และยังเพิ่มขึ้นเรื่อย ๆ
ข้อมูลสาธารณะมักเก่า หรือไม่ได้อัปเดตบ่อย โดยทั่วไปไม่ละเอียดพอจะเป็นประโยชน์ และมักให้แค่ตำแหน่งระดับช่วง IP ขนาดใหญ่หรือระดับองค์กร
นอกจากนี้ ชุดข้อมูลสาธารณะไม่มีขั้นตอนตรวจสอบความถูกต้อง เมื่อการซื้อขาย IPv4 และบริการ VPN เพิ่มขึ้น เราเคยเห็นกรณีที่มีการใส่ข้อมูลที่ไม่ถูกต้องเข้ามา ดังนั้นแม้เรายินดีรับรายงานแก้ไขตำแหน่ง IP แต่จะต้องตรวจสอบเสมอ
จากประสบการณ์ในการดำเนินงานเครือข่ายตรวจจับ การซื้อเซิร์ฟเวอร์ในนิวยอร์กนั้นง่ายและถูกกว่าประเทศใดประเทศหนึ่งในแอฟริกากลางมาก ตำแหน่งของที่อยู่ IP ส่งผลอย่างมากต่อมูลค่าที่ IP นั้นให้ได้
เรายังมีฐานข้อมูล IP-to-Country ASN ฟรีสำหรับใช้ในโปรเจกต์ด้วย: https://ipinfo.io/developers/ip-to-country-asn-database
ไอเดีย การสามเหลี่ยมจากเวลาแฝง ดีมาก ผมเคยใช้ข้อมูลเวลาแฝงเพื่อหลายอย่าง เช่น การตรวจจับ VPN และพร็อกซี แต่ไม่คิดว่าจะได้ตำแหน่งที่แม่นขนาดนั้น
ถ้าทำการสามเหลี่ยมจากเวลาแฝงด้วยเซิร์ฟเวอร์ 600 เครื่อง ก็น่าจะได้ค่าประมาณที่ค่อนข้างดี และน่าประทับใจ
แต่มีบางอย่างที่สงสัย ISP บางรายจัดการทราฟฟิก ICMP ด้วยลำดับความสำคัญต่ำหรือทำให้ประสิทธิภาพลดลง รับมืออย่างไร, ถ้าจะระบุตำแหน่ง IPv4 ทั้งหมด ก็ต้อง ping ที่อยู่หลายพันล้านรายการต่อเนื่อง วัดแค่ IP สุ่มหนึ่งตัวจากแต่ละ inetnum/NetRange ที่ถูกจัดสรรหรือไม่, และที่อยู่ IP ส่วนใหญ่ไม่ตอบ ICMP จึงสงสัยว่าหาเราเตอร์หน้าปลายทางแล้วจับตำแหน่งเราเตอร์นั้นหรือไม่
ยังใช้ให้ข้อมูลประเทศในบันทึก audit ของลูกค้า รวมถึงป้องกันสแปมและตรวจจับการฉ้อโกงด้วย
แบบนั้นจะคัดลอกไฟล์ไปยัง S3, Google Cloud ฯลฯ แล้ว query ได้ทันทีด้วยเครื่องมือหลายชนิด ถึง CSV ก็ทำได้ แต่ไม่ลื่นไหลเท่า
ถ้าไม่อยากทำเอง สามารถให้ Cloudflare ทำให้ฟรีด้วย Cloudflare Worker ง่าย ๆ ได้ คำขอ Cloudflare ทุกครั้งมีข้อมูลตำแหน่ง IP แบบคร่าว ๆ อยู่แล้ว
จะส่งคำขอไปยัง URL นี้ที่รันบน Cloudflare Worker ก็ได้ น่าจะมีเวลาแฝงต่ำทั่วโลก: https://www.edenmaps.net/iplocation
ใช้กับแอปเล็ก ๆ ได้ไม่เป็นไร แค่ขอว่าอย่าส่งคำขอวันละ 10 ล้านครั้งก็พอ
ผมอาศัยอยู่ในประเทศที่ภาษาประจำชาติไม่ใช่ภาษาแม่ของผม เลยเกลียดเว็บไซต์ที่ คาดเดาภาษาจากตำแหน่ง IP แล้วบังคับใช้มาก
ทั้งที่เบราว์เซอร์ส่ง header ภาษามาอย่างชัดเจนมาก แต่กลับมองข้ามมัน แล้วกำหนดภาษาจากสมมติฐานแบบขี้เกียจ
ในวงการเรียกว่า “การปรับแต่งประสบการณ์เว็บให้เฉพาะบุคคล” แต่มันเป็นวิธีที่น่ารำคาญ ผมไม่เคยแนะนำให้ใครทำแบบนั้น
ถ้าจะใช้ตำแหน่งทางภูมิศาสตร์ของ IP เพื่อปรับแต่งเว็บไซต์ สิ่งที่ดีที่สุดน่าจะเป็นเรื่องอย่างภาษี ค่าจัดส่ง หรือวางประเทศของผู้ใช้ไว้บนสุดในดรอปดาวน์เลือกประเทศ
นอกนั้นแทบคิดอะไรไม่ออก การแปลมักทำงานได้ไม่ดีและมีแต่รบกวน ต่อให้เว็บไซต์มีเจตนาดี การทำเวอร์ชันท้องถิ่นด้วย Google Translate ก็ไม่ใช่ความคิดที่ดี
แทบไม่มีเทคโนโลยีไหนที่ทำลายประสบการณ์อินเทอร์เน็ตประจำวันได้เท่าฐานข้อมูลพวกนี้
อยากให้มันหายไปเลย
แทนที่เว็บไซต์จะเดาผิดทุกครั้ง แล้วซ่อนขั้นตอนแก้ไขไว้หลังลิงก์และการโหลดหน้าหลายรอบ ก็ถามรหัสไปรษณีย์ตอนโหลดครั้งแรกไปเลย
อีกอย่าง ไม่มีวิธีแก้ฐานข้อมูลให้ได้ “คำตอบที่ถูกต้อง” หรือ “คำตอบที่ดีกว่า” ด้วย เพราะแทบไม่มีกรณีที่ต้องการให้เว็บไซต์ใช้ตำแหน่งปัจจุบันจริง ๆ
โดยทั่วไปผมตรวจสต็อกสินค้าของร้านในสถานที่ที่กำลังจะไป สรุปคือทั้งสาขานี้กำลังพยายามแก้ ปัญหาที่นิยามผิด
ขึ้นอยู่กับการใช้งานและระดับความแม่นยำที่ต้องการ
วิธีที่ดีที่สุดในการสร้างบริการระบุตำแหน่งทางภูมิศาสตร์คือการมี อุปกรณ์ 1 พันล้านเครื่อง ที่รายงานตำแหน่งของตนเองพร้อมกับ IP ไปด้วยพร้อมกัน ในทางปฏิบัติ Apple และ Google อยู่ในตำแหน่งนี้
เพราะพวกเขาได้รับการอัปเดต IP และตำแหน่งอย่างต่อเนื่อง จึงมีฐานข้อมูลระบุตำแหน่งทางภูมิศาสตร์ที่ดีที่สุดในโลก
ประเด็นสำคัญคือการสร้างแอปที่ผู้คนยินยอมให้ตำแหน่งโดยสมัครใจ และทำให้มีคนใช้แอปนั้นจำนวนมาก นั่นจึงเป็นเหตุผลที่ทุกแอปในทุกวันนี้ขอสิทธิ์เข้าถึงตำแหน่ง
Foursquare มาถูกทางแล้ว แต่ล้ำหน้าเกินไป
ต้องใช้ telemetry ของ HTTP session เพื่อประเมินว่า endpoint ใดเหมาะที่สุดสำหรับ IP หรือ subnet หนึ่ง ๆ และผลลัพธ์ก็คือการสร้างฐานข้อมูลคล้าย GeoIP ของตัวเองตามเงื่อนไขจริง
ถึงอย่างนั้น ด้วยเหตุผลด้านความเป็นส่วนตัว ก็ต้องเก็บไว้แบบชั่วคราวเท่าที่เป็นไปได้ ผลลัพธ์ reverse geocoding ของ Apple Maps ไม่สามารถใช้หรือบันทึกได้นอกบริบทคำขอผู้ใช้แบบเรียลไทม์ เช่น การหาร้านอาหารใกล้เคียง
เรื่องที่เกี่ยวข้องอยู่บ้างคือ Google Maps สามารถเรียนรู้ตำแหน่งของ IP จากตำแหน่งที่ผู้ใช้สำรวจบนแผนที่ได้
หากดูตำแหน่งใดตำแหน่งหนึ่งซ้ำมากพอ แม้จะลบคุกกี้ทั้งหมดแล้ว เมื่อเปิด Google Maps ก็ยังใช้ตำแหน่งนั้นเป็นตำแหน่งเริ่มต้น
พบเรื่องนี้ตอนใช้ Google Maps และถ้าคิดว่าหลายคนอาจแชร์ IP address เดียวกันได้ ก็รู้สึกน่ากังวลเล็กน้อยในแง่ความเป็นส่วนตัว
น่าสนใจ แต่ดูเหมือนว่าการระบุตำแหน่งทางภูมิศาสตร์จริง ๆ จะไม่ได้ทำกันแบบนี้
ข้อมูล ARIN/RIPE ไม่แม่นยำพอเกินกว่าระดับประเทศ จึงไม่ค่อยมีประโยชน์
บริการระบุตำแหน่งเชิงพาณิชย์จะเชื่อมโยง IP ของไคลเอนต์กับตำแหน่งจริงที่รู้จัก เช่น ข้อมูล WiFi AP หรือพัสดุที่ส่งถึงผู้ใช้ อย่างน้อยก็ได้ยินมาแบบนั้นมาหลายสิบปีแล้ว
มีตำแหน่งของอุปกรณ์ด้วย แต่ถ้าผู้ใช้ไม่ยินยอมแชร์ข้อมูล GPS การทำ targeting จะใช้แค่ IP address ผู้ให้บริการที่พบบ่อยคือ MaxMind ซึ่งแจกจ่ายฐานข้อมูลให้โฮสต์ไว้ในเครื่องแล้ว query ได้
คอมเมนต์ค่อนข้างออกแนวถากถาง แต่โดยส่วนตัวแล้วรู้สึกว่าน่าสนใจมากจริง ๆ
นึกถึงตอนงานแรกที่เพิ่ม PostGIS และการค้นหาตามตำแหน่งลงในฐานข้อมูล ตอนนั้นอิงจากที่อยู่และรหัสไปรษณีย์
เมื่อนานมาแล้ว ผมสร้าง http://www.hostip.info ขึ้นมา เป็นบริการที่รวบรวมตำแหน่งของ IP address แบบชุมชน และใช้แนวทางประมาณว่า “การคาดเดานี้ผิดหรือเปล่า? ช่วยแก้ให้หน่อย”
ครั้งสุดท้ายที่ตรวจดูน่าจะราว 10 ปีก่อน ประเทศแทบจะถูกต้องสมบูรณ์ ภูมิภาคยังไม่สมบูรณ์ และเมืองแม่นกว่าการโยนเหรียญเล็กน้อย ข้อมูลทั้งหมดฟรี
ไม่แน่ใจว่ายังอยู่ในเว็บหรือไม่ แต่เคยมีลูกบาศก์ 3D หมุนได้เพื่อแสดงที่อยู่ที่รู้จักหรือการค้นหาล่าสุด โดย x, y, z คือ octet สามตัวแรกของที่อยู่ และใช้สีต่างกันตามกลุ่ม เช่น ประเทศหรือทวีป
เก่ามากจนเขียนด้วย Java applet ถ้าสร้างใหม่ตอนนี้ก็คงใช้ WebGL
ขายไปนานแล้ว แต่ใส่เงื่อนไขไว้ว่าข้อมูลต้องคงความฟรีเสมอ ตอนแรกข้อเสนอที่ส่งมาทางอีเมลดูเหมือนหลอกลวงจนไม่เชื่อ แต่ดำเนินการผ่าน escrow.com ได้ราบรื่น และคิดว่าทั้งสองฝ่ายจบลงอย่างพอใจ ตอนนี้ก็เกือบ 20 ปีมาแล้ว
ดูเหมือนเป็นเวอร์ชันสมัยใหม่ของ GeoIP แบบอิง ping ที่กล่าวถึงก่อนหน้า: https://github.com/Ne00n/yammdb
อยากทราบข้อเสนอแนะเกี่ยวกับวิธี ระบุตำแหน่งทางภูมิศาสตร์ ของ IP ศูนย์ข้อมูล แม้จะเป็นแบบคร่าว ๆ มากก็ตาม
กำลังวิเคราะห์ข้อมูล traceroute อยู่ และรู้ตำแหน่งต้นทางกับปลายทาง แต่สิ่งที่สนใจคือช่วงกลางทาง
ตัวอย่างเช่น สามารถอนุมานข้อมูลบางอย่างได้จากรหัสสนามบินที่อยู่ใน hostname ของโหนด
ภายใต้สมมติฐานว่าโหนดหนึ่ง ๆ ไม่ได้มีสถานะย่ำแย่ ก็น่าจะสามารถอนุมานตำแหน่งจากเวลา RTT เฉลี่ยได้เช่นกัน
ตัวอย่าง IP ที่น่าปวดหัวคือ 193.142.125.129, 129.250.6.113, 129.250.3.250 ปรากฏใน traceroute ของสหราชอาณาจักรและคิดว่าอยู่ในลอนดอน แต่ผลการระบุตำแหน่งทางภูมิศาสตร์กระจัดกระจายไปทั่วโลก
traceroute ไปยัง IP เหล่านั้นดูเหมือนว่าเครือข่ายกำลังไปลอนดอน
IP ของ Google ไม่ตอบ ping แต่ฝั่ง NTT/Verio ตอบ ถ้า ping จากโฮสติ้งที่ตั้งอยู่ในลอนดอน มีโอกาสสูงที่จะได้การตอบสนองในระดับมิลลิวินาทีหลักเดียว และนั่นจะช่วยกำหนดขอบเขตบนของระยะทางจากลอนดอนได้
หากลอง ping จากโฮสติ้งอื่น ๆ ในสหราชอาณาจักรและอีกฝั่งของช่องแคบด้วย ก็จะตรวจสอบได้ว่า ping ต่ำสุดมาจากโฮสติ้งลอนดอนหรือไม่ อย่างไรก็ตาม อาจเป็นเพียงการเชื่อมต่อที่ผ่านลอนดอน ส่วนตำแหน่งจริงอาจอยู่ที่อื่น จึงไม่สามารถรู้ได้อย่างสมบูรณ์
ควรตรวจสอบจากจุดสังเกตอื่น ๆ ด้วย เพื่อดูว่าไม่ใช่ anycast เมื่อ ping ไปยัง 8.8.8.8 จากเครือข่ายส่วนใหญ่ทั่วโลกจะเจอจุดที่อยู่ใกล้ แต่ IP เหล่านี้แม้ในพื้นที่ซีแอตเทิล traceroute ก็ยังไปลอนดอน ดังนั้นอย่างน้อยในตอนนี้ก็มีแนวโน้มสูงว่าไม่ใช่ anycast
หากไม่มีโฮสติ้งทั่วโลก ก็ลองหา looking glass สาธารณะของเครือข่ายที่เชื่อมต่อดี ๆ ซึ่งสามารถใช้ ping แบบนี้ได้เป็นครั้งคราว
ระบุไว้ว่า “วัตถุประสงค์ของ TULIP คือการค้นหาตำแหน่งของโฮสต์เป้าหมายที่ระบุด้วยชื่อ IP หรือที่อยู่ IP โดยใช้การวัดความหน่วงของ ping RTT จากโฮสต์ landmark อ้างอิงที่ทราบตำแหน่งดีไปยังเป้าหมาย”
https://tulip.slac.stanford.edu/
แต่ endpoint สำหรับส่งคำขอดูเหมือนจะตายไปแล้ว
วิธีดึง RTT จาก probe ของ RIPE Atlas ที่ทราบตำแหน่งไปยัง IP ดังกล่าวใกล้เคียงกับไอเดียที่พูดถึง และอย่างไรก็น่าจะเป็นวิธีที่ดีที่สุด
การประกาศ BGP แบบนี้จะออกไปยัง upstream ISP ต่างกันในหลายตำแหน่ง
หาก upstream ของการประกาศจากตำแหน่งหนึ่งเป็น ISP ท้องถิ่น ก็พอจะคาดเดาได้ระดับหนึ่งว่าศูนย์ข้อมูลนั้นอยู่ในภูมิภาคนั้น แต่ถ้าเป็น Tier 1 ISP ที่ให้การเชื่อมต่อโดยตรงทั่วโลก แม้แต่การคาดเดานั้นก็ยังยาก
ความสัมพันธ์ BGP สามารถดูได้จากเครื่องมือ looking glass เช่น bgp.tools: https://bgp.tools/prefix/193.142.125.0/24#connectivity
หากสามารถรัน traceroute จาก probe หลายตัวที่กระจายอยู่ทั่วโลกและทราบตำแหน่ง ก็สามารถดู IP คงที่ของอินเทอร์เฟซเราเตอร์กลางทางแล้วทำ triangulation ได้
อย่างไรก็ตาม ถ้าใช้ CDN อย่าง Cloudflare เพื่อโฆษณา IP block ของตัวเองจาก PoP กว่า 200 แห่ง และให้ทราฟฟิกวิ่งผ่านเครือข่ายส่วนตัวของพวกเขาไปยังศูนย์ข้อมูลทั่วโลก วิธีนี้ก็จะใช้ไม่ได้เช่นกัน