Précédent   Forum des professionnels en informatique > Systèmes > Linux > Distributions > Debian
Debian Vos questions sur la distribution Debian
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/05/2008, 12h01   #1
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31

Informations forums :
Inscription : décembre 2006
Messages : 1 568
Points : 1 636
Points : 1 636
Par défaut Lancer différents serveurs sur un même port TCP.

Bonjour,

voilà j'ai un serveur sous Debian, et j'aimerais pouvoir avoir plusieurs serveurs qui tournent sur un même port TCP (en l'occurence le port 443):

- un serveur perso développé en Java, pour une application 'publique' (le client étant une applet).

- un serveur SSHD 'privé' pour que je puisse administrer mon serveur.

La raison est simple: de nombreuse institutions bloquent tous les ports TCP sortants hormis le HTTP (80) et HTTPS (443). Par contre, une connexion cryptée en SSL vers un serveur sur le port 443 est rarement filtrée, même si ça ne correspond pas réellement à un serveur web HTTPS.

Je voudrais que les clients puissent accéder à mon serveur Java 'public' depuis n'importe où, même derrière un tel pare-feu. De même, je voudrais moi-même pouvoir accéder au serveur SSHD depuis n'importe où pour administrer mon serveur.

Bien entendu, binder plusieurs applis sur le même port est impossible. J'aurais aimé pouvoir trouver une technique pour contourner ce souci, par exemple au moyen de DNS différents:

admettons que l'IP de mon serveur soit 'xxx.yyy.zzz.ttt'
- j'ai une première DNS 'servpublic.no-ip.org' qui pointe sur xxx.yyy.zzz.ttt
- j'ai une première DNS 'servprive.no-ip.org' qui pointe aussi sur xxx.yyy.zzz.ttt

Y aurait-il un moyen qu'en fonction du DNS utilisé pour se connecter à mon port 443, la connexion soit redirigée vers le bon démon ? genre avec deux interfaces réseau 'virtuelles' différentes et un routage en fonction du DNS d'entrée ? L'idée serait d'avoir le même genre de mécanisme que les 'name based virtual hosts' d'Apache.

Si c'est possible, pourriez-vous me donner quels logiciels il me faudrait utiliser et quelques pistes (basiques) pour savoir dans quel sens orienter mes recherches ?

Si ce n'est pas possible, y aurait-il tout de même un autre moyen pour faire ce que je veux faire ?

Merci beaucoup d'avance
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 19h24   #2
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31

Informations forums :
Inscription : décembre 2006
Messages : 1 568
Points : 1 636
Points : 1 636
personne ?
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 11h37   #3
Membre habitué
 
Avatar de Ashgenesis
 
Développeur Web
Inscription : mai 2004
Messages : 183
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2004
Messages : 183
Points : 138
Points : 138
1 service = 1 port

À ma connaissance il n'est pas possible de mettre plusieurs services à l'écoute sur le même port.
Ashgenesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 18h38   #4
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31

Informations forums :
Inscription : décembre 2006
Messages : 1 568
Points : 1 636
Points : 1 636
salut,

merci pour ta réponse.
Effectivement, un port pour une interface donnée ne peut être 'bindé' qu'à une seule application, donc à un service.
Mais on pourrait tout à fait imaginer:

- que le service en question soit tout simplement une sorte de mini routeur interne qui, en fonction de l'adresse vers laquelle le client extérieur voulait se connecter, redirige la connexion vers un service parmi plusieurs écoutant sur un autre port en interne.

- que si les mécanismes de routage/firewall interne (genre iproute, netfilter ?) sont capable de récupérer d'une façon ou d'une autre le hostname vers lequel le client voulait se connecter, il modifie le paquet pour le rediriger, par exemple sur une interface (virtuelle) différente.

- dernière idée, comme ça: si mon serveur faire tourner une sorte de serveur DNS avec des redirections, genre:
- domaine1.nouknouk.com:port => eth-virtuelle-x:port
- domaine2.nouknouk.com:port => eth-virtuelle-y:port

qu'en penses-tu de chacunes de ces solutions ?

Le problème majeur pour moi c'est que je n'ai aucune idée à priori de ce qui serait faisable ou pas, de ce qui serait viable ou pas et en fonction de la 'bonne' solution, où je pourrais trouver de l'info.

Si vous avez des idées, je suis bien évidemment preneur
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 09h30   #5
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Citation:
Envoyé par nouknouk Voir le message
salut,
- que le service en question soit tout simplement une sorte de mini routeur interne qui, en fonction de l'adresse vers laquelle le client extérieur voulait se connecter, redirige la connexion vers un service parmi plusieurs écoutant sur un autre port en interne.
Oui, comme tu le dit c'est UN service. Ton appli s'occupe d'écouter sur le port et de rediriger vers d'autres ports interne. Mais je pense que iptables couvre partiellement ce problème.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 09h54   #6
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31

Informations forums :
Inscription : décembre 2006
Messages : 1 568
Points : 1 636
Points : 1 636
Citation:
Envoyé par valefor Voir le message
Mais je pense que iptables couvre partiellement ce problème.
Qu'entends-tu par là ?
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 11h30   #7
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
J'entend que iptable fait du port forwarding. Tu recoit un truc sur un port et tu peux le transférer sur un autre. Ensuite comme les règles dépendent des caractéristiques des sources/destinataires, il doit y avoir moyen de spécifier une règle de redirection par destinataire.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 11h42   #8
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31

Informations forums :
Inscription : décembre 2006
Messages : 1 568
Points : 1 636
Points : 1 636
Citation:
Envoyé par valefor Voir le message
J'entend que iptable fait du port forwarding. Tu recoit un truc sur un port et tu peux le transférer sur un autre. Ensuite comme les règles dépendent des caractéristiques des sources/destinataires, il doit y avoir moyen de spécifier une règle de redirection par destinataire.
Justement c'est exactement ce que je cherche à faire

Exemple concret: mon serveur a une IP xxx.yyy.zzz.ttt
- public.no-ip.org pointe sur xxx.yyy.zzz.ttt
- prive.no-ip.org pointe sur xxx.yyy.zzz.ttt également

Sur mon serveur, je lance deux services:
- un SSHD dur le port 22.
- un apache HTTPS sur le port 12345.

Si le client se connecte sur public.no-ip.org:443 il doit être redirigé vers le port 12345.
Si un client se connecte sur prive.no-ip.org:443 il doit etre redirigé vers le port 22.

Voilà l'idée.

MAIS JUSTEMENT, iptables peut-il me permettre de faire cela ? et si oui, quelqu'un aurait-il quelques pistes ?

Merci
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 13h23   #9
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Après réflexion non, car il faudrait faire la translation au niveau du serveur de noms.

Je ne sais pas si une trame tcp/ip contient le nom de l'hôte destinataire ?
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 14h22   #10
Membre expérimenté
 
Avatar de Pilru
 
Homme
Dev ASP.NET/jQuery ; Admin ORACLE
Inscription : septembre 2007
Messages : 418
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Dev ASP.NET/jQuery ; Admin ORACLE

Informations forums :
Inscription : septembre 2007
Messages : 418
Points : 531
Points : 531
Citation:
Envoyé par nouknouk Voir le message
Si le client se connecte sur public.no-ip.org:443 il doit être redirigé vers le port 12345.
Si un client se connecte sur prive.no-ip.org:443 il doit etre redirigé vers le port 22.

Voilà l'idée.

MAIS JUSTEMENT, iptables peut-il me permettre de faire cela ?
Merci
Non.

Un port = un service.
http = port 80
https = 443
etc.

Si public.no-ip.org et prive.no-ip.org sont un seul et même serveur, alors le port 443 ne pourra être redirigé que vers un seul autre port.

La seule solution que je vois (et la moins casse gueule), c'est d'avoir 2 serveurs : L'un pour le https (avec un port fowarding 443 -> 12345) et l'autre pour le sshd (avec un port fowarding 443 -> 22).
Pilru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 22h06   #11
Membre Expert
 
Homme
Inscription : mars 2004
Messages : 1 051
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 1 051
Points : 1 031
Points : 1 031
Bonjour,

Non, il n'y a pas le nom de domaine dans les trames TCP.
Sinon, il n'y aurait pas de serveurs DNS

Les noms de domaines se trouvent que dans la couche 'applicative' (par exemple l'entete host des trames HTTP.
Tu ne pourras que faire de la reconnaissance sur les trames en clair. Les connexions HTTPS ou SSH étant cryptées, tu ne pourras pas acceder à ces informations.
__________________
Chaval
__________________
"Monsieur le chat voudriez-vous, s'il vous plait, demanda Alice, me dire de quel côté dois-je aller ?
Ca dépend de l'endroit où vous voulez vous rendre, répondit le chat"
Lewis Carrol
chaval est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2008, 13h16   #12
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31

Informations forums :
Inscription : décembre 2006
Messages : 1 568
Points : 1 636
Points : 1 636
effectivement, le DNS est utilisé en amont pour récupérer l'IP et ensuite travailler uniquement avec elle.

Une petite idée comme ça: avec une seule DNS (x.no-ip.org), pourrais-je définir des sous-domaines (dom1.x.no-ip.org et dom2.x.no-ip.org), faire que mon serveur soit un serveur DNS pour ces sous-domaines, et ainsi pouvoir discriminer les deux trafics pour les rediriger chacun vers une interface réseau virtuelle ?
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2008, 19h26   #13
Membre Expert
 
Homme
Inscription : mars 2004
Messages : 1 051
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 1 051
Points : 1 031
Points : 1 031
non, le serveur DNS ne fait qu'associer une adresse IP à un nom de domaine.
Il ne fait pas de routage, il n'intervient pas sur les paquets envoyés/traités

Le serveur DNS est intérrogé à l'envoi d'un paquet par le client, afin que le dit paquet puisse etre acheminé au bon serveur
__________________
Chaval
__________________
"Monsieur le chat voudriez-vous, s'il vous plait, demanda Alice, me dire de quel côté dois-je aller ?
Ca dépend de l'endroit où vous voulez vous rendre, répondit le chat"
Lewis Carrol
chaval est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2008, 19h44   #14
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31

Informations forums :
Inscription : décembre 2006
Messages : 1 568
Points : 1 636
Points : 1 636
Citation:
Envoyé par chaval Voir le message
non, le serveur DNS ne fait qu'associer une adresse IP à un nom de domaine.
Il ne fait pas de routage, il n'intervient pas sur les paquets envoyés/traités

Le serveur DNS est intérrogé à l'envoi d'un paquet par le client, afin que le dit paquet puisse etre acheminé au bon serveur
Merci pour la réponse.
Je ne pensais pas à faire discriminer le trafic par le serveur DNS lui-même, mais par une règle dans iptables.

Mais tu as raison: n'ayant qu'une seule IP publique, je ne peux de toute façon rien espérer.

Merci à tous en tout cas
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h22.


 
 
 
 
Partenaires

Hébergement Web