Adres gościa VMWare Fusion Linux według nazwy hosta?

11

Mam obraz Ubuntu Server 9.04 skonfigurowany w VMWare Fusion 3.0.0, używając opcji NAT dla połączenia sieciowego gościa. Z hosta Maca mogę ssh do gościa z Linuksem w porządku, używając jego adresu IP, ale chciałbym móc odwoływać się do niego według nazwy hosta dla wygody. to znaczy:

mac-host:~ ssh [email protected]

Miałem podobną konfigurację za pomocą Parallels kilka lat temu, ale nie pamiętam, jak została skonfigurowana. Być może „właśnie działało”.

Wszelkie sugestie, jak sprawić, by to działało?

amrox
źródło

Odpowiedzi:

14

EDYCJA Pierwsza opublikowana przeze mnie instrukcja spowodowała konflikty z serwerem nazw i bramą, które VMware umieściło na vmnet8. Ta wersja rozwiązuje problem.

Wersje oprogramowania:

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

Co zrobiłem:

  • Podczas tworzenia maszyny wirtualnej ustaw sieć na NAT.

  • W systemie Linux Guest: Uruchom ifconfig, aby uzyskać adres sprzętowy, adres HWaddrrozgłoszeniowy, adres Bcastinternetowy IPv4 inet addri maskę Mask.

    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>
    
  • W systemie Linux Guest: wyszukaj informacje o serwerze nazw

    UbuntuGuest$cat /etc/resolv.conf
    nameserver 192.168.213.2
    domain localdomain
    search localdomain
    
  • W systemie Linux Guest: wyszukaj adres bramy: (Wymieniony w kolumnie Gateway wiersza z 0.0.0.0 jako miejscem docelowym).

    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
    
  • W systemie OS X Host: Edytuj dhcpd.confplik dla vmnet8(Wirtualny przełącznik NAT), aby przypisać statyczny adres IP gościowi Linux. (Użyj wybranego edytora w czwartym wierszu)

    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
    
  • W systemie OS X Host: plik zacznie wyglądać mniej więcej tak:

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

Ważne uwagi:

  • subnetSekcja powinna być zgodna z informacjami IP zgromadzonych na Linux Gość. inet addrBędzie w zasięgu range, netmaskpasuje Mask, option broadcast-addresspasuje Bcast, option domain-name-serversi option domain-namepasuje informacje zebrane z cat /etc/resolv.confi option routersdopasuje Gatewayz route -npoleceniem.

  • Chcemy przypisać statyczny adres IP, abyśmy mogli dodać wpis do hostspliku hosta OS X. Adres musi mieścić się w subnetzdefiniowanym. Adresy, które nie są dostępne w celu przypisania są te odległości rangew sekcji podsieci, adres nadawane, fixed-addressza host vmnet8, serwera DNS i bramy. I myślę, że adres równy podsieci jest niedozwolony. W tym przykładzie podsieć jest 192.168.213.0tak, że dostępni adresaci pochodzą z 192.168.213.1 to 192.168.213.255mniej 192.168.213.128 to 192.168.213.245(zakres) mniej 192.168.213.255(rozgłaszanie) mniej 192.168.213.1(host vmnet8) mniej 192.168.213.2(brama i serwer DNS). Sieć polega na tym, że adresy 192.168.213.3 to 192.168.213.127są dostępne.


  • W systemie hosta OS X: Utwórz nowy hostwpis poniżej sekcji NIE MODYFIKUJ . Ten wpis przypisze statyczny adres IP gościowi Linux. hardware ethernetmusi pasować HWaddrz ifconfigpoziomu gościa systemu Linux. Wybierz dostępny adres statyczny dla fixed-address. option broadcast-address, option domain-name-servers, option domain-nameI option routerstrzeba dopasować opcje podane w subnetsekcji dhcpd.conf. (Które już porównaliśmy z informacjami zebranymi w systemie Linux Guest). W tym przykładzie wpis hosta to:

    ####### 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;
    }
    
  • W systemie OS X Host Zapisz dhcpd.confi zamknij edytor.

  • W systemie OS X Host i wszyscy goście: Zamknij wszystkie maszyny wirtualne i VMware.

  • Na hoście OS X: Uruchom ponownie usługi VMware:

    OSXHost$cd /Library/Application\ Support/VMware\ Fusion/ 
    OSXHost$sudo ./boot.sh --restart 
    
  • W systemie OS X Host: Sprawdź Activity Monitori upewnij się, że vmnet-dhcpduruchomiono dwa procesy o nazwie każdy . (Jedna dotyczy vmnet8sieci NAT, druga dotyczy sieci tylko hosta.) Jeśli nie widzisz obu, prawdopodobnie występuje problem z vmnet8/dhcpd.confplikiem na hoście OS X. Napraw to i powtórz restart usług VMware.

  • Na hoście OS X: Uruchom VMware i maszynę wirtualną gościa Linux.

  • W systemie Linux Guest Na maszynie wirtualnej gościa sprawdź, czy ustawienia są zgodne z oczekiwaniami:

    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$
    
  • W systemie Linux Guest: Sprawdź, czy świat zewnętrzny jest osiągalny:

    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$
    
  • W systemie hosta OS X: dodaj mapowanie nazwy hosta do hostspliku:

    OSXHost$cd /etc
    OSXHost$sudo emacs hosts
    

    Dodaj wiersz na końcu pliku hosts, używając nazwy hosta gościa Linux i adresu IP przypisanego powyżej.

    192.168.213.2   serpents-hold
    
  • W systemie OS X Host: Zapisz plik i zakończ emacsa.

  • W systemie hosta OS X: sprawdź, czy do gościa Linux można uzyskać nazwę hosta:

    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$
    
