GeoTracer — утилита командной строки, которая визуализирует путь сетевых пакетов от вашего компьютера до любого сервера в мире на интерактивной карте. Она выполняет traceroute, определяет географическое местоположение каждого промежуточного узла и создает красивую HTML-страницу с маршрутом на карте.
Войдите, чтобы начать проектВы — сетевой инженер в международной компании с пользователями по всему миру. Регулярно поступают жалобы: "Сайт медленно загружается!" или "Я не могу подключиться к серверу!". Стандартная команда traceroute показывает список IP-адресов, но это просто набор чисел — невозможно быстро понять, где именно возникает задержка: в вашей стране, на трансатлантическом кабеле или уже на континенте клиента.
Представьте ситуацию: пользователь из Токио жалуется на медленную работу вашего сервиса. Вы запускаете traceroute, получаете 20 строк с IP-адресами вроде 185.45.23.11, 72.14.204.68. Вы начинаете вручную искать каждый IP в сервисах геолокации, пытаясь понять маршрут. Это отнимает драгоценные минуты, а клиент ждёт решения.
Боль в том, что сетевые проблемы часто имеют географическую природу: обрыв кабеля в определённом регионе, проблемы у конкретного провайдера в определённой стране, перегрузка трансконтинентальных каналов. Но традиционный traceroute не даёт этой информации наглядно.
Создать GeoTracer — мощный инструмент, который:
В реальном мире такие инструменты критически важны для:
Компании вроде CloudFlare, Akamai, Google Cloud используют подобные инструменты для оптимизации своих глобальных сетей. Ваш GeoTracer будет работать по тем же принципам!
Сетевое программирование: raw sockets для ICMP пакетов, принцип работы traceroute через TTL, обработка сетевых таймаутов, разрешение DNS (прямое и обратное).
Интеграция GeoIP API: надёжные HTTP-клиенты с таймаутами, JSON парсинг ответов, паттерн Provider для поддержки множественных сервисов (ip-api, ipapi.co, ipinfo), rate limiting.
Конкурентность и Context: управление жизненным циклом через context.Context, обработка OS сигналов (Ctrl+C), каналы для координации горутин, graceful shutdown с сохранением частичных результатов.
Визуализация данных: генерация HTML через html/template, интеграция Leaflet.js для интерактивных карт, CSS стилизация, отображение маршрутов и статистики.
CLI/UX дизайн: пакет flag для гибкого интерфейса, цветной вывод через fatih/color, валидация входных данных, progress indication.
Модульная архитектура: разделение на пакеты (tracer, geoip, geotracer, mapper), проектирование структур данных (Hop, TraceResult, Location), обработка ошибок и неполных данных.