Indirizzo guest VMWare Fusion Linux per nome host?


11

Ho un'immagine Ubuntu Server 9.04 impostata in VMWare Fusion 3.0.0, usando l'opzione NAT per la connessione di rete dell'ospite. Dall'host Mac, posso usare ssh per il guest Linux semplicemente usando il suo indirizzo IP, ma vorrei poterlo fare riferimento per nome host per comodità. vale a dire:

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

Ho avuto una configurazione simile usando Parallels un paio di anni fa, ma non ricordo come è stata configurata. Potrebbe aver "appena funzionato".

Qualche suggerimento su come farlo funzionare?

Risposte:


14

EDIT La prima versione delle istruzioni che ho pubblicato ha causato conflitti con il nameserver e il gateway che VMware ha inserito su vmnet8. Questa versione risolve il problema.

Versioni del software:

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

Cosa ho fatto:

  • Durante la creazione della VM, impostare la rete su NAT.

  • Su guest Linux: eseguire ifconfig per ottenere l'indirizzo hardware HWaddr, l'indirizzo di trasmissione Bcast, l'indirizzo Internet IPv4 inet addre la maschera Maskin uso.

    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>
    
  • Su guest Linux: cercare le informazioni sul nameserver

    UbuntuGuest$cat /etc/resolv.conf
    nameserver 192.168.213.2
    domain localdomain
    search localdomain
    
  • Su guest Linux: cercare l'indirizzo gateway: (elencato nella colonna Gateway della riga con 0.0.0.0 come destinazione).

    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
    
  • Sull'host OS X: modifica il dhcpd.conffile per vmnet8(Lo switch virtuale NAT) per assegnare un indirizzo IP statico al guest Linux. (Usa il tuo editor preferito in quarta riga)

    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
    
  • Sull'host OS X: il file inizierà in modo simile a:

    # 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" #######
    

Cose da notare:

  • La subnetsezione deve corrispondere alle informazioni IP raccolte sul Guest Linux. Il inet addrsarà all'interno range, netmaskcorrisponderà Mask, option broadcast-addresscorrisponderà Bcast, option domain-name-serverse option domain-namecorrisponderà le informazioni raccolte con cat /etc/resolv.confe option routerscorrisponderà Gatewaydal route -ncomando.

  • Vogliamo assegnare un indirizzo IP statico, in modo da poter aggiungere una voce al hostsfile dell'host OS X. L'indirizzo deve essere all'interno del subnetdefinito. Gli indirizzi che non sono disponibili per l'assegnazione sono quelli all'interno rangedella sezione della sottorete, l'indirizzo di trasmissione, il fixed-addressfor host vmnet8, il server DNS e il gateway. E penso che l'indirizzo uguale alla sottorete non sia permesso. In questo esempio, la sottorete è 192.168.213.0Quindi i destinatari disponibili sono da 192.168.213.1 to 192.168.213.255meno 192.168.213.128 to 192.168.213.245(intervallo) in meno 192.168.213.255(trasmissione) in meno 192.168.213.1(host vmnet8) in meno 192.168.213.2(gateway e server DNS). La rete è che gli indirizzi 192.168.213.3 to 192.168.213.127sono disponibili.


  • SU host OS X: creare una nuova hostvoce sotto la SEZIONE NON MODIFICARE . Questa voce assegnerà un IP statico al Guest Linux. hardware ethernetdeve corrispondere HWaddrdal ifconfigguest Linux. Scegli un indirizzo statico disponibile per fixed-address. option broadcast-address, option domain-name-servers, option domain-nameE option routersnecessità di abbinare le opzioni fornite nella subnetsezione dhcpd.conf. (Che abbiamo già confrontato con le informazioni raccolte sul Guest Linux.) In questo esempio la voce host è:

    ####### 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;
    }
    
  • Su OS X Host Salva dhcpd.confe chiudi il tuo editor.

  • Su host OS X e tutti i guest: arrestare tutte le macchine virtuali e VMware.

  • Sull'host OS X: riavviare i servizi VMware:

    OSXHost$cd /Library/Application\ Support/VMware\ Fusion/ 
    OSXHost$sudo ./boot.sh --restart 
    
  • Sull'host OS X: cerca Activity Monitore assicurati che vmnet-dhcpdsiano in esecuzione due processi ciascuno denominato . (Uno è per la vmnet8rete NAT, l'altro è solo per la rete host.) Se non li vedi entrambi, probabilmente c'è un problema con il vmnet8/dhcpd.conffile sull'host OS X. Risolvilo e ripeti il ​​riavvio dei servizi VMware.

  • Sull'host OS X: avviare VMware e la VM guest Linux.

  • Sul guest Linux Nella VM guest verificare che le impostazioni siano come previsto:

    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$
    
  • Su guest Linux: verificare che il mondo esterno sia raggiungibile:

    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$
    
  • Sull'host OS X: aggiungi una mappatura per il nome host al hostsfile:

    OSXHost$cd /etc
    OSXHost$sudo emacs hosts
    

    Aggiungi una riga alla fine del file hosts usando il nome host del Guest Linux e l'indirizzo IP assegnato sopra.

    192.168.213.2   serpents-hold
    
  • Sull'host OS X: salva il file ed esci da emacs.

  • Su host OS X: verifica che il guest Linux sia raggiungibile con il nome host:

    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$
    