Shannon Severance
źródło
To świetnie ... jeśli korzystasz z hosta OSX. Chciałbym znaleźć gdzieś równoważny system Windows.
TJ L
1
Świetna informacja. Dzięki. 2 aktualizacje dla wersji 4.x 1. Lokalizacja pliku dhcpd.conf to teraz: „/ Library / Preferences / VMware Fusion /” 2. W Fusion 4 usługa sieciowa nie działa, gdy Fusion jest zamknięty. Aby zrestartować usługę sieciową, uruchom ponownie Fusion.
sym3tri
8

Jednym krokiem odpowiedzi na pierwotne pytanie jest uruchomienie tego polecenia:

$ sudo apt-get install libnss-mdns

Zainstalowanie tego pakietu powinno natychmiast włączyć tę funkcję. Będziesz wtedy mógł dostać się do maszyny wirtualnej pod adresem your-vm-hostname.local. Będzie to działać tylko w sieci lokalnej maszyny wirtualnej, co zależy od tego, jak skonfigurowałeś ją w oprogramowaniu do wirtualizacji.

Ta funkcja nazywa się Bonjour od Apple i Zeroconf przez wszystkich innych. Jest wbudowany w OS X i iOS. Najłatwiejszym sposobem uzyskania go w systemie Windows jest zainstalowanie iTunes dla Windows.

hashemi
źródło
Korzystając z tego, muszę dołączyć „.local” do nazwy komputera-gościa, np. ubuntu-guest.localKiedy odwołuję się do niego od strony hosta. Poza tym to działa cudownie!
Nathaniel Waisbrot
@NanielanielWaisbrot To prawda. Tego chciał oryginalny plakat.
hashemi
3

Możesz skonfigurować zeroconf za pomocą Avahi, co powinno pozwolić klientowi na identyfikację się w sieci bez rejestracji DNS.

Jon Lasser
źródło
2

zakładając, że chcesz się tylko zalogować za pomocą wiersza polecenia, dlaczego nie utworzyć pliku konfiguracyjnego ssh ? robię coś takiego dla mojego vm.

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

wtedy ja mogę

mac-box:~ ssh linux-box
yanokwa
źródło
1

Jeśli używasz NAT, może próbować zarejestrować się na serwerach DNS, jednak na komputerach innych niż host, jego adres IP będzie taki sam jak twoje maszyny i może powodować kilka problemów.

Polecam przejście na mostkową sieć, ponieważ da to jej własny adres IP i na dowolnej maszynie, będzie wyglądać i działać jak każda inna maszyna w sieci. Jeśli poprawnie skonfigurujesz wszystkie ustawienia IP (lub używasz DHCP), powinien on automatycznie się zarejestrować i nie powinieneś mieć problemu z robieniem czegokolwiek na dowolnym porcie za pomocą adresu IP lub nazwy hosta.

William Hilsum
źródło
1
Tak, myślę, że to by działało, ale wolałbym stabilną prywatną sieć. Maszyna wirtualna jest na laptopie, który się porusza i czasami nie ma połączenia z Internetem. Gdybym użył trybu zmostkowanego, nie byłbym w stanie skontaktować się z nim, gdy host był offline.
amrox