Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
httptunnel [Le 05/10/2008, 15:57]
maclane45
httptunnel [Le 26/11/2023, 14:11] (Version actuelle)
Amiralgaby [En cas de soucis] utilisation de ss plutôt que netstat
Ligne 1: Ligne 1:
-{{tag>gutsy, hardy}} +{{tag>Trusty Xenial Proxy}} 
-====== HTTP-Tunnel où comment encapsuler dans des paquets HTTP ======= +----
-\\ +
-HTTP-Tunnel sert à encapsuler des paquets d'un autre protocole (FTP, SHH, etc) dans des paquets HTTP.\\ Ceci permet de passer à travers certains pare-feux ou proxys qui bloquent les paquets, notamment sur des réseaux sécurisé d'​entreprise.\\ +
-\\+
  
-==== Nécessaire ​====+====== ​HTTP-Tunnel,​ ou comment encapsuler dans des paquets HTTP ======= 
 +{{http-tunnel.png|}}\\ 
 +HTTP-Tunnel sert à encapsuler des paquets d'un autre protocole (FTP, SSH, etc) dans des paquets HTTP. Ceci permet de passer à travers de certains pare-feux ou proxys qui bloquent les paquets, notamment sur des réseaux sécurisés d'​entreprise. 
 +===== Pré-requis ===== 
 +  
 +  * Disposer des [[:​sudo|droits d'​administration]]. 
 +  * Disposer d'une connexion à Internet configurée et activée.
  
-[[tutoriel:​comment_installer_un_paquet|Installer le paquet]] **[[apt://httptunnel|HTTP-Tunnel]]**\\ +//Voir aussi SSH et Crokscrew ​[[https://forum.ubuntu-fr.org/​viewtopic.php?​id=213500]] , une solution plus simple uniquement coté client pour passer le proxy. Pour avoir des tunnels, l'​emploi des tunnels SSH est alors plus sure puisque automatiquement crypté. 
-\\ +// 
-En ligne de commandes dans un terminal :\\+===== Installation =====
  
-<code> +[[tutoriel:​comment_installer_un_paquet|Installer le paquet]] **[[apt>​httptunnel]]**
-sudo apt-get install ​httptunnel +
-</​code>​+
  
 +===== Fonctionnement ======
  
-==== Principe ​de fonctionnement =====+Le paquet **http-tunnel** doit être installé sur le client et sur le serveur. Ce paquet est composé du serveur http-tunnel qu'on appelle par la commande **hts** et du client http-tunnel qu'on appelle par la commande **htc**. Le principe est que le serveur http-tunnel écoute sur un port TCP donné (toujours au dessus ​de 1024) et que le client se connecte sur ce port afin de créer un tunnel. Ensuite le client FTP ou SSH désiré se connecte sur le client **htc** (en local la plupart du temps, nous allons y revenir), et le serveur **hts** redirige le flux vers le serveur SSH (en local aussi).
  
-Le paquet **http-tunnel** doit être installé sur le client et sur le serveur. Ce paquet est composé du serveur http-tunnel qu'on appelle par la commande **hts** et du client http-tunnel qu'on appelle par la commande **htc**. Le principe est que le serveur http-tunnel écoute sur un port TCP donné (toujours au dessus de 1024) et que le client ce connecte sur ce port afin de créer un tunnel. Ensuite le client FTP ou SSH désiré se connecte sur le client **htc** (en local la plupart du temps, nous allons y revenir) et le serveur **hts**, redirige le flux vers le serveur SSH (en local aussi). Je vais essayer d'​être le plus clair possible.\\ 
-\\ 
 <​code>​ <​code>​
 ______________ ​                                 _______________ ______________ ​                                 _______________
Ligne 34: Ligne 34:
 </​code>​ </​code>​
  
-==== Lancement du serveur ​==== + 
-\\+===== Configuration ​===== 
 Dans cet exemple le serveur **hts** écoute sur le port TCP 10000 de l'​adresse **monsite.com**,​ et redirige Dans cet exemple le serveur **hts** écoute sur le port TCP 10000 de l'​adresse **monsite.com**,​ et redirige
-tout ce qui arrive vers le port 22 de la même machine (localhost) pour le lancer on utilise la ligne de commande suivante :\\ +tout ce qui arrive vers le port 22 de la même machine (localhost) pour le lancer on utilise la ligne de commande suivante : 
-\\+
 <​code>​ <​code>​
-hts -F localhost:10000 22+hts -F localhost:​22 ​10000
 </​code>​ </​code>​
  
  
-==== Lancement du client ==== 
  
-Sur le client on transfère le port de connexion SSH (23000) vers le serveur HTTP-Tunnel (monsite.com:​10000) et il faut paramétrer le proxy si vous en utilisez un (voir options de connexion).\\ +===== Utilisation ===== 
-\\+ 
 +Sur le client on transfère le port de connexion SSH (23000) vers le serveur HTTP-Tunnel (monsite.com:​10000) et il faut paramétrer le proxy si vous en utilisez un (voir options de connexion). 
 <​code>​ <​code>​
 htc -F 23000 -P le_proxy:​8080 monsite.com:​10000 htc -F 23000 -P le_proxy:​8080 monsite.com:​10000
Ligne 55: Ligne 57:
 Il faut impérativement lancer le serveur HTTP-Tunnel avant le client, sinon la connexion qui passe au travers ne s'​établit pas. Il faut impérativement lancer le serveur HTTP-Tunnel avant le client, sinon la connexion qui passe au travers ne s'​établit pas.
 </​note>​ </​note>​
-Ensuite il suffit de lancer la commande suivante sur le client pour se connecter au serveur.\\+Ensuite il suffit de lancer la commande suivante sur le client pour se connecter au serveur.
  
 <​code>​ <​code>​
-ssh utilisateur@localhost:23000+ssh utilisateur@localhost ​-p 23000
 </​code>​ </​code>​
  
Ligne 65: Ligne 67:
 </​note>​ </​note>​
  
 +===== Script de démarrage =====
  
 +<​note>​
 +Il est possible que vous rencontriez l'​erreur suivante (avec la version 3.3+dfsg-3) lorsque **hts** est lancé en tant que **root** :
 +  tunnel_accept:​ couldn'​t write GET header: Invalid argument
 +Le problème est discuté là :
  
 +  * [[https://​github.com/​larsbrinkhoff/​httptunnel/​issues/​3|GitHub]]
 +  * [[http://​askubuntu.com/​questions/​694510/​invalid-argument-error-in-httptunnel-client/​694568|AskUbuntu]]
  
 +Le bug a été corrigé sur [[https://​github.com/​larsbrinkhoff/​httptunnel/​commit/​a578fb44f37c9ef8689d1030e19a69a73e914820|GitHub]]
  
 +Installer le [[http://​packages.ubuntu.com/​wily/​httptunnel|package httptunnel 3.3+dfsg-4]] de [[Wily]] corrige le problème.
 +</​note>​
 +<note important>​À partir d'​[[:​xenial|Ubuntu 16.04]], le système d'​initialisation par défaut d'​Ubuntu est [:​[Systemd]].
 +Reportez-vous au tutoriel suivant : [[Créer un service avec Systemd]]
 +</​note>​
 +Ci dessous un script de démarrage pour **/​etc/​init.d/​** pour ajouter au démarrage du système le serveur HTTP-Tunnel.
  
- +Créez un fichier appelé **/​etc/​init.d/​httptunnel ** et rendez-le exécutable ​:
- +
- +
-==== Script de démarrage ==== +
-\\ +
-Ci dessous un script de démarrage pour **/​etc/​init.d/​** pour ajouter au démarrage du système le serveur HTTP-Tunnel.\\ +
-\\ +
-Créez un fichier appelé **/​etc/​init.d/​httptunnel ** et rendez le éxecutable ​:\\+
 <​code>​ <​code>​
-sudo touch /​etc/​init.d/​httpdtunnel ​&& sudo chmod 755 /​etc/​init.d/​httptunnel+sudo touch /​etc/​init.d/​httptunnel ​&& sudo chmod 755 /​etc/​init.d/​httptunnel
 </​code>​ </​code>​
 Pensez aussi à créer le fichier de log (**/​var/​log/​hts_server.log**) avant de lancer ce script. Pensez aussi à créer le fichier de log (**/​var/​log/​hts_server.log**) avant de lancer ce script.
 <​code>​ <​code>​
-sudo touch /​var/​log/​hts_server.log && sudo chmod 666 /​var/​log/​hts_server.log+sudo touch /​var/​log/​hts_server.log && sudo chmod 644 /​var/​log/​hts_server.log
 </​code>​ </​code>​
 Ajouter httptunnel aux applications à démarrer au lancement du système.\\ Ajouter httptunnel aux applications à démarrer au lancement du système.\\
Ligne 89: Ligne 98:
 sudo update-rc.d httptunnel defaults sudo update-rc.d httptunnel defaults
  
- Adding system startup for /​etc/​init.d/​httptunnel ... +Adding system startup for /​etc/​init.d/​httptunnel ... 
-   ​/​etc/​rc0.d/​K20httptunnel -> ../​init.d/​httptunnel +  /​etc/​rc0.d/​K20httptunnel -> ../​init.d/​httptunnel 
-   ​/​etc/​rc1.d/​K20httptunnel -> ../​init.d/​httptunnel +  /​etc/​rc1.d/​K20httptunnel -> ../​init.d/​httptunnel 
-   ​/​etc/​rc6.d/​K20httptunnel -> ../​init.d/​httptunnel +  /​etc/​rc6.d/​K20httptunnel -> ../​init.d/​httptunnel 
-   ​/​etc/​rc2.d/​S20httptunnel -> ../​init.d/​httptunnel +  /​etc/​rc2.d/​S20httptunnel -> ../​init.d/​httptunnel 
-   ​/​etc/​rc3.d/​S20httptunnel -> ../​init.d/​httptunnel +  /​etc/​rc3.d/​S20httptunnel -> ../​init.d/​httptunnel 
-   ​/​etc/​rc4.d/​S20httptunnel -> ../​init.d/​httptunnel +  /​etc/​rc4.d/​S20httptunnel -> ../​init.d/​httptunnel 
-   ​/​etc/​rc5.d/​S20httptunnel -> ../​init.d/​httptunnel+  /​etc/​rc5.d/​S20httptunnel -> ../​init.d/​httptunnel
  
 </​code>​ </​code>​
-<code>+\\ 
 +[[tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​init.d/​httptunnel** en tant que root (sinon vous n'​aurez pas les droits en écriture), et copier/​coller le script ci-dessous dedans. 
 +<file bash httptunnel>
 #!/bin/sh #!/bin/sh
 +#
 +### BEGIN INIT INFO
 +# Provides: ​         httptunnel
 +# Required-Start: ​   $syslog $remote_fs $network
 +# Required-Stop: ​    ​$syslog $remote_fs $network
 +# Default-Start: ​    2 3 4 5
 +# Default-Stop: ​     0 1 6
 +# Short-Description:​ Start httptunnel as daemon at boot time
 +### END INIT INFO
 # #
 # Declaration des variables # Declaration des variables
Ligne 162: Ligne 182:
 esac esac
 exit 0 exit 0
 +</​file>​
 +
 +Ce script peut donc être appelé par la commande **/​etc/​init.d/​httptunnel** et accepte 4 arguments différents :
 +  * **start** pour lancer le service ;
 +  * **stop** pour l'​arrêter ;
 +  * **status** pour afficher un état des lieux ;
 +  * **view_log** pour afficher le journal.
 +===== En cas de soucis =====
 +Si votre tunnel ne se crée pas coté serveur ou coté client, pensez à vérifier si le port demandé en écoute pour **hts** ou **htc** est bien libre.
 +
 +<​code>​
 +sudo ss -lap | grep -F ":​56986"​ # remplacer 56986 par le numéro de port
 </​code>​ </​code>​
  
-==== Liens ====+Si le port est déjà occupé cette commande affichera quelque chose dans le résultat, autrement elle n'​affichera rien. Bon courage
  
 +
 +
 +===== Voir aussi =====
 +\\
 +[[https://​www.commentcamarche.net/​forum/​affich-59147-tunnelling-ip-over-http|Documentation commentcamarche]]\\
 +[[https://​en.wikipedia.org/​wiki/​HTTP_tunnel_(software)|Documentation Wikipedia]] en anglais\\
 +[[https://​github.com/​larsbrinkhoff/​httptunnel|Site Officiel]]
 +----
 +//​Contributeurs : [[utilisateurs:​maclane45|maclane45]]//​
  • httptunnel.1223215044.txt.gz
  • Dernière modification: Le 18/04/2011, 14:40
  • (modification externe)