Questo è fantastico ... se sei su un host OSX. Vorrei poter trovare l'equivalente di Windows da qualche parte.
TJ L

1
Informazioni fantastiche. Grazie. 2 aggiornamenti per v4.x 1. La posizione di dhcpd.conf è ora: "/ Libreria / Preferenze / VMware Fusion /" 2. In Fusion 4, il servizio di rete non viene eseguito quando Fusion viene chiuso. Per riavviare il servizio di rete, riavviare Fusion.
sym3tri,

8

La risposta di un passaggio alla domanda originale è eseguire questo comando:

$ sudo apt-get install libnss-mdns

L'installazione di questo pacchetto dovrebbe abilitare la funzione all'istante. Sarai quindi in grado di accedere alla tua macchina virtuale all'indirizzo your-vm-hostname.local. Funzionerà solo all'interno della rete locale della VM, che dipende da come è stata configurata nel software di virtualizzazione.

Questa funzione è chiamata Bonjour da Apple e Zeroconf da tutti gli altri. È integrato in OS X e iOS. Il modo più semplice per scaricarlo su Windows è installare iTunes per Windows.


Usando questo, ho bisogno di aggiungere '.local' al nome della macchina ospite, ad esempio ubuntu-guest.local, quando mi riferisco ad esso dal lato host. A parte questo, funziona meravigliosamente!
Nathaniel Waisbrot,

@NathanielWaisbrot È vero. Questo è ciò che voleva il poster originale.
hashemi,

3

È possibile configurare zeroconf utilizzando Avahi, che dovrebbe consentire al client di identificarsi su una rete senza registrazione DNS.


2

supponendo che desideri semplicemente accedere da una riga di comando, perché non creare un file di configurazione ssh ? faccio qualcosa del genere per la mia vm.

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

allora posso

mac-box:~ ssh linux-box

1

Se si utilizza NAT, potrebbe provare a registrarsi con server DNS, tuttavia su computer diversi dall'host, l'IP sarà lo stesso dei computer e può causare alcuni problemi.

Consiglierei di passare alla rete con bridge in quanto ciò fornirà il proprio indirizzo IP e a qualsiasi macchina, sembrerà e si sentirà come qualsiasi altra macchina sulla rete. Se hai configurato correttamente tutte le impostazioni IP (o usi DHCP), dovrebbe registrarsi automaticamente e non dovresti avere problemi a fare nulla su qualsiasi porta tramite IP o nome host.


1
Sì, penso che funzionerebbe, ma preferirei una rete privata stabile. La VM è su un laptop che si sposta e talvolta non ha una connessione a Internet. Se avessi usato la modalità bridge, non sarei in grado di contattarlo quando l'host era offline.
Amrox,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.