Programmation.c : relai de connection TCP via apache
Posté par Emeric Verschuur (Jabber id, page perso, ) le 09 mai 2008Bonjour,
Étant comme beaucoup de gens confronté à un blocage de port, je voudrais élaborer une solution dont voici le principe :
Donnée du problème :
* Serveur x en local qui est en écoute d'une connections sur un port y
* Serveur HTTP (apache qui héberge mon sites ainsi que d'autres services)
* Un client z qui ne peux pas se connecter directement au serveur x car le port y est bloqué en sortie par le routeur.
Le mode de communication entre le client z et le serveur x est asynchrone donc le client envoie des données (requêtes) au serveur et vice-versa.
Principe :
Voilà : le souci c'est comment faire passer une session TCP via le port 80 pour finalement être relayer sur le port y...
Ce que je voudrais c'est par exemple :
z commence une session TCP avec apache sur le port 80
z envoie une requête une requête "GET /dossier-redirect/" (On suppose que apache est configuré de telle manière que l'accès au dossier /dossier-redirect/ fait appel à un module ou script CGI nommé s).
s récupère le no de socket (descripteur de fichier) associé à la connexion http avec z
s commence une session TCP avec le serveur x sur le port y
en fin s relaye les données de s vers z et vice-versa jusqu'à ce que z ou s effectue une clôture de session tcp.
voilà, je sais que c'est assez tordu mais ma question c'est : est ce que c'est faisable ? et est ce qu'il y aurait d'autre alternatives.
ps: ce que je voudrais éviter, c'est un proxy http ou tunnel http...
merci d'avance
> Lire le message (5 commentaires, moyenne: 1,4).



Re: SSH
Il y a une autre possibilité de filtrage : le niveau 7 : si le routeur bloque tous les ports et vérifie la cohérence applicative des ports autorisés, cela devient plus chaud
Exemple : le routeur peut vérifier que sur le 21, tu ne fais que des commandes FTP, que tu fais bien du HTTP sur le port 80 etc.
Or, il y a une faille bien souvent dans ce type d'appli : le 443, souvent relayé tel quel, ou, au mieux, le routeur à pare-feu applicatif vérifie juste qu'il s'agit bien de dialogue SSL. Or, SSH et HTTPS ont ce point commun ;)
Moralité, installer un serveur ssh sur le port 443 peut parfois s'avérer très utile, ...
Après, une fois ssh ouvert, -L et -R (voire -D, furieux va ! ) sont vos amis
[ Répondre ]