- Độ trễ (latency) có thể được dùng để ước tính địa chỉ IP ở cấp quốc gia·bang/tỉnh·thành phố
- Một công cụ CLI sử dụng hơn 3000 probe của mạng Globalping để thực hiện đo ping và traceroute cho từng IP
- Công cụ này so sánh độ trễ theo từng bước châu lục → quốc gia → bang/tỉnh → thành phố và coi khu vực có giá trị thấp nhất là vị trí thực tế
- Kết quả thử nghiệm cho thấy độ chính xác trùng với kết quả của ipinfo ở các địa điểm như Ba Lan·Florida·Miami
- Đây là công cụ CLI mã nguồn mở mà ai cũng có thể chạy, đồng thời chứng minh tính thực tiễn của phương pháp xác minh vị trí IP dựa trên độ trễ
Tổng quan về ước tính vị trí IP dựa trên độ trễ
- Đã tạo một công cụ CLI có thể suy ra địa chỉ IP ở mức quốc gia, bang của Mỹ và thành phố
- Bài viết tham khảo các trường hợp ipinfo chứng minh rằng các nhà cung cấp VPN đã đăng ký dữ liệu vị trí giả
- ipinfo xây dựng một mạng probe quy mô lớn để theo dõi và kiểm tra ping mọi IP, từ đó xác minh vị trí vật lý thực tế
- Cách tiếp cận này loại trừ sai sót của dữ liệu công khai và cho phép xác định vị trí đáng tin cậy dựa trên độ trễ và dữ liệu hop
Tận dụng mạng Globalping
- Globalping là một dự án mã nguồn mở dựa vào cộng đồng, cho phép tự host probe dạng container
- Hiện có hơn 3000 probe phân bố trên toàn thế giới
- Người dùng có thể thực hiện các bài kiểm tra mạng như ping, traceroute thông qua mạng này
- Công cụ CLI được tự động hóa bằng thư viện globalping-ts
- Ping IP đầu vào từ nhiều châu lục
- Chọn châu lục có độ trễ thấp nhất
- Sau đó thực hiện đo chi tiết hơn bằng nhiều probe trong châu lục đó
Cấu trúc đo theo từng giai đoạn
- Giai đoạn 1 (phát hiện châu lục): ping bằng 5 probe cho mỗi châu lục
- Ví dụ kết quả: châu Âu 32.39ms, Bắc Mỹ 137.18ms → chọn châu Âu
- Giai đoạn 2 (phát hiện quốc gia): đo bằng 50 probe trong châu lục đã chọn
- Kết quả: Ba Lan 7.29ms, Đức 13.42ms, Litva 17.65ms → xác định là Ba Lan
- Giai đoạn 3 (phát hiện bang tại Mỹ): kiểm tra bằng 50 probe trong nước Mỹ
- IP “Bahamas” của NordVPN thực tế được xác định là Florida (0.45ms)
- Giai đoạn 4 (phát hiện thành phố): đo bằng 36 probe trong bang
- Kết quả lần lượt là Miami (0.00ms), West Palm Beach, Tampa
Độ chính xác và giới hạn
- “magic field” của Globalping chọn probe ngẫu nhiên theo cấp châu lục, nên có thể bỏ sót một số quốc gia nhất định
- Vì vậy có khả năng xảy ra nhầm lẫn sang quốc gia lân cận
- Để tăng độ chính xác, cần chỉ định probe trực tiếp theo từng quốc gia và bang, đồng thời điều chỉnh số lượng probe
- Ví dụ: với Bắc Mỹ, khuyến nghị 200 probe ở Mỹ, 20 ở Canada, 10 ở Mexico
- Phiên bản hiện tại dùng số probe tối thiểu để người dùng chưa xác thực cũng có thể chạy được
- Khi xác thực, có thể thực hiện 500 lần kiểm tra mỗi giờ; tín dụng bổ sung có thể nhận qua host probe hoặc tài trợ GitHub
Chạy và sử dụng công cụ mã nguồn mở
- Lệnh:
geolocate $IP
- Có thể điều chỉnh số probe cho từng giai đoạn bằng tùy chọn
–limit
- Có thể xem cách sử dụng đầy đủ trong tài liệu GitHub
- Hoan nghênh đề xuất cải tiến qua Pull Request
- Có thể yêu cầu tín dụng miễn phí và tham gia host probe
Kết luận
- Ước tính vị trí IP dựa trên độ trễ là phương pháp chính xác và thực tiễn nếu có đủ các điểm quan sát
- Với mạng Globalping và công cụ CLI mã nguồn mở, bất kỳ ai cũng có thể dễ dàng xác minh vị trí thực tế của IP
- Xác nhận tiềm năng ứng dụng đa dạng như kiểm chứng việc giả mạo vị trí VPN, phân tích định tuyến mạng, gỡ lỗi hiệu năng
1 bình luận
Ý kiến trên Hacker News
Chỉ ở mức demo đơn giản nên chưa đủ cho vận hành thực tế
Muốn dùng đúng nghĩa thì mỗi bước cần ít nhất 500 probe
Tác giả cố tình tránh tối ưu hóa để không vượt giới hạn cho người dùng ẩn danh
Ban đầu đo 3 lần ở nhiều châu lục, loại bỏ probe chậm nhất rồi thêm probe mới gần phía nhanh hơn, và lặp lại như vậy
Làm thế này có thể “theo dấu” vị trí thực theo thời gian thực thay vì chia thành 5 bước cố định
Ý tưởng là xem latency như một trường thế vô hướng và dùng gradient của nó
Mấy commit message chỉ có một từ trông khá buồn cười nhưng lại thấy rất “con người”
Ví dụ có thể dùng công cụ như fakeroute để đánh lừa tinh vi hơn
Gần như không có nhiều giá trị thực tiễn nhưng là một ý tưởng thú vị
Như trường hợp ngày trước The Pirate Bay giả vờ như đã chuyển sang Triều Tiên, một AS cũng có thể thêm AS giả vào tuyến BGP để trông thuyết phục hơn
Kiểu kỹ thuật này có thể dẫn tới một trò mèo vờn chuột với VPN
Tham khảo thêm: thảo luận Reddit, ví dụ trên HN
Ngay cả trên đường truyền 1000/30Mbps cũng có thể lên tới 2500ms
Video bài nói
Các giới hạn của định vị bằng ping gồm:
IP thường đã có thông tin vị trí trong DB, bất đối xứng định tuyến làm hỏng mô hình khoảng cách, Anycast/CDN khiến một IP tồn tại ở nhiều khu vực, và ICMP có thể bị chặn hoặc bị ưu tiên thấp
Thay vì ping, người này dùng mô hình độ trễ HTTP(S) + ML(SVR) và huấn luyện với 39 nghìn dữ liệu
Với máy chủ phía sau CloudFront, sai số khoảng 600km
Điều quan trọng hơn độ chính xác là phát hiện sandbox, malware geofence, và cung cấp tín hiệu vị trí phụ trợ khi IP DB thất bại
Có người kể trước đây khi nói chuyện với một người bạn ở Hà Lan, họ ở Anh nhưng lại truy cập nội dung NL với độ trễ thấp hơn
Có lẽ là do khác biệt về chất lượng peering
Họ đang phối hợp với IXPs và các tổ chức Internet lớn để thực hiện một dự án chia sẻ dữ liệu định tuyến và peering
Có những quốc gia peering trực tiếp với IXP ở châu lục khác nên độ trễ lệch tới hàng nghìn km
Thực tế còn có trường hợp lưu lượng giữa hai nhà mạng trong cùng một quốc gia lại phải đi vòng qua nước ngoài
Những hiện tượng như vậy đang được hiệu chỉnh bằng thuật toán địa lý dựa trên đo đạc
Mục tiêu cuối cùng là giúp IXPs, nhà mạng và các cơ quan quản trị Internet xử lý các vấn đề này
Với VDSL hay DOCSIS, chỉ riêng đoạn 1km đã có thể phát sinh 5–15ms trễ
Trong khi London–Amsterdam chỉ khoảng 7ms
Trước đây ngay cả các đô thị lớn của Hà Lan cũng từng thiếu cáp quang
Tức là bị thổi phồng hơn 8 lần so với thực tế
Máy chủ ở Anh còn xa hơn nhưng ping lại thấp hơn
Cách tiếp cận dựa trên traceroute thực tế hơn là chỉ nhìn ping
Nhà nghiên cứu Calvin sẽ có bài trình bày tại NANOG96 về IP geolocation dựa trên đo đạc
Liên kết bài trình bày
Mong HN có nhiều dự án như thế này hơn
Đây là cách tiếp cận quá đơn giản nên có lẽ dùng tam giác hóa (triangulation) sẽ chính xác hơn
Nếu có đủ probe và thêm chút may mắn thì nó hoạt động tốt một cách bất ngờ
Tất nhiên vẫn có nhiều cách thông minh hơn
Vì vậy dùng một phép đo đơn lẻ gần nhất mới là thực tế
Muốn có dữ liệu hữu ích thì cần hàng nghìn node ở cấp độ thành phố
RIPE IPmap đã ánh xạ chính xác phần lớn router công khai
Cũng đề xuất ping.sx như một công cụ để so sánh
FQDN của hop cuối thường chứa mã sân bay hoặc mã thành phố, nên khá hữu ích