2 điểm bởi GN⁺ 2026-02-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Độ 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í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

 
GN⁺ 2026-02-02
Ý kiến trên Hacker News
  • Đây là một dự án nhỏ thử nghiệm xem có thể ước lượng vị trí địa lý bằng dịch vụ như Globalping hay không
    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
    • Có vẻ có thể thử cách gradient descent để giảm số probe mà vẫn tăng hiệu quả
      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ó
    • Về lý thuyết thì 3 probe là đủ rồi chứ?
  • Điểm ấn tượng là nó được làm mà không cần AI
    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”
    • Có các đường phân cách “══════” trong code nên cũng thấy có phần nào đó giống như do Claude tạo ra
  • Thắc mắc liệu máy chủ bị đo có thể đánh lừa vị trí bằng cách thêm độ trễ nhân tạo tùy theo IP nguồn hay không
    • Hoàn toàn có thể
      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ị
    • Không phải là không thể, nhưng đơn giản hơn nhiều là cứ không trả lời ping
    • Bản thân traceroute vốn đã là công cụ khó diễn giải nên rất dễ bị giả mạo
      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
    • Một số ISP khu vực ở Mỹ (Xfinity, Charter, v.v.) vốn đã có độ trễ nhân tạo do Bufferbloat
      Ngay cả trên đường truyền 1000/30Mbps cũng có thể lên tới 2500ms
  • Có người từng thấy một hướng tiếp cận tương tự trong nghiên cứu ‘You Can’t Cheat Time’ được trình bày tại DEFCON 31
    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
    • Nếu muốn tránh bị truy vết, có thể thêm độ trễ ngẫu nhiên vào mọi gói tin hoặc tạo quy tắc độ trễ có chủ đích theo từng nguồn ping để trông như đang ở vị trí mong muốn
  • Thật ngạc nhiên là cách này vẫn hoạt động dù độ trễ dao động lớn
    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
    • Có người làm ở IPinfo
      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
    • Cũng có thể đơn giản là do độ trễ của đường truyền truy nhập địa phương
      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
    • Cũng có thể là do nội dung được cache tại PoP gần đó
      Trước đây ngay cả các đô thị lớn của Hà Lan cũng từng thiếu cáp quang
    • Từ thành phố của người này tới máy chủ ở Pháp khoảng cách đường chim bay chỉ 250km, nhưng tính theo ping lại ra 2000km
      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
  • Cảm ơn Dimitry. Cả đội IPinfo đều rất cảm kích vì được nhắc đến
    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
  • Ý tưởng và khả năng thực thi thật sự rất tuyệt
    Mong HN có nhiều dự án như thế này hơn
  • Đọc bài thì có vẻ họ chỉ chọn ping ngắn nhất làm vị trí
    Đâ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
    • Như bài viết cũng đã nói, mục tiêu chỉ là một proof of concept đơn giả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
    • Nhưng gói tin không di chuyển theo đường thẳng, nên phép tính khoảng cách đơn giản không có nhiều ý nghĩa
  • Có người chia sẻ kinh nghiệm từng dùng kỹ thuật này trong môi trường dịch vụ thực tế
    1. Trong định tuyến Internet, tam định vị (trilateration) gần như không hiệu quả
      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ố
    2. Kiểu đo này phù hợp hơn để kiểm chứng dữ liệu vị trí sẵn có
    3. Các hop trong traceroute hữu ích để tìm vị trí router
      RIPE IPmap đã ánh xạ chính xác phần lớn router công khai
    4. Nó hoạt động tốt với IP hạ tầng hoặc máy chủ, nhưng có giới hạn với mạng người dùng phổ thông
      Cũng đề xuất ping.sx như một công cụ để so sánh
  • Khi xem IP route của đường ngược, nhiều trường hợp có thể đoán đúng khá chính xác đến cấp bang ở Mỹ
    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