Adresse de l'invité VMWare Fusion Linux par nom d'hôte?


11

J'ai une image Ubuntu Server 9.04 configurée dans VMWare Fusion 3.0.0, en utilisant l'option NAT pour la connexion réseau de l'invité. Depuis l'hôte Mac, je peux très bien passer à l'invité linux en utilisant son adresse IP, mais je voudrais pouvoir y faire référence par nom d'hôte pour plus de commodité. c'est à dire:

mac-host:~ ssh user@linux-guest.local

J'ai eu une configuration similaire en utilisant Parallels il y a quelques années, mais je ne me souviens pas comment elle a été configurée. Cela a peut-être "juste fonctionné".

Une suggestion sur la façon de faire fonctionner cela?

Réponses:


14

EDIT La première version des instructions que j'ai publiées a provoqué des conflits avec le serveur de noms et la passerelle que VMware a mis sur vmnet8. Cette version corrige le problème.

Versions du logiciel:

  • MAC OS X version 10.6.3
  • VMware Fusion version 3.1.0 (261058)
  • Ubuntu 10.04 LTS

Ce que j'ai fait:

  • Lors de la création de la machine virtuelle, définissez la mise en réseau sur NAT.

  • Sur Linux Guest: exécutez ifconfig pour obtenir l'adresse matérielle, l'adresse de HWaddrdiffusion Bcast, l'adresse Internet IPv4 inet addret le masque Maskutilisés.

    UbuntuGuest$ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:0c:29:53:bf:e5  
              inet addr:192.168.213.129  Bcast:192.168.213.255  Mask:255.255.255.0
                     <snip>
    
  • Sur Linux Guest: recherchez les informations du serveur de noms

    UbuntuGuest$cat /etc/resolv.conf
    nameserver 192.168.213.2
    domain localdomain
    search localdomain
    
  • Sur l'invité Linux: recherchez l'adresse de la passerelle: (répertoriée dans la colonne Passerelle de la ligne avec 0.0.0.0 comme destination.)

    UbuntuGuest$route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.213.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
    0.0.0.0         192.168.213.2   0.0.0.0         UG    100    0        0 eth0
    
  • Sur l'hôte OS X: modifiez le dhcpd.conffichier pour vmnet8(le commutateur virtuel NAT) pour attribuer une adresse IP statique à l'invité Linux. (Utilisez votre éditeur de choix sur la quatrième ligne)

    OSXHost$cd /Library/Application\ Support/VMware\ Fusion/vmnet8/
    OSXHost$sudo chmod u+w dhcpd.conf
    OSXHost$sudo cp dhcpd.conf dhcpd.conf.bak.20100619
    OSXHost$sudo emacs dhcpd.conf
    
  • Sur OS X Host: le fichier commencera par ressembler à:

    # Configuration file for ISC 2.0 vmnet-dhcpd operating on vmnet8.
    #
    # This file was automatically generated by the VMware configuration program.
    # See Instructions below if you want to modify it.
    #
    # We set domain-name-servers to make some DHCP clients happy
    # (dhclient as configured in SuSE, TurboLinux, etc.).
    # We also supply a domain name to make pump (Red Hat 6.x) happy.
    #
    
    
    ###### VMNET DHCP Configuration. Start of "DO NOT MODIFY SECTION" #####
    # Modification Instructions: This section of the configuration file contains
    # information generated by the configuration program. Do not modify this
    # section.
    # You are free to modify everything else. Also, this section must start
    # on a new line
    # This file will get backed up with a different name in the same directory
    # if this section is edited and you try to configure DHCP again.
    
    # Written at: 12/26/2009 10:35:10
    allow unknown-clients;
    default-lease-time 1800;                # default is 30 minutes
    max-lease-time 7200;                    # default is 2 hours
    
    subnet 192.168.213.0 netmask 255.255.255.0 {
          range 192.168.213.128 192.168.213.254;
          option broadcast-address 192.168.213.255;
          option domain-name-servers 192.168.213.2;
          option domain-name localdomain;
          default-lease-time 1800;         # default is 30 minutes
          max-lease-time 7200;             # default is 2 hours
      option routers 192.168.213.2;
    }
    host vmnet8 {
        hardware ethernet 00:50:56:C0:00:08;
        fixed-address 192.168.213.1;
        option domain-name-servers 0.0.0.0;
        option domain-name "";
        option routers 0.0.0.0;
    }
    ####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######
    

