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

Java Discussion :

problème selection interface réseau


Sujet :

Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut problème selection interface réseau
    Bonjour,

    J'ai un PC (windows 10) dont mon interface réseau est déclarée comme ceci :
    IP fixe : 10.0.200.97
    Mask : 255.255.255.0
    Passerelle : 10.0.200.150
    Seconde adresse IP : 192.168.100.97 255.255.255.0

    J'avais créé il y a quelque années un petit logiciel en java qui faisait office de serveur TFTP

    Il y a quelques mois il fonctionnait encore bien (un produit avec l'adresse IP 192.168.100.1 allait récupérer un fichier sur le serveur TFTP)... mais plus maintenant

    En modifiant la configuration réseau de mon PC comme ceci ça refonctionne :
    IP fixe : 192.168.100.97
    Mask : 255.255.255.0
    Passerelle : 192.168.100.150
    => Mais le problème est que je n'ai plus accès à internet car l'adresse IP de ma passerelle est 10.0.200.150

    J'ai aussi essayé cette configuration :
    IP fixe : 192.168.100.97
    Mask : 255.255.255.0
    Passerelle : 192.168.100.150
    Seconde adresse IP : 10.0.200.97 255.255.255.0
    Seconde passerelle : 10.0.200.150
    => J'ai bien accès à internet mais pas au serveur TFTP

    Avez-vous une solution pour que :
    1- mon PC ait accès à Internet
    2- que mon serveur TFTP s'ouvre sur l'adresse IP 192.168.100.97 et pas sur l'adresse IP 10.0.200.97 comme c'est actuellement le cas (ce qu'il me semble)
    => Je voudrais éviter de devoir modifier mon programme java : comment forcer Java à utiliser la bonne adresse IP juste en configurant Windows ?

    Merci d'avance,

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mars 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2014
    Messages : 21
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Je n'ai pas de réponse absolue à ton problème, mais comme je me suis déjà coltiné à des trucs similaires et que personne n'a l'air d'avoir la solution dans l'immédiat, je vais essayer de t'aider.
    Si j'ai bien compris ton besoin: Tu veux monter le serveur TFTP sur ta machine avec une adresse IP différente de son adresse normale. Que le serveur ne soit joignable qu'en faisant des requêtes sur l'adresse différente (et non pas en utilisant l'adresse normale de la machine).

    Tout d'abord j'ai un peu de mal à comprendre ce qu'est la seconde adresse IP (n'ayant pas windows 10).
    Il faudrait d'abord clarifier ceci. En général plusieurs adresses IP sur la même interface physique revient à dire qu'il y a des interfaces virtuelles de créées.
    Peux-tu montrer quel est le résultat de ipconfig /all dans l'invite de commande (peut-être ne montrer que les paragraphes relatifs aux deux adresses IP - Si tu es dans un environnement professionnel, vérifie peut-être que les adresses sont divulgables, sinon tu peux m'envoyer en mp). Il serait intéressant de voir le résultat pour tes deux configs alternatives.
    De façon similaire (en complément) tu peux regarder les adresses IP vue par la JVM, le code suivant peux t'aider.
    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
     
    public static Set<NetworkInterface> makeIfcInventory() throws SocketException{
    	Set<NetworkInterface> result = new HashSet<NetworkInterface>();
    	for (Enumeration<NetworkInterface> ifcEnum = NetworkInterface.getNetworkInterfaces();ifcEnum.hasMoreElements();){
    		result.add(ifcEnum.nextElement());
    	}
    	return result;
    }
     
    public static Set<InetAddress> makeIPInventory() throws SocketException{
    	Set<InetAddress> result = new HashSet<InetAddress>();
    	for (NetworkInterface anIfc : makeIfcInventory()){
    		for (Enumeration<InetAddress> ipEnum = anIfc.getInetAddresses();ipEnum.hasMoreElements();){
    			result.add(ipEnum.nextElement());
    		}
    	}
    	return result;
    }
    Pour que je puisse comprendre un peu plus ce que tu veux réaliser, j'ai quelques questions réseau.
    - Comment es-tu relié à ta passerelle (y-a-t-il un switch ethernet entre ta passerelle et toi, si oui qui le manage et supporte-t-il les vlans?)
    - Depuis quel réseau veux-tu accéder à ton serveur TFTP ? (Avant la passerelle ou après ou depuis ton ordinateur sous windows 10 ?)

    La mauvaise nouvelle, c'est que je ne suis pas sûr que lorsque l'on monte un serveur sur une machine il n'apparaisse que sur certaines interfaces de la machine, en tout cas par défaut quand je monte un serveur sur une machine avec plusieurs cartes ethernet et/ou wifi je vois le serveurs sur toutes les interfaces.
    Pour obtenir un tel comportement, j'aurai tendance à explorer l'option de créer une VM associée à une interface virtuelle avec l'adresse 192.168.100.97 et de mettre dans le système les routes réseau pour atteindre cette addresse (permettre à ton PC de router les requêtes vers ton serveur TFTP, mais il faudrait sans doute aussi renseigner les routes dans les équipements réseau, si tu veux que le serveur TFTP soit adressé depuis ce réseau.

    En conclusion, es-tu sûr de ton besoin? L'isolation du serveur est vraiment le truc compliqué à réaliser à mon avis (surtout sous windows, sous linux je dis pas). Si tu n'en a pas besoin et que tu as le source de ton serveur, recoder serait peut-être plus simple.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Re-bonjour,

    Ipconfig /all donne comme résultat sur la carte réseau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Adresse  IPv4 : 10.0.200.97 (préféré)
    Masque de sous-réseau : 255.255.255.0
    Adresse  IPv4 : 192.168.100.97 (préféré)
    Masque de sous-réseau : 255.255.255.0
     
    Passerelle par défaut : 10.0.200.150
    Donc si on part sur une VM, ça donnera :
    Nom : network_pb.png
