Introducción
En el mundo de la administración de sistemas y la seguridad informática, conocer la geolocalización de una dirección IP es una tarea frecuente. Este artículo ofrece una descripción detallada y extensiva sobre cómo obtener datos de ubicación geográfica desde la línea de comandos en Linux, usando métodos locales y a través de APIs públicas. Aprenderá sobre las herramientas más populares, ejemplos prácticos y las mejores prácticas para integrarlo en sus scripts y entornos de producción.
1. Herramientas de geolocalización CLI
Existen varias utilidades que podemos instalar directamente en Linux:
Herramienta | Instalación | Descripción |
---|---|---|
geoip-bin / geoiplookup | ltapt install geoip-bin gt |
Consulta bases de datos GeoIP2 (MaxMind). |
mmdblookup | ltapt install libmaxminddb0 libmaxminddb-dev mmdb-bin gt |
Permite búsquedas avanzadas en archivos .mmdb. |
curl jq | Ya viene preinstalado en la mayoría de distros. Instalar jq si no existiera. |
Consulta APIs REST y parsea JSON. |
2. Uso de APIs públicas
Para soluciones rápidas y sin configuración local, emplear servicios web es ideal. A continuación, algunos ejemplos:
2.1. ipinfo.io
curl -s https://ipinfo.io/8.8.8.8/json jq
Salida típica:
{
ip: 8.8.8.8,
city: Mountain View,
region: California,
country: US,
loc: 37.3860,-122.0838,
org: AS15169 Google LLC,
postal: 94035,
timezone: America/Los_Angeles
}
2.2. ip-api.com
curl -s http://ip-api.com/json/8.8.8.8 jq
Limitación gratuita: 45 solicitudes/minuto.
2.3. ipgeolocation.io
Requiere clave API (gratuita hasta cierto límite):
curl -s https://api.ipgeolocation.io/ipgeoapiKey=SU_CLAVEip=8.8.8.8 jq
3. Utilización de GeoIP local
Para entornos offline o privados, instalar la base de datos local de MaxMind:
- Registrar cuenta en MaxMind y obtener GeoLite2-City.mmdb.
- Copiar el archivo a
/usr/local/share/GeoIP/GeoLite2-City.mmdb
. - Ejecutar:
mmdblookup --file /usr/local/share/GeoIP/GeoLite2-City.mmdb
--ip 8.8.8.8 --field country_name --field city_name
Este método no depende de la conectividad externa y respeta requisitos de privacidad corporativa.
4. Implementación en scripts
Combine comandos y jq para extraer solo los campos deseados:
#!/bin/bash
# geoip.sh - Obtiene ciudad y país de una IP
IP={1:-(curl -s https://ipinfo.io/ip)}
DATA=(curl -s https://ipinfo.io/IP/json)
CITY=(echo DATA jq -r .city)
COUNTRY=(echo DATA jq -r .country)
echo IP: IP
echo Ciudad: CITY
echo País: COUNTRY
Dar permisos de ejecución y ejecutar:
chmod x geoip.sh
./geoip.sh 8.8.8.8
5. Ejemplos prácticos
- Monitoreo en tiempo real de conexiones entrantes en un servidor SSH.
- Filtrado geográfico para aplicaciones web en
iptables
ofail2ban
. - Integración con Grafana y Prometheus para dashboards geográficos.
6. Seguridad y privacidad
Trabajar con IPs sensibles requiere un canal seguro. Se recomienda enrutar peticiones a través de un túnel VPN confiable como NordVPN, ExpressVPN o ProtonVPN. Además, tenga en cuenta:
- Rate limits de cada API.
- Políticas de retención de datos si trabaja con información de terceros.
- Requerimientos de autenticación y cifrado en entornos corporativos.
7. Mejores prácticas y recomendaciones
- Cachear respuestas localmente para no exceder límites.
- Rotar claves y tokens con regularidad.
- Verificar la exactitud de la base de datos periódicamente.
- Documentar en su
README
las dependencias y versiones de las herramientas.
Conclusiones
Obtener geolocalización por IP desde la CLI de Linux es sencillo y muy útil para diversas tareas de administración y seguridad. Ya sea mediante APIs públicas o bases de datos locales, puede automatizar procesos, generar reportes detallados y reforzar sus defensas con filtros geográficos. Con las herramientas y ejemplos presentados, está listo para integrar esta funcionalidad en sus proyectos y mejorar la visibilidad de su infraestructura.
Leave a Reply