Ce guide vous explique comment transformer votre terminal en un véritable centre de diagnostic réseau. Nous allons coupler la base MaxMind (géographie) et la base ip66.dev (détection de VPN, Proxy, et serveurs Cloud).
Pour que ce guide fonctionne, vous devez :
.tar.xz (poids réduit). Ces versions sont statiques et resteront en date du 8 mai 2026.Nous allons utiliser des chemins d’exemple généralistes. Important : Partout où vous verrez /votre/chemin/, remplacez-le par le chemin réel sur votre serveur (par exemple : /root/npm/data ou /home/user/data).
Créez la structure pour accueillir la base complémentaire ip66 :
# Remplacez /votre/chemin/ par votre dossier de données réel
mkdir -p /votre/chemin/geoip2
mkdir -p /votre/chemin/ip66
L’outil standard mmdblookup est parfait pour MaxMind, mais pour lire les données plus complexes (JSON) de la base ip66, nous avons besoin de mmdbinspect. Voici comment l’installer étape par étape :
cd /tmp
wget https://github.com/maxmind/mmdbinspect/releases/download/v0.2.0/mmdbinspect_0.2.0_linux_amd64.tar.gz
tar xvf mmdbinspect_0.2.0_linux_amd64.tar.gz
mv mmdbinspect_0.2.0_linux_amd64/mmdbinspect /usr/local/bin/
chmod +x /usr/local/bin/mmdbinspect
rm -rf mmdbinspect_0.2.0_linux_amd64*
Nous allons créer un petit script léger pour récupérer la base ip66 une fois par semaine.
Créez le fichier : nano /votre/chemin/ip66/update_ip66.sh
#!/bin/bash
# Script de mise à jour de la base ip66.dev
DEST_DIR="/votre/chemin/ip66"
URL="https://downloads.ip66.dev/db/ip66.mmdb"
cd "$DEST_DIR" || exit
# Téléchargement vers un fichier temporaire
wget -q --no-check-certificate --user-agent="Mozilla/5.0" "$URL" -O ip66.mmdb.tmp
# Si le fichier reçu n'est pas vide, on remplace l'ancienne base
if [ -s "ip66.mmdb.tmp" ]; then
mv ip66.mmdb.tmp ip66.mmdb
chmod 644 ip66.mmdb
echo "Mise à jour ip66.dev terminée avec succès."
else
rm -f ip66.mmdb.tmp
echo "Erreur lors du téléchargement."
fi
Rendez-le exécutable : chmod +x /votre/chemin/ip66/update_ip66.sh
Voici le cœur du système. Cet alias est à copier dans votre fichier ~/.bash_aliases (ou ~/.bashrc).
geoip() {
# --- CONFIGURATION DES CHEMINS ---
local PATH_MM="/votre/chemin/geoip2"
local PATH_I66="/votre/chemin/ip66/ip66.mmdb"
# Couleurs pour la lisibilité
local C_CYAN='\033[0;36m'
local C_RED='\033[0;31m'
local C_BOLD='\033[1m'
local C_RESET='\033[0m'
echo -e "${C_BOLD}${C_CYAN}Lancement de l'outil GeoIP Multi-Sources...${C_RESET}"
echo -e "Note : Vous pouvez quitter à tout moment avec ${C_BOLD}CTRL+C${C_RESET}."
while true; do
echo -e "\n--- SOURCE DE DONNÉES ---"
echo "1) MaxMind (GeoLite2)"
echo "2) ip66.dev (MMDBinspect)"
echo "q) Quitter"
read -p "Votre choix : " source
[[ "$source" == "q" ]] && break
[[ ! "$source" =~ ^[1-2]$ ]] && { printf "${C_RED}Erreur : Choisissez 1 ou 2.${C_RESET}\n"; continue; }
while true; do
echo -e "\n--- MENU INFO ---"
echo "1) ASN | 2) Ville | 3) Pays | 4) DUMP COMPLET | b) Retour"
read -p "Votre choix : " choice
[[ "$choice" == "b" ]] && break
[[ "$choice" =~ ^[0-9]{1,3}(\.[0-9]{1,3}){3}$ ]] && { printf "${C_RED}Attention : Entrez un chiffre (1-4), pas l'IP ici !${C_RESET}\n"; continue; }
[[ ! "$choice" =~ ^[1-4]$ ]] && { printf "${C_RED}Choix invalide.${C_RESET}\n"; continue; }
while true; do
read -p "Entrez l'IP : " ip
[[ -z "$ip" ]] && { echo "IP manquante."; continue; }
[[ "$ip" =~ ^[0-9]{1,2}$ ]] && { printf "${C_RED}Erreur : Entrez une IP valide !${C_RESET}\n"; continue; }
break
done
if [ "$source" == "1" ]; then
case $choice in
1) res=$(mmdblookup --file "$PATH_MM/GeoLite2-ASN.mmdb" --ip "$ip" autonomous_system_organization 2>/dev/null | grep -oP '".*?"' | tr -d '"')
printf ">> ASN : ${C_BOLD}${C_CYAN}%s${C_RESET}\n" "${res:-Inconnu}" ;;
2) res=$(mmdblookup --file "$PATH_MM/GeoLite2-City.mmdb" --ip "$ip" city names en 2>/dev/null | grep -oP '".*?"' | tr -d '"')
printf ">> Ville : ${C_BOLD}${C_CYAN}%s${C_RESET}\n" "${res:-Inconnue}" ;;
3) res=$(mmdblookup --file "$PATH_MM/GeoLite2-Country.mmdb" --ip "$ip" country names fr 2>/dev/null | grep -oP '".*?"' | tr -d '"')
printf ">> Pays : ${C_BOLD}${C_CYAN}%s${C_RESET}\n" "${res:-Inconnu}" ;;
4) mmdblookup --file "$PATH_MM/GeoLite2-City.mmdb" --ip "$ip" 2>/dev/null ;;
esac
else
case $choice in
1) res=$(mmdbinspect -db "$PATH_I66" "$ip" 2>/dev/null | grep "autonomous_system_organization" | head -n 1 | grep -oP '(?<=": ").*(?=")')
printf ">> ASN : ${C_BOLD}${C_CYAN}%s${C_RESET}\n" "${res:-Inconnu}" ;;
2) res=$(mmdbinspect -db "$PATH_I66" "$ip" 2>/dev/null | sed -n '/"city":/,/}/p' | grep '"en":' | grep -oP '(?<=": ").*(?=")')
printf ">> Ville : ${C_BOLD}${C_CYAN}%s${C_RESET}\n" "${res:-Inconnue}" ;;
3) res=$(mmdbinspect -db "$PATH_I66" "$ip" 2>/dev/null | sed -n '/"country":/,/}/p' | grep '"en":' | head -n 1 | grep -oP '(?<=": ").*(?=")')
printf ">> Pays : ${C_BOLD}${C_CYAN}%s${C_RESET}\n" "${res:-Inconnu}" ;;
4) mmdbinspect -db "$PATH_I66" "$ip" 2>/dev/null ;;
esac
fi
done
done
}
Si vous utilisez AdGuard Home, il est possible que download.maxmind.com soit bloqué par défaut. Si vos bases ne se mettent pas à jour, pensez à ajouter ce domaine à votre liste d’autorisation (Whitelist).
Rien de tel qu’une petite démonstration visuelle pour voir comment l’alias geoip se comporte « dans la vraie vie ».
Auteur : ce guide est proposé par Amaury aka BlablaLinux. Retrouvez l’ensemble de mes services sur blablalinux.be/mes-services-publics/.