Endereço do convidado do VMWare Fusion Linux pelo nome do host?


11

Eu tenho uma imagem do Ubuntu Server 9.04 configurada no VMWare Fusion 3.0.0, usando a opção NAT para a conexão de rede do convidado. No host do Mac, posso enviar ssh para o convidado do linux usando o endereço IP, mas gostaria de poder consultá-lo pelo nome do host por conveniência. ou seja:

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

Eu tinha uma configuração semelhante usando o Parallels há alguns anos, mas não me lembro como foi configurada. Pode ter "apenas funcionado".

Alguma sugestão de como fazer isso funcionar?

Respostas:


14

EDIT A primeira versão das instruções que publiquei causou conflitos com o servidor de nomes e o gateway que a VMware colocou na vmnet8. Esta versão corrige o problema.

Versões de software:

  • MAC OS X versão 10.6.3
  • VMware Fusion versão 3.1.0 (261058)
  • Ubuntu 10.04 LTS

O que eu fiz:

  • Durante a criação da VM, defina a rede como NAT.

  • No Linux Guest: Execute ifconfig para obter o endereço do hardware HWaddr, o endereço de broadcast Bcast, o endereço IPv4 da Internet inet addre a máscara que Maskestá sendo usada.

    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>
    
  • No Linux Guest: Pesquise as informações do servidor de nomes

    UbuntuGuest$cat /etc/resolv.conf
    nameserver 192.168.213.2
    domain localdomain
    search localdomain
    
  • No Linux Guest: Pesquise o endereço do gateway: (listado na coluna Gateway da linha com 0.0.0.0 como destino.)

    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
    
  • No OS X Host: Edite o dhcpd.confarquivo para vmnet8(O comutador virtual NAT) para atribuir um endereço IP estático ao Linux Guest. (Use seu editor de escolha na quarta linha)

    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
    
  • No OS X Host: O arquivo começará parecido com:

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

Coisas a serem observadas:

  • A subnetseção deve corresponder às informações de IP coletadas no Linux Guest. A inet addrestará dentro range, netmaskirá corresponder Mask, option broadcast-addressirá corresponder Bcast, option domain-name-serverse option domain-nameirá coincidir com a informação recolhida com cat /etc/resolv.confe option routersirá corresponder Gatewaya partir do route -ncomando.

  • Queremos atribuir um endereço IP estático, para que possamos adicionar uma entrada ao hostsarquivo do host do OS X. O endereço deve estar dentro do subnetdefinido. Os endereços que não estão disponíveis para atribuição são os que estão rangena seção sub-rede, o endereço de broadcast, o fixed-addresspara host vmnet8, o servidor DNS e o gateway. E acho que o endereço igual à sub-rede não é permitido. Neste exemplo, a sub-rede é 192.168.213.0Assim, os destinatários disponíveis são de 192.168.213.1 to 192.168.213.255menos 192.168.213.128 to 192.168.213.245(intervalo) menos 192.168.213.255(transmissão) menos 192.168.213.1(host vmnet8) menos 192.168.213.2(gateway e servidor DNS). A rede é que os endereços 192.168.213.3 to 192.168.213.127estão disponíveis.


  • No host do OS X: Crie uma nova hostentrada abaixo da seção NÃO MODIFICAR . Essa entrada atribuirá um IP estático ao Linux Guest. hardware ethernetnecessidades para corresponder HWaddra partir ifconfigdo Linux Visitante. Escolha um endereço estático disponível para fixed-address. option broadcast-address, option domain-name-servers, option domain-nameE option routersnecessidade de combinar as opções dadas na subnetseção dhcpd.conf. (Que já correspondemos às informações coletadas no Linux Guest.) Neste exemplo, a entrada do 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;
    }
    
  • No OS X Host, salve dhcpd.confe feche seu editor.

  • No OS X Host e todos os convidados: Encerre todas as VMs e VMware.

  • No host do OS X: Reinicie os serviços VMware:

    OSXHost$cd /Library/Application\ Support/VMware\ Fusion/ 
    OSXHost$sudo ./boot.sh --restart 
    
  • No OS X Host: Examine Activity Monitore verifique se vmnet-dhcpdestão executando dois processos nomeados . (Um é para a vmnet8rede NAT, o outro é para a rede somente host.) Se você não vir os dois, provavelmente há um problema com o vmnet8/dhcpd.confarquivo no host OS X. Corrija isso e repita a reinicialização dos serviços VMware.

  • No host do OS X: Inicie o VMware e a Linux Guest VM.

  • No Linux Guest Na VM convidada, verifique se as configurações são as esperadas:

    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$
    
  • No Linux Guest: Verifique se o mundo exterior é acessível:

    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$
    
  • No host do OS X: Adicione um mapeamento para o nome do host ao hostsarquivo:

    OSXHost$cd /etc
    OSXHost$sudo emacs hosts
    

    Adicione uma linha ao final do arquivo hosts usando o nome do host do Linux Guest e o endereço IP atribuído acima.

    192.168.213.2   serpents-hold
    
  • No OS X Host: salve o arquivo e saia do emacs.

  • No host do OS X: Teste se o Linux Guest é acessível por nome de 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$
    

