Service de calcul d'itinéraire

Magazine
Marque
GNU/Linux Magazine
Numéro
189
Mois de parution
janvier 2016
Domaines


Résumé
Il peut être très utile de savoir comment se rendre d'un point A à un point B. C'est encore plus utile quand on connaît le temps de trajet estimé. Installons ça chez nous.

Body


Dans cet article, nous allons installer (en compilant) OSRM qui va nous permettre de calculer des itinéraires. Ensuite, nous verrons comment le configurer, où trouver les données et comment les traiter avec OSRM. Enfin, nous aurons un service Web qui répondra aux requêtes d'itinéraire.

1. Installation

Comme pour le précédent article [2], cet article se base sur l'utilisation d'Ubuntu 14.04.

Pour l'instant il n'y a pas de paquets à ma connaissance pour OSRM donc nous allons le compiler ; c'est un logiciel léger donc ça ne va pas prendre trop de temps, rassurez-vous.

Nous allons commencer par installer les logiciels nécessaires à son installation :

$ sudo apt-get install build-essential git cmake pkg-config libprotoc-dev libprotobuf8 protobuf-compiler libprotobuf-dev libosmpbf-dev libpng12-dev libbz2-dev libstxxl-dev libstxxl-doc libstxxl1 libxml2-dev libzip-dev libboost-all-dev lua5.1 liblua5.1-0-dev libluabind-dev libluajit-5.1-dev libtbb-dev

Le développement a lieu sur GitHub et nous allons télécharger les sources sur ce site. Même si les développeurs ont l'air de faire en sorte que la branche master fonctionne correctement, je trouve plus sûr d'utiliser une release.

Il faut donc aller sur https://github.com/Project-OSRM/osrm-backend/releases afin de trouver la dernière release puis on récupère l'archive tar.gz. À l'heure où ces lignes sont écrites, la dernière version est la v4.7.1. Je vous laisse soit utiliser cette version soit modifier les commandes données pour qu'elles s'appliquent à la version que vous téléchargez. Nous allons créer un répertoire pour mettre les sources. Je vous laisse choisir celui que vous voulez, libre à vous d'utiliser celui que je crée ou non.

$ mkdir ~/osrm-src && cd ~/osrm-src

$ wget https://github.com/Project-OSRM/osrm-backend/archive/v4.7.1.tar.gz 

$ tar xvzf v4.7.1.tar.gz

$ cd osrm-backend-4.7.1

Maintenant, nous allons compiler OSRM. Les commandes sont normalement valables, quelle que soit la version téléchargée. On va créer un répertoire pour compiler OSRM puis générer un makefile à l'aide de cmake. Enfin, on va installer OSRM afin de pouvoir l'utiliser :

$ mkdir build && cd build

$ cmake .. 

$ sudo make install

Maintenant, OSRM devrait être installé si tout s'est déroulé correctement.

2. Configuration

Si vous avez suivi l'installation du serveur de tuiles dans l'article précédent [2], vous devriez déjà avoir les données Openstreetmap dans un fichier pbf. Sinon il faut aller télécharger sur http://download.geofabrik.de/ pour la région que vous souhaitez. Pour changer, je vais utiliser la Bretagne comme exemple pour cet article.

Nous allons créer un répertoire de travail. Encore une fois, vous pouvez utiliser celui que vous voulez.

$ mkdir ~/osrm && cd ~/osrm

OSRM a besoin d'un fichier de profil en Lua pour fonctionner. Rassurez-vous, il y a plusieurs fichiers de profil fournis avec. Ils sont disponibles dans le dossier profiles présent dans l'archive d'OSRM qu'on a téléchargé. Supposons que vous souhaitiez faire du calcul d'itinéraire pour les voitures. On prendra alors le fichier nommé car.lua puis nous créerons un lien symbolique en l'appelant profile.lua :

$ ln -s ~/osrm-src/osrm-backend-4.7.1/profiles/car.lua profile.lua

OSRM est très rapide car il fait une grande partie des calculs avant, ce qu'on appelle du pre-processing. Ce pre-processing utilise une bibliothèque pour gérer l'espace disque [3]. On va donc créer un dossier de travail puis créer un fichier pour dire combien on alloue sous la forme disk=path,capacity,access. J'ai choisi arbitrairement 1G et j'ai laissé les autres options aux valeurs conseillées sur la page précédemment indiquée :

$ echo "disk=/tmp/stxxl,1G,syscall" > .stxxl

Nous allons exécuter deux commandes afin de lancer les calculs du pre-processing. La première commande va préparer les données pour OSRM et la deuxième va calculer les hiérarchies qui permettent au moteur de routage de trouver le chemin le plus court en un temps très rapide.

Puisque ces deux commandes consistent à faire beaucoup de calculs, la rapidité d'exécution de ces commandes dépend de la taille des données en entrée (si vous calculez pour une région de la France, ça ne prendra évidemment pas le même temps que pour toute la planète) et, comme toujours, de la puissance de la machine.

OSRM met les fichiers résultants de son traitement dans le dossier où on lui a donné le fichier source, donc le mieux est de le mettre dans le dossier de travail, qui est dans mon cas ~/osrm :

$ osrm-extract bretagne-latest.osm.pbf