A noter:

  • La subnetsection doit correspondre aux informations IP recueillies sur l'invité Linux. Le inet addrsera à l' intérieur range, netmaskcorrespondra Mask, option broadcast-addresscorrespondra Bcast, option domain-name-serverset option domain-namecorrespondra aux informations recueillies avec cat /etc/resolv.confet option routerscorrespondra à Gatewaypartir de la route -ncommande.

  • Nous voulons attribuer une adresse IP statique, afin de pouvoir ajouter une entrée au hostsfichier de l'hôte OS X. L'adresse doit être dans la limite subnetdéfinie. Les adresses qui ne peuvent pas être attribuées sont celles rangede la section de sous-réseau, l'adresse de diffusion, le fixed-addressfor host vmnet8, le serveur DNS et la passerelle. Et je pense que l'adresse égale au sous-réseau n'est pas autorisée. Dans cet exemple, le sous-réseau est 192.168.213.0donc les destinataires disponibles sont de 192.168.213.1 to 192.168.213.255moins 192.168.213.128 to 192.168.213.245(plage) moins 192.168.213.255(diffusion) moins 192.168.213.1(hôte vmnet8) moins 192.168.213.2(passerelle et serveur DNS). Le net est que les adresses 192.168.213.3 to 192.168.213.127sont disponibles.


  • SUR OS X Host: créez une nouvelle hostentrée sous la section NE PAS MODIFIER . Cette entrée attribuera une adresse IP statique à l'invité Linux. hardware ethernetdoit correspondre à HWaddrpartir ifconfigde l'invité Linux. Choisissez une adresse statique disponible pour fixed-address. option broadcast-address, option domain-name-servers, option domain-nameEt option routersdoivent correspondre aux options disponibles dans la subnetsection dhcpd.conf. (Ce que nous avons déjà comparé aux informations collectées sur l'invité Linux.) Dans cet exemple, l'entrée hôte est:

    ####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######
    host serpents-hold {
        hardware ethernet 00:0c:29:53:bf:e5;
        fixed-address 192.168.213.3;
        option broadcast-address 192.168.213.255;
        option domain-name-servers 192.168.213.2;
        option domain-name localdomain;
        option routers 192.168.213.2;
    }
    
  • Sur OS X Host Enregistrez dhcpd.confet fermez votre éditeur.

  • Sur l'hôte OS X et tous les invités: arrêtez toutes les machines virtuelles et VMware.

  • Sur l'hôte OS X: redémarrez les services VMware:

    OSXHost$cd /Library/Application\ Support/VMware\ Fusion/ 
    OSXHost$sudo ./boot.sh --restart 
    
  • Sur l'hôte OS X: recherchez Activity Monitoret assurez-vous que deux processus nommés chacun vmnet-dhcpdsont en cours d'exécution. (L'un est pour le vmnet8réseau NAT, l'autre pour le réseau hôte uniquement.) Si vous ne voyez pas les deux, il y a probablement un problème avec le vmnet8/dhcpd.conffichier sur l'hôte OS X. Corrigez cela et répétez le redémarrage des services VMware.

  • Sur OS X Host: démarrez VMware et la machine virtuelle invitée Linux.

  • Sur l'invité Linux Sur la machine virtuelle invitée, vérifiez que les paramètres sont conformes aux attentes:

    UbuntuGuest$ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:0c:29:53:bf:e5  
              inet addr:192.168.213.3  Bcast:192.168.213.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe53:bfe5/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:103 errors:0 dropped:0 overruns:0 frame:0
              TX packets:71 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:10961 (10.9 KB)  TX bytes:9637 (9.6 KB)
    lo <snip>    
    UbuntuGuest$cat /etc/resolv.conf
    nameserver 192.168.213.2
    domain localdomain
    search localdomain
    UbuntuGuest$route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.213.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
    0.0.0.0         192.168.213.2   0.0.0.0         UG    100    0        0 eth0
    UbuntuGuest$
    
  • Sur Linux Guest: vérifiez que le monde extérieur est accessible:

    UbuntuGuest$ping google.com
    PING google.com (72.14.213.104) 56(84) bytes of data.
    64 bytes from pv-in-f104.1e100.net (72.14.213.104): icmp_seq=1 ttl=128 time=47.6 ms
    64 bytes from 2.bp.blogspot.com (72.14.213.104): icmp_seq=2 ttl=128 time=48.7 ms
    64 bytes from 2.bp.blogspot.com (72.14.213.104): icmp_seq=3 ttl=128 time=48.2 ms
    ^C
    --- google.com ping statistics ---
    4 packets transmitted, 3 received, 25% packet loss, time 3093ms
    rtt min/avg/max/mdev = 47.687/48.223/48.714/0.491 ms
    UbuntuGuest$
    
  • Sur OS X Host: ajoutez un mappage pour le nom d'hôte au hostsfichier:

    OSXHost$cd /etc
    OSXHost$sudo emacs hosts
    

    Ajoutez une ligne à la fin du fichier hosts en utilisant le nom d'hôte de l'invité Linux et l'adresse IP attribuée ci-dessus.

    192.168.213.2   serpents-hold
    
  • Sur OS X Host: enregistrez le fichier et quittez emacs.

  • Sur l'hôte OS X: vérifiez que l'invité Linux est accessible par nom d'hôte:

    OSXHost$ping serpents-hold
    PING serpents-hold (192.168.213.3): 56 data bytes
    64 bytes from 192.168.213.3: icmp_seq=0 ttl=64 time=0.169 ms
    64 bytes from 192.168.213.3: icmp_seq=1 ttl=64 time=0.244 ms
    ^C
    --- serpents-hold ping statistics ---
    2 packets transmitted, 2 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 0.169/0.207/0.244/0.037 ms
    OSXHost$
    

C'est super ... si vous êtes sur un hôte OSX. J'aimerais pouvoir trouver l'équivalent de Windows quelque part.
TJ L

1
Grande info. Merci. 2 mises à jour pour v4.x 1. L'emplacement de dhcpd.conf est maintenant: "/ Library / Preferences / VMware Fusion /" 2. Dans Fusion 4, le service réseau ne s'exécute pas lorsque Fusion est arrêté. Pour redémarrer le service réseau, redémarrez Fusion.
sym3tri

8

La réponse en une étape à la question d'origine consiste à exécuter cette commande:

$ sudo apt-get install libnss-mdns

L'installation de ce package devrait activer la fonctionnalité instantanément. Vous pourrez ensuite accéder à votre machine virtuelle à l'adresse your-vm-hostname.local. Cela ne fonctionnera qu'au sein du réseau local de la machine virtuelle, ce qui dépend de la façon dont vous l'avez configuré dans votre logiciel de virtualisation.

Cette fonctionnalité est appelée Bonjour par Apple et Zeroconf par tout le monde. Il est intégré à OS X et iOS. Le moyen le plus simple de l'obtenir sous Windows est d'installer iTunes pour Windows.


En utilisant cela, je dois ajouter «.local» au nom de la machine invitée, par exemple ubuntu-guest.local, lorsque je m'en réfère du côté de l'hôte. Cela mis à part, cela fonctionne à merveille!
Nathaniel Waisbrot

@NathanielWaisbrot C'est vrai. C'est ce que voulait l'affiche originale.
hashemi

3

Vous pouvez configurer zeroconf à l'aide d'Avahi, ce qui devrait permettre au client de s'identifier sur un réseau sans enregistrement DNS.


2

en supposant que vous vouliez simplement vous connecter via une ligne de commande, pourquoi ne pas créer un fichier de configuration ssh ? je fais quelque chose comme ça pour mon vm.

# ~/.ssh/config
Host linux-box    
Hostname localhost
Port 8822

alors je peux

mac-box:~ ssh linux-box

1

Si vous utilisez NAT, il peut essayer de s'enregistrer auprès des serveurs DNS, mais sur des ordinateurs autres que l'hôte, son adresse IP sera la même que celle de vos machines et peut causer quelques problèmes.

Je vous recommande de passer à un réseau ponté car cela lui donnera sa propre adresse IP et à n'importe quelle machine, elle ressemblera à toute autre machine sur le réseau. Si vous configurez correctement tous les paramètres IP (ou utilisez DHCP), il devrait s'enregistrer automatiquement et vous ne devriez avoir aucun problème à faire quoi que ce soit sur n'importe quel port via IP ou nom d'hôte.


1
Oui, je pense que cela fonctionnerait, mais je préférerais un réseau privé stable. La machine virtuelle se trouve sur un ordinateur portable qui se déplace et n'a parfois pas de connexion Internet. Si j'utilisais le mode ponté, je ne serais pas en mesure de le contacter lorsque l'hôte était hors ligne.
amrox
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.