Affichages : 166
Taille : 18,1 Ko

    - Mon logiciel doit pouvoir communiquer avec les deux équipements
    - Mon logiciel intègre une library client Telnet (library faite maison avec faite avec java.net.Socket) : je n'ai pas de problème pour me connecter aux deux équipements
    - Le serveur TFTP est intégré à mon logiciel : j'utilise la library org.apache.commons.tftp => avec cette library, la method .open peut prendre en option une adresse IP : j'ai essayé d'ouvrir avec l'adresse IP 10.168.100.97 mais ça ne fonctionne pas.

    Mais commentr faire pour que le serveur TFTP utilise l'interface 192.168.100.97 (je ne maitrise pas du tout les VM) ? ... il faudrait une passerelle entre Windows 10 et la VM
    Remarque : ce n'est pas gênant que le serveur TFTP soit aussi accessible sur le réseau 10.0.200.x car je suis sur un réseau privé

    Ci-joint, mon code pour récupérer l'adresse IP de mon interface en 192.168.100.x (il fonctionne) :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
          // **********************************************************************
          // Recherche interface 192.168.100.x dans toutes les cartes reseaux
          System.out.println("start search interface...");
          pTFTPServeur = "";
          Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
     
          while (interfaces.hasMoreElements() == true) 
          {  
              NetworkInterface currentInterface = interfaces.nextElement(); 
     
              //chaque carte réseau peut disposer de plusieurs adresses IP
              Enumeration<InetAddress> addresses = currentInterface.getInetAddresses(); 
              while (addresses.hasMoreElements() == true) 
              {  
                  InetAddress currentAddress = addresses.nextElement();
     
                  if(
                         (currentAddress.isLoopbackAddress() == false)
                      && (currentAddress.isLinkLocalAddress()== false)
                      && (currentAddress.getAddress().length == 4)
                  ){
                      System.out.println(currentAddress.getHostAddress() + "(" + currentAddress.getAddress().length + ")");
     
                      InetAddress baseAddr = InetAddress.getByName("192.168.100.0");
                      if(
                           (currentAddress.getAddress()[0] == baseAddr.getAddress()[0])
                        && (currentAddress.getAddress()[1] == baseAddr.getAddress()[1])
                        && (currentAddress.getAddress()[2] == baseAddr.getAddress()[2])
                      ){
                        String hostAddr = currentAddress.getHostAddress();
                        //System.out.println("add interface " + hostAddr);
                        pTFTPServeur = hostAddr;
                      }
                  }
              }
          }
          System.out.println("... end search interface : " + pTFTPServeur );

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mars 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2014
    Messages : 21
    Points : 33
    Points
    33
    Par défaut
    Ton dessin est tout à fait correct, mais je n'avais pas compris que le TFTP tournait dans la même JVM que le reste. Du coup l'option de la VM semble fortement compromise.
    En effet si la JVM ne tourne pas dans la VM, elle ne verra pas l'adresse en 192. Et vice-versa.

    As-tu essayé de faire des pings entre ta machine et celle qui porte le produit (192.168.100.1) ? Dans les deux sens ? Est-ce que cela passe ?
    Si cela ne passe pas, il faut déjà résoudre ce problème.

    As-tu réellement besoin que le serveur TFTP ne soit pas visible sur l'adresse en 10.0.200.
    Sinon as-tu regardé si en démarrant le serveur TFTP sur l'adresse 10.0.200.x ou même localhost et en essayant de voir le serveur TFTP en utilisant 192.168.100.x
    - Le serveur TFTP est intégré à mon logiciel : j'utilise la library org.apache.commons.tftp => avec cette library, la method .open peut prendre en option une adresse IP : j'ai essayé d'ouvrir avec l'adresse IP 10.168.100.97 mais ça ne fonctionne pas.
    En fait qu'est-ce qui ne marche pas dans ce cas ? As-tu une exception ou tu ne peux juste pas acceder au serveur ou autre ?
    Pour essayer cela tu peux démarrer le serveur TFTP sur ta machine Windows 10 et que tu essaie de le voir en utilisant un client TFTP installé en local sur cette machine.
    Tu pourrais ainsi viser localhost, 10.0.200.x et 192.168.100.x Et voir si elles marchent depuis la machine locale. Si cela ne marche pas de là, ce n'est pas la peine d'aller plus loin non plus.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Citation Envoyé par tac.p Voir le message
    Ton dessin est tout à fait correct, mais je n'avais pas compris que le TFTP tournait dans la même JVM que le reste. Du coup l'option de la VM semble fortement compromise.
    En effet si la JVM ne tourne pas dans la VM, elle ne verra pas l'adresse en 192. Et vice-versa.
    Lorsque l'on crée une VM, il n'est pas possible de définir une passerelle entre Windows 10 et la VM ? ... c'est à dire que si IP de destination est différente de 10.200.x alors windows 10 envoie les paquets vers une passerelle virtuel reliée à la VM.
    => ça m'étonne que ça ne soit pas possible

    Citation Envoyé par tac.p Voir le message
    As-tu essayé de faire des pings entre ta machine et celle qui porte le produit (192.168.100.1) ? Dans les deux sens ? Est-ce que cela passe ?
    Si cela ne passe pas, il faut déjà résoudre ce problème.
    Oui, il faut que je regarde ce point

    Citation Envoyé par tac.p Voir le message
    As-tu réellement besoin que le serveur TFTP ne soit pas visible sur l'adresse en 10.0.200.
    Non : je l'ai dit dans mon PS de mon précédent message

    Citation Envoyé par tac.p Voir le message
    En fait qu'est-ce qui ne marche pas dans ce cas ? As-tu une exception ou tu ne peux juste pas acceder au serveur ou autre ?
    Pour essayer cela tu peux démarrer le serveur TFTP sur ta machine Windows 10 et que tu essaie de le voir en utilisant un client TFTP installé en local sur cette machine.
    Tu pourrais ainsi viser localhost, 10.0.200.x et 192.168.100.x Et voir si elles marchent depuis la machine locale. Si cela ne marche pas de là, ce n'est pas la peine d'aller plus loin non plus.
    OK je testerais

    Citation Envoyé par tac.p Voir le message
    Il va falloir que je fasse quelques tests supplémentaires
    Yep

    PS : actuellement je n'ai pas installé encore de VM, j'ai deux IP de déclarées sur la même carte réseau dans Windows 10

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mars 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2014
    Messages : 21
    Points : 33
    Points
    33
    Par défaut
    Réponse rapide...

    Pour la VM il n'y a pas besoin. Cela n'avait de sens que pour isoler les 2 réseaux. (désolé j'avais pas vu ta note sur ce point)..
    Dans ce cas les 2 adresses déclarées sur la carte cela doit marcher. Cela doit ressembler à un tap sous linux, je vais essayer de voir, mais ce n'est pas un truc que j'utilise directement donc je ne connais pas très bien.

    Lorsque l'on crée une VM, il n'est pas possible de définir une passerelle entre Windows 10 et la VM ? ... c'est à dire que si IP de destination est différente de 10.200.x alors windows 10 envoie les paquets vers une passerelle virtuel reliée à la VM.
    => ça m'étonne que ça ne soit pas possible
    Si créer une passerelle est possible, c'est à dire faire une route au sein du système windows pour que les paquets qui arrivent à destination de 192.X aille vers la VM. Mais si au sein de la VM tu fais un ipconfig /all tu ne devrais pas voir 10.0.200.x.

    Bon courage pour tes tests...

    Pierre

  7. #7
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Pour info, il est possible d'exposer la VM sur le reseau. Cela permet aux autres machines de voir ou faire un ping sur la VM depuis le reseau (j'ai cette config à titre perso et je confirme que ca fonctionne).

    Pour faire ca (si c'est ce que tu veux), si tu utilises Virtual Box, celui-ci va creer une carte reseau virtuelle. Il faut aller dans les connexions reseau, cliquer sur ta carte reseau et la carte virtuelle et créer un pont. Dans Virtual Box, il faut specifier comme mode d'acces au reseau "Acces par pont" puis "Miniport de pont MAC"
    Ensuite, il ne reste plus qu'à galerer pour configurer le tout

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    ok merci pour vos réponse.
    Je vous en dirais plus d'ici une quinzaine de jours car le PC est réquisitionné pour le moment

Discussions similaires

  1. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  2. Problème en interfacant C et Fortran
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 23/05/2006, 16h10
  3. [FAQ]problème de détection réseau.
    Par mickael777 dans le forum MFC
    Réponses: 6
    Dernier message: 13/05/2005, 14h43
  4. Problèmes de connexion réseau à MySQL
    Par digital prophecy dans le forum Bases de données
    Réponses: 3
    Dernier message: 05/05/2005, 21h35
  5. Problème select MAX(annee) dans une requête
    Par grisounette dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 28/10/2004, 17h36

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