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

Réseau C Discussion :

Serveur : bind sur plusieurs IPs


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Par défaut Serveur : bind sur plusieurs IPs
    Bonjour,

    J'ai une machine avec 4 IPs : A, B, C et D

    Je voudrais créer un programme serveur qui écoute sur un port X et sur les adresses A et B uniquement.

    Est-ce possible ?

    Mon code actuel écoute sur toutes les IPs et ça va pas.
    Je pourrais faire un bind sur l'IP A ou B mais comment faire pour A et B ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    struct sockaddr_in SockLocale;
     
    g_sock = socket(AF_INET, SOCK_STREAM, 0);
    if(g_sock==INVALID_SOCKET) exit(-1);
     
    memset(&SockLocale,0,sizeof(struct sockaddr_in));
    SockLocale.sin_family = AF_INET;
    SockLocale.sin_addr.s_addr = htonl(INADDR_ANY);
    SockLocale.sin_port = htons(X);
     
    if(bind(g_sock,(struct sockaddr*)&SockLocale,sizeof(struct sockaddr_in)) != SOCKET_ERROR) {
        if(listen(g_sock, 5)<0) {
            printf("Echec de Listen()\n");
            exit(-1);
        }
    }
    else {
        printf("echec de bind()\n");
        exit(-1);
    }

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Il suffit de spécifier une adresse au lieu d'utiliser INADDR_ANY. Pour ce faire, tu peux utiliser des fonctions comme inet_aton() ou inet_addr(). "man 7 ip" pour plus d'infos.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Par défaut
    Citation Envoyé par matafan Voir le message
    Il suffit de spécifier une adresse au lieu d'utiliser INADDR_ANY. Pour ce faire, tu peux utiliser des fonctions comme inet_aton() ou inet_addr(). "man 7 ip" pour plus d'infos.
    Oui, ça je sais

    Ce que je voudrais faire, c'est spécifer 2 adresses IP A et B de façon à ce que le serveur écoute sur ces dernières.

    Est-ce possible ? Si oui comment ?

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Je pense que tu ne peux pas directement.

    La seule option du bind(), c'est "toutes les interfaces" ou "1 interface spécifique".

    Ce que je ferai dans ce cas, c'est 2 socket serveur avec chacun son bind() un sur l'adresse A et 1 sur l'adresse B
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Par défaut
    Merci ram. C'est une solution que je voulais éviter mais c'est peut-être la seule alors.

    Pourtant, apache le fait bien non ? On peut le configurer pour qu'il écoute sur plusieurs IPs. Je me demande comment il fait...

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Peut être pareil que ce que je t'ai proposé

    Est ce que tu as un serveur apache configuré comme cela. Si oui, le résultat de la commande "netstat -an" pourrait être intéressant à regarder.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Peut être pareil que ce que je t'ai proposé

    Est ce que tu as un serveur apache configuré comme cela. Si oui, le résultat de la commande "netstat -an" pourrait être intéressant à regarder.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
    Comme quoi, non, apache n'écoute pas sur les IPs configurées pour les sites web mais sur toutes les IPs.

    Par contre, bind écoute lui sur chaque IPs mais dans plusieurs threads. Ta première solution est donc la bonne.

    Merci.

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Joyus Voir le message
    Par contre, bind écoute lui sur chaque IPs mais dans plusieurs threads. Ta première solution est donc la bonne.
    Oui main bind (on parle bien du serveur DNS) à une autre fonctionnalité lié à cela, c'est qu'il est capable de servir ou non une zone en fonction de l'interface par laqeulle est arrivée la requête.

    Ainsi, avec 2 interface, tu peux dire :
    • sur l'interface déclarée come interne, je sers la zone interne et je forwarde le non résolu sur l'interface externe.
    • sur l'interface déclarée come externe, je sers la zone externe et je forwarde le non résolu ailleurs chez le FAI ou je fais une résolution récursive.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Serveur syslog sur plusieurs réseaux
    Par winser dans le forum Administration
    Réponses: 3
    Dernier message: 27/01/2014, 23h09
  2. [Débutant] Binding sur plusieurs enregistrements
    Par Imrik dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 21/06/2012, 14h53
  3. Requêtes HTTP sur plusieurs IPs de la même machine
    Par christoufe dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 21/12/2009, 23h37
  4. sql serveur 2005 sur plusieur station?
    Par amazircool dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/07/2007, 09h57
  5. Hebergement web - plusieurs site sur plusieurs serveur
    Par annega22 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 23/04/2007, 16h52

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