IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Port forwarding en C++


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Janvier 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Port forwarding en C++
    Bonjour,
    J'ai développé un serveur en C++ et je voudrais pouvoir y communiquer avec un client distant cependant il faut que j'ouvre le port du serveur sur l’extérieur (port forwarding) mais je n'ai aucune idée de comment faire en C++.
    Sur internet je ne trouve que des tutos pour ouvrir un port manuellement, moi je voudrais le faire automatiquement de la même façon que font les logiciels P2P.

    Pouvez vous éclairer svp? Merci d'avance

    PS: Je suis sous Windows

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Je présume que ton serveur se trouve derrière une box internet et que tu dois rediriger manuellement des ports de la box vers des ports de ton serveur pour pouvoir accéder à ton serveur ?
    Or tu souhaiterais pouvoir rediriger automatiquement les ports de ta box ?

    Si oui, la solution serait de faire du "hole punching".

    A moins que tu ne parles d'autoriser à ton serveur à ouvrir le port car il est bloqué par défaut par le parefeux Windows ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Janvier 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Merci pour ta réponse
    Je ne connaissais pas le hole punching, j'ai recherché ce que c'était et j'ai pu voir que c'était pas mal utilisé en réseau pour le P2P, VoIP, visioconférence, etc... Donc cette solution m’intéresse beaucoup et je vais me renseigner sur son fonctionnement

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Si tu utilises boost, j'ai un code presque tout fait (moyennant quelques modifications et améliorations selon tes besoins).

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Janvier 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Je veux bien le code si tu l'as stp

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Je te le donne en pièce jointe.

    Si jamais tu corriges des bugs ou fait des modifications, fais-en moi part

    Je n'ai pas eu le temps d'ajouter les commentaires.
    Pour faire simple, j'ai trois postes :
    - Serveur ;
    - Hote ;
    - Client ;

    L’hôte se connecte au serveur et lui donne une clée ( 8 octets). Le serveur associe alors à la clée l'ip et le port de l’hôte.

    Le client se connecte au serveur et récupère l'ip et le port de l'hôte grâce à la clé.
    Puis il se connecte à l'hôte grâce à l'ip et au port donné.

    Si cela marche, c'est parce que côté hôte, on utilise reuse pour écouter le même port que pour le socket de communication avec le serveur en attente de connexion entrante. Et comme un socket discute avec le serveur, la box redirige automatiquement un de ses ports vers le port de l'hôte.
    Fichiers attachés Fichiers attachés

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Janvier 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Merci
    Citation Envoyé par Neckara
    Si jamais tu corriges des bugs ou fait des modifications, fais-en moi part
    Pas de problème

  8. #8
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    Citation Envoyé par debian21 Voir le message
    moi je voudrais le faire automatiquement de la même façon que font les logiciels P2P.
    Les logiciels de P2P ne font rien automatiquement, il faut quand même rediriger manuellement au moins un port sur la box ! Ce qui arrive sur certaines box, c'est que des plages de ports entières soient redirigées, ou alors la box n'est pas configurée en NAT parce qu'un seul appareil est branché, et dans ce cas ça marche tout seul.

    Ton exécutable doit aussi avoir le droit d'ouvrir des ports sans que Windows ne l'en empêche. Les logiciels de P2P peuvent le faire car ils obtiennent ces droits à l'installation, qui nécessite des droits administrateur.

    Le hole punching est une autre histoire. Il va permettre la redirection automatique de ports, mais il faut bien que le client puisse accéder au serveur au moins au début pour récupérer la clé, et pour ça il lui faut un port que le serveur écoute et qui a été redirigé à l'origine.
    Find me on github

  9. #9
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    @jblecanard : Cela va dépendre de la structure de ton réseau P2P, mais P2P n'exclus pas le fait qu'on puisse avoir un petit serveur pour certaines tâches.

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Neckara Voir le message
    @jblecanard : Cela va dépendre de la structure de ton réseau P2P, mais P2P n'exclus pas le fait qu'on puisse avoir un petit serveur pour certaines tâches.
    Certes oui ! Mais qui dit serveur dit... port pour pouvoir se connecter dessus, non ?
    Find me on github

  11. #11
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    UPNP, non ? On doit pouvoir trouver des bibliothèques pour ça (si je ne me plante pas, il va simplement falloir annoncer ton service, et le routeur, s’il est configuré pour, créera la route correspondante)

    Après, c’est une faille de sécurité, mais si c’est ce que tu veux faire…

  12. #12
    Membre confirmé

    Homme Profil pro
    Etudiant
    Inscrit en
    Juillet 2012
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 108
    Points : 573
    Points
    573
    Par défaut
    Mhhh... Concernant le p2p, tu as Openp2p que je viens de voir, qui est une bibliotheque qui est un wrapper de boost asio, fait pour le P2P.

    et l'UPNP je connais mais, je ne pense pas que ça soit l'utilisation adéquate (je me trompe (?)) mais, comme Neckara la précisé la technique à utiliser est le hole punching. D'ailleurs c'est plus utilisé pour de l'UDP, et beaucoup moins pour du TCP.
    Le paradigme de chacun ne dépend pas de lui, mais de son éducation...

    Le mot donne à la pensée son existence la plus haute et la plus noble.
    Spinoza

    Quiconque n'est pas choqué par la théorie quantique ne la comprend pas.
    Niels Bohr

    http://isocpp.org/

  13. #13
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    L’upnp sert à beaucoup de trucs (encore plus avec l’upnpav, qui est en fait très différent), mais notamment à ça : configurer automatiquement les routes reverse nat.

    Donc je pense que c’est à creuser (il me semble bien que c’est ce qu’utilisent la plupart des logiciels de p2p). Le hole punching, si les deux machines sont natées, c’est mort.

  14. #14
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Pour le hole punching, il suffit juste d'avoir une troisième machine, et on pourra trouver des serveurs gratuits proposant un tel service dans quelques semaines.

Discussions similaires

  1. Iptables port forwarding
    Par blacksnake dans le forum Sécurité
    Réponses: 2
    Dernier message: 10/03/2007, 00h09
  2. [Routeur et port forwarding] Simple curiosité
    Par daladim dans le forum Protocoles
    Réponses: 8
    Dernier message: 02/12/2006, 15h54
  3. Ipmasqadmin : problème sur le port forwarding
    Par tanjonaravelson dans le forum Réseau
    Réponses: 2
    Dernier message: 18/11/2005, 13h14
  4. Port forwarding et port triggering
    Par kap dans le forum Développement
    Réponses: 4
    Dernier message: 25/10/2005, 12h28
  5. Ports forwarding avec iptables
    Par Iced Earth dans le forum Réseau
    Réponses: 6
    Dernier message: 19/11/2002, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo