- เครื่องมือ CLI ที่ใช้ latency เพื่อ ประมาณตำแหน่งของที่อยู่ IP ในระดับประเทศ·รัฐ·เมือง ได้
- ใช้ โพรบมากกว่า 3,000 ตัวของเครือข่าย Globalping เพื่อทำการวัด ping และ traceroute สำหรับแต่ละ IP
- เปรียบเทียบค่า latency แบบเป็นขั้นตอนจาก ทวีป → ประเทศ → รัฐ → เมือง แล้วตัดสินว่าพื้นที่ที่มีค่าต่ำสุดคือพิกัดจริง
- จากการทดสอบ พบความแม่นยำที่สอดคล้องกับผลของ ipinfo ในกรณีอย่าง โปแลนด์·ฟลอริดา·ไมอามี
- เป็น เครื่องมือ CLI โอเพนซอร์ส ที่ทุกคนรันได้ และพิสูจน์ให้เห็นถึง ความใช้งานได้จริงของการตรวจสอบตำแหน่ง IP แบบอิง latency
ภาพรวมของการประมาณตำแหน่ง IP แบบอิง latency
- ได้สร้าง เครื่องมือ CLI ที่สามารถระบุตำแหน่งที่อยู่ IP ได้ในระดับ ประเทศ รัฐของสหรัฐฯ และเมือง
- อ้างอิงกรณีที่ ipinfo พิสูจน์ว่า ผู้ให้บริการ VPN มีการ ลงทะเบียนข้อมูลตำแหน่งปลอม
- ipinfo สร้าง เครือข่ายโพรบขนาดใหญ่ เพื่อ ติดตามและทดสอบ ping กับทุก IP สำหรับตรวจสอบตำแหน่งทางกายภาพจริง
- แนวทางนี้ช่วย ตัดปัญหาความคลาดเคลื่อนของข้อมูลสาธารณะ และทำให้สามารถระบุตำแหน่งได้อย่างน่าเชื่อถือโดยอิงจาก latency และข้อมูล hop
การใช้เครือข่าย Globalping
- Globalping เป็นโปรเจ็กต์โอเพนซอร์สที่ขับเคลื่อนโดยชุมชน และสามารถ โฮสต์โพรบแบบคอนเทนเนอร์ได้เอง
- ปัจจุบันมี โพรบมากกว่า 3,000 ตัว กระจายอยู่ทั่วโลก
- ผู้ใช้สามารถใช้เครือข่ายนี้ทำ การทดสอบเครือข่าย เช่น ping และ traceroute ได้
- เครื่องมือ CLI ทำงานอัตโนมัติด้วย ไลบรารี globalping-ts
- ทดสอบ ping กับ IP ที่ป้อนเข้ามาจากหลายทวีป
- เลือกทวีปที่มีค่า latency ต่ำที่สุด
- จากนั้นจึงวัดละเอียดต่อด้วยโพรบหลายตัวภายในทวีปนั้น
โครงสร้างการวัดแบบเป็นขั้นตอน
- ขั้นที่ 1 (ตรวจหาทวีป) : ทดสอบ ping ด้วยโพรบ 5 ตัวต่อทวีป
- ตัวอย่างผลลัพธ์: ยุโรป 32.39ms, อเมริกาเหนือ 137.18ms → เลือกยุโรป
- ขั้นที่ 2 (ตรวจหาประเทศ) : วัดด้วยโพรบ 50 ตัวภายในทวีปที่เลือก
- ผลลัพธ์: โปแลนด์ 7.29ms, เยอรมนี 13.42ms, ลิทัวเนีย 17.65ms → ตัดสินเป็นโปแลนด์
- ขั้นที่ 3 (ตรวจหารัฐในสหรัฐฯ) : ทดสอบด้วยโพรบ 50 ตัวในสหรัฐฯ
- IP ที่ NordVPN ระบุว่าอยู่ใน ‘บาฮามาส’ ถูกตัดสินว่าจริง ๆ อยู่ที่ ฟลอริดา (0.45ms)
- ขั้นที่ 4 (ตรวจหาเมือง) : วัดด้วยโพรบ 36 ตัวภายในรัฐ
- ผลลัพธ์: ไมอามี (0.00ms) ตามด้วย West Palm Beach และ Tampa
ความแม่นยำและข้อจำกัด
- ‘magic field’ ของ Globalping จะสุ่มเลือกโพรบในระดับทวีป จึงอาจมีบางประเทศไม่ถูกเลือก
- ทำให้มีโอกาสเกิด การตัดสินผิดเป็นประเทศเพื่อนบ้าน ได้
- หากต้องการเพิ่มความแม่นยำ ควร ระบุโพรบตามประเทศ·รัฐด้วยตนเอง และ ปรับจำนวนโพรบ
- ตัวอย่าง: ในอเมริกาเหนือ แนะนำให้ใช้โพรบสหรัฐฯ 200 ตัว แคนาดา 20 ตัว เม็กซิโก 10 ตัว
- เวอร์ชันปัจจุบันใช้จำนวนโพรบน้อยที่สุดเพื่อให้ ผู้ใช้ที่ไม่ยืนยันตัวตนก็ยังรันได้
- หากยืนยันตัวตนแล้วจะทดสอบได้ 500 ครั้งต่อชั่วโมง และเครดิตเพิ่มเติมสามารถรับได้จาก การโฮสต์โพรบหรือการสนับสนุนบน GitHub
การรันและการใช้งานเครื่องมือโอเพนซอร์ส
- คำสั่ง:
geolocate $IP
- ปรับจำนวนโพรบในแต่ละขั้นได้ด้วยออปชัน
–limit
- สามารถดูวิธีใช้งานทั้งหมดได้จาก เอกสารบน GitHub
- ยินดีรับข้อเสนอแนะการปรับปรุงผ่าน Pull Request
- สามารถ ขอเครดิตฟรี และ เข้าร่วมโฮสต์โพรบ ได้
บทสรุป
- การประมาณตำแหน่ง IP แบบอิง latency เป็นวิธีที่ แม่นยำและใช้งานได้จริง หากมีจุดสังเกตมากเพียงพอ
- ด้วย เครือข่าย Globalping และเครื่องมือ CLI โอเพนซอร์ส ทุกคนสามารถตรวจสอบตำแหน่งจริงของ IP ได้อย่างง่ายดาย
- ยืนยันศักยภาพการนำไปใช้ในงานอย่าง การตรวจสอบการปลอมตำแหน่ง VPN การวิเคราะห์เส้นทางเครือข่าย และการดีบักประสิทธิภาพ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ตอนนี้ยังเป็นแค่ระดับเดโม จึงยังไม่พอสำหรับใช้งานจริง
ถ้าจะใช้อย่างจริงจัง แต่ละขั้นต้องมี probe อย่างน้อย 500 ตัว
ผู้เขียนตั้งใจหลีกเลี่ยงการทำ optimization เพื่อไม่ให้เกินข้อจำกัดของผู้ใช้แบบไม่ระบุตัวตน
เริ่มจากวัด 3 ครั้งในหลายทวีป แล้วตัด probe ที่ช้าที่สุดทิ้ง พร้อมเพิ่ม probe ใหม่ใกล้ฝั่งที่เร็วกว่า ทำซ้ำไปเรื่อย ๆ
แบบนี้อาจ “ติดตาม” ตำแหน่งจริงได้แบบเรียลไทม์ แทนที่จะแบ่งเป็น 5 ขั้น
แนวคิดคือมอง latency เป็น สนามศักย์สเกลาร์ แล้วใช้ความชันของมัน
commit message ที่มีแค่คำเดียวก็ดูน่าขำ แต่กลับให้ความรู้สึกเป็นงานของมนุษย์ดี
ตัวอย่างเช่นใช้เครื่องมืออย่าง fakeroute เพื่อหลอกได้แนบเนียนขึ้น
อาจแทบไม่มีประโยชน์เชิงปฏิบัติ แต่เป็นไอเดียที่สนุกดี
เหมือนกรณีในอดีตที่ The Pirate Bay แกล้งทำเหมือนย้ายไปเกาหลีเหนือ โดย AS สามารถใส่ AS ปลอมเพิ่มในเส้นทาง BGP เพื่อให้ดูสมจริงขึ้นได้
เทคโนโลยีแบบนี้อาจกลายเป็น เกมไล่จับกับ VPN ได้เหมือนกัน
ดูเพิ่มเติม: การถกเถียงใน Reddit, กรณีใน HN
แม้แต่สาย 1000/30Mbps ก็ยังเกิด latency ได้ถึง 2500ms
วิดีโอบรรยาย
ข้อจำกัดของการระบุตำแหน่งด้วย ping มีดังนี้:
IP มักมีข้อมูลตำแหน่งอยู่ในฐานข้อมูลอยู่แล้ว, ความไม่สมมาตรของ routing ทำให้โมเดลระยะทางผิดเพี้ยน, Anycast/CDN ทำให้ IP เดียวอยู่ได้หลายภูมิภาค, และ ICMP อาจถูกบล็อกหรือมีลำดับความสำคัญต่ำ
ฉันใช้โมเดล HTTP(S) latency + ML(SVR) แทน ping และฝึกด้วยข้อมูล 39,000 รายการ
สำหรับเซิร์ฟเวอร์หลัง CloudFront ความคลาดเคลื่อนอยู่ราว 600 กม.
สิ่งสำคัญยิ่งกว่าความแม่นยำคือ การตรวจจับ sandbox, มัลแวร์ geofence, และ การให้สัญญาณตำแหน่งเสริมเมื่อฐานข้อมูล IP ใช้ไม่ได้
เมื่อก่อนตอนคุยกับเพื่อนชาวดัตช์ ฉันเคยเข้าถึงคอนเทนต์ NL จากอังกฤษด้วย latency ต่ำกว่าที่เขาได้เสียอีก
น่าจะเป็นเพราะ คุณภาพของ peering ต่างกัน
ตอนนี้กำลังทำโครงการแบ่งปันข้อมูล routing และ peering ร่วมกับ IXP และองค์กรอินเทอร์เน็ตหลัก ๆ
บางประเทศมีการ peering ตรงกับ IXP ในอีกทวีปหนึ่ง ทำให้ latency ต่างกันระดับหลายพันกิโลเมตร
ยังมีกรณีจริงที่ทราฟฟิกระหว่างผู้ให้บริการสองรายในประเทศเดียวกันต้องวิ่งออกนอกประเทศแล้วค่อยย้อนกลับมา
ตอนนี้กำลังแก้ความผิดเพี้ยนเหล่านี้ด้วย อัลกอริทึมภูมิสารสนเทศที่อิงการวัดจริง
เป้าหมายสุดท้ายคือช่วยให้ IXP, ผู้ให้บริการ, และองค์กรกำกับดูแลอินเทอร์เน็ต แก้ปัญหาเหล่านี้ได้
บน VDSL หรือ DOCSIS แค่ช่วง 1 กม. แรกก็ทำให้เกิด latency 5~15ms ได้แล้ว
ระหว่างลอนดอน–อัมสเตอร์ดัมอยู่ที่ประมาณ 7ms
แต่ก่อนแม้แต่ในเมืองหลักของเนเธอร์แลนด์เองก็ยังมีไฟเบอร์ไม่มาก
แปลว่าระยะถูก ขยายเกินจริงมากกว่า 8 เท่า
เซิร์ฟเวอร์ในอังกฤษไกลกว่าแต่ ping กลับต่ำกว่า
วิธีที่อิง traceroute จึงสมจริงกว่า ping
นักวิจัยของทีมชื่อ Calvin จะไปบรรยายเรื่อง ภูมิสารสนเทศ IP ที่อิงการวัดจริง ในงาน NANOG96
ลิงก์การบรรยาย
อยากเห็นโปรเจ็กต์แบบนี้ใน HN มากขึ้น
วิธีนี้เรียบง่ายเกินไป น่าจะใช้ triangulation เพื่อให้แม่นยำกว่านี้ได้
ถ้ามี probe มากพอและโชคช่วยนิดหน่อย มันก็ทำงานได้ดีกว่าที่คิด
แน่นอนว่ายังมีวิธีที่ฉลาดกว่านี้อีกเยอะ
เพราะฉะนั้นในทางปฏิบัติจึงมักใช้ค่าการวัดเดี่ยวที่ใกล้ที่สุด
ถ้าอยากได้ข้อมูลที่มีประโยชน์จริง ต้องมีโหนดระดับหลักพันต่อเมือง
RIPE IPmap แมปเราเตอร์สาธารณะส่วนใหญ่ไว้ได้ค่อนข้างแม่นแล้ว
ขอแนะนำ ping.sx เป็นเครื่องมือเปรียบเทียบด้วย
FQDN ของ hop สุดท้ายมักมี รหัสสนามบินหรือรหัสเมือง รวมอยู่ด้วย ซึ่งช่วยได้มาก