Si vous vous déplacez souvent que vous cherchez toujours à passer outre les portails captifs des bornes WiFi...

Si vous êtes dans une société où le Firewall vous casse les bonbons et vous empêche de faire 2 ou 3 trucs...

Ou si vous avez besoin d'établir un tunnel chiffré entre 2 machines pour échanger des petits secrets...

J'ai ce qu'il vous faut ! Ça s'appelle ICMPTunnel et ça permet d'encapsuler votre trafic IP dans des packets ICMP de type echo. D'un côté, il vous faut un serveur proxy ICMPTunnel qui recevra et désencapsulera les paquets avant de les transmettre à l'hôte ou au site que vous essayez de joindre. Et de l'autre, votre client installé en local sur votre machine, enverra à ce serveur proxy les requêtes (planquées dans de l'ICMP) et recevra les réponses (toujours planquées dans de l'ICMP) qu'il devra décoder.

Je vous préviens tout de suite, ce sera ultra méga long... N'espérez pas que votre surf soit agréable ou pouvoir avec ça, mater une petite série en streaming. N'empêche ça peut rendre service quand tout est bloqué de partout.

Pour vous servir de ICMP Tunnel, allez télécharger les sources comme ceci :

git clone https://github.com/DhavalKapil/icmptunnel

Puis faites :

make

Ensuite côté serveur, lancez le tunnel avec les privilèges root et l'adresse IP locale qu'aura le serveur au bout de ce tunnel.

sudo ./icmptunnel -s 10.0.1.1

Ensuite côté client, localisez la passerelle (Gateway) de votre interface avec la commande :

route -n

Editez le fichier client.sh et remplacez <server> par l'adresse IP de votre serveur proxy. Remplacez <gateway> par l'IP de la passerelle renvoyé par la commande route ci-dessus et spécifiez l'interface (eth0 par exemple) à la place de <interface>. Vous devriez voir aussi dans ce fichier l'adresse IP locale de la machine lorsqu'elle sera connectée au tunnel (10.0.1.2)

Vérifiez ensuite vos DNS côté client pour être sûr qu'ils sont aussi bien accessibles par votre serveur proxy. Ensuite côté client, initiez la connexion au tunnel avec la commande suivante :

sudo ./icmptunnel -c ADRESSE_IP_DU_SERVEUR_PROXY

Et voilà... Le tunnel devrait s'établir et les machines commencer à communiquer entre elles. À tester !

Notez que j'ai remarqué que si le proxy recevait déjà beaucoup de paquets ICMP, ça avait tendance à planter rapidement, donc utilisez plutôt une machine qui n'est pas trop sollicité à la base.