Cette commande a généré un fichier portant le même nom que celui que vous aviez donné en entrée mais qui a comme extension .osrm. C'est ce fichier que nous allons donner à la commande suivante :

$ osrm-prepare bretagne-latest.osrm

Maintenant, OSRM a tout ce dont il a besoin. On va donc utiliser la commande pour lancer le service qui va répondre aux requêtes :

$ osrm-routed bretagne-latest.osrm

Cette commande va alors écouter le port 5000 afin de répondre aux requêtes. Si tout s'est déroulé correctement, la dernière ligne devrait être :

[info] running and waiting for requests

Il suffit alors de prendre son navigateur préféré (donc Firefox :)) pour aller demander un itinéraire afin de vérifier son bon fonctionnement. Je vous invite à vous munir des coordonnées géographiques (en degrés décimaux) de deux points situés dans la zone que vous avez choisie.

On va donc à l'url http://adresse-ip:5000/viaroute?loc=lat1,long1&loc=lat2,long2 en remplaçant les mots lat1 et long1 par la latitude et la longitude du premier point et lat2 et long2 par la latitude et la longitude du deuxième point. Dans mon cas, pour la Bretagne ça donne http://xxx.xx.xx.x:5000/viaroute?loc=48.4574,-4.3650&loc=48.4009,-4.1188 (n'essayez pas d'y voir un quelconque signe des Illuminatis, ce sont deux points au hasard pour vérifier qu'OSRM me donne bien une route).

Conclusion

On a donc installé le service qui permet de faire des calculs d'itinéraire. Il ne reste plus qu'à installer un frontend (tel que osrm-frontend [4]) pour afficher la route directement sur une carte.

Références

[1] Méthode des contractions hiérarchies : https://en.wikipedia.org/wiki/Contraction_hierarchies

[2] JACKOTS D., « Installer son propre serveur de tuiles », GNU/Linux Magazine n°188, novembre 2015.

[3] STXXL : http://stxxl.sourceforge.net/tags/master/install_config.html

[4] Frontend pour OSRM : https://github.com/Project-OSRM/osrm-frontend




Articles qui pourraient vous intéresser...

Monter son lab virtuel avec Kali Linux et VulnHub sous VirtualBox

Magazine
Marque
Linux Pratique
HS n°
Numéro
50
Mois de parution
février 2021
Domaines
Résumé

Dans cet article, nous allons mettre en place un virtual lab, un environnement de travail virtuel. Cet environnement vous permettra de créer, exécuter et détruire à volonté des VM vulnérables. Tout ceci sera fait dans un réseau virtuel, que nous allons créer, afin que ces machines vulnérables ne soient pas exposées sur Internet ni même sur votre réseau LAN, et éviter qu’un pirate puisse les retourner contre vous. Votre machine d’attaque sera également une machine virtuelle, sous Kali Linux, afin de ne pas utiliser votre machine de tous les jours pour vous connecter aux machines vulnérables, pour les mêmes raisons de sécurité. Kali Linux sera dans le réseau virtuel protégé pour pouvoir communiquer avec les VM vulnérables, et aura une carte réseau supplémentaire pour pouvoir accéder à Internet, être mise à jour, etc.

Introduction au pentesting

Magazine
Marque
Linux Pratique
HS n°
Numéro
50
Mois de parution
février 2021
Domaines
Résumé

Il n’y a plus une semaine sans qu’une grande entreprise ne révèle publiquement qu’elle a été victime d’un piratage informatique. Entreprises privées, institutions publiques, et même sociétés de services spécialisées dans la cybersécurité, aucun secteur n’est épargné. Des technologies en évolution et en augmentation perpétuelles, et la prolifération incessante d’équipements connectés (IoT) ne vont pas inverser la tendance, mais bien au contraire élargir la surface d’attaque et donc augmenter les piratages.

Exploitons l'historique de Bash

Magazine
Marque
Linux Pratique
HS n°
Numéro
50
Mois de parution
février 2021
Domaines
Résumé

Le shell standard de Linux, Bash, dispose de possibilités de gestion d'un historique des commandes qui sont fréquemment sous-exploitées. Nous allons voir dans cet article comment les utiliser de façon un peu plus poussée, grâce à la puissance de quelques outils dont nous expliquerons au passage certaines fonctionnalités.

Mise en pratique du pentesting

Magazine
Marque
Linux Pratique
HS n°
Numéro
50
Mois de parution
février 2021
Domaines
Résumé

La lecture des articles précédents vous a donné envie de vous essayer au pentesting, envie que vous aviez même peut-être déjà. Nous allons désormais passer à la pratique, en mettant en application les concepts théoriques abordés dans le premier article.

Introduction au dossier : Réalisez votre premier pentest pour sécuriser votre système

Magazine
Marque
Linux Pratique
HS n°
Numéro
50
Mois de parution
février 2021
Domaines
Résumé

Dans cette série d’articles, je vais vous faire une introduction au pentesting. Non, je ne ferai pas de vous des pirates informatiques. Nous resterons dans la légalité, et vous découvrirez ce qu’est un Ethical Hacker, quelqu’un qui teste le système informatique d’un client, avec son approbation et son consentement, pour l’aider à renforcer sa sécurité informatique.