Isso é ótimo ... se você estiver em um host OSX. Gostaria de poder encontrar as janelas equivalentes em algum lugar.
TJ L

1
Ótima informação. Obrigado. 2 atualizações para v4.x 1. O local do dhcpd.conf agora é: "/ Library / Preferences / VMware Fusion /" 2. No Fusion 4, o serviço de rede não é executado quando o Fusion é desligado. Para reiniciar o serviço de rede, reinicie o Fusion.
Sym3tri

8

A resposta de uma etapa para a pergunta original é executar este comando:

$ sudo apt-get install libnss-mdns

A instalação deste pacote deve ativar o recurso instantaneamente. Você poderá acessar sua VM em your-vm-hostname.local. Isso funcionará apenas na rede local da VM, que depende de como você a configurou no seu software de virtualização.

Esse recurso é chamado de Bonjour pela Apple e Zeroconf por todos os outros. Está embutido no OS X e iOS. A maneira mais fácil de obtê-lo no Windows é instalar o iTunes para Windows.


Usando isso, preciso anexar '.local' ao nome da máquina convidada, por exemplo ubuntu-guest.local, quando me refiro a ela do lado do host. Além disso, isso funciona maravilhosamente!
Nathaniel Waisbrot

@NathanielWaisbrot Isso é verdade. Era isso que o pôster original queria.
Hashemi

3

Você pode configurar o zeroconf usando o Avahi, o que deve permitir que o cliente se identifique em uma rede sem registro DNS.


2

supondo que você queira apenas efetuar login através de uma linha de comando, por que não criar um arquivo de configuração ssh ? eu faço algo assim para o meu vm.

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

então eu posso

mac-box:~ ssh linux-box

1

Se você estiver usando o NAT, ele pode tentar se registrar nos servidores DNS; no entanto, em computadores que não sejam o host, o IP será o mesmo das suas máquinas e poderá causar alguns problemas.

Eu recomendo que você mude para a rede em ponte, pois isso lhe dará seu próprio endereço IP e, para qualquer máquina, parecerá com qualquer outra máquina da rede. Se você definir todas as configurações de IP corretamente (ou usar o DHCP), ele deverá se registrar automaticamente e você não terá problemas para fazer nada em nenhuma porta via IP ou nome de host.


1
Sim, acho que funcionaria, mas prefiro uma rede privada estável. A VM está em um laptop que se move e às vezes não possui conexão à Internet. Se eu usasse o modo de ponte, não conseguiria entrar em contato com ele quando o host estivesse offline.
Amrox 18/11/2009
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.