Dirección VMWare Fusion Linux invitado por nombre de host?

11

Tengo una imagen de Ubuntu Server 9.04 configurada en VMWare Fusion 3.0.0, usando la opción NAT para la conexión de red del invitado. Desde el host de Mac, puedo enviar ssh al invitado de Linux bien usando su dirección IP, pero me gustaría poder referirme a él por nombre de host para mayor comodidad. es decir:

mac-host:~ ssh [email protected]

Tuve una configuración similar usando Parallels hace un par de años, pero no recuerdo cómo se configuró. Puede haber "simplemente funcionado".

¿Alguna sugerencia sobre cómo hacer que esto funcione?

amrox
fuente

Respuestas:

14

EDITAR La primera versión de las instrucciones que publiqué causó conflictos con el servidor de nombres y la puerta de enlace que VMware puso en vmnet8. Esta versión corrige el problema.

Versiones de software:

  • MAC OS X versión 10.6.3
  • VMware Fusion versión 3.1.0 (261058)
  • Ubuntu 10.04 LTS

Que he hecho:

  • Durante la creación de la VM, configure la red en NAT.

  • En Linux Guest: ejecute ifconfig para obtener la dirección de hardware HWaddr, la dirección de difusión Bcast, la dirección de Internet IPv4 inet addry la máscara que se Maskestá utilizando.

    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>
    
  • En Linux Guest: busque la información del servidor de nombres

    UbuntuGuest$cat /etc/resolv.conf
    nameserver 192.168.213.2
    domain localdomain
    search localdomain
    
  • En Linux Guest: busque la dirección de la puerta de enlace: (aparece en la columna Puerta de enlace de la línea con 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
    
  • En el host OS X: Edite el dhcpd.confarchivo para vmnet8(El conmutador virtual NAT) para asignar una dirección IP estática al Invitado de Linux. (Use su editor de elección en la cuarta línea)

    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
    
  • En el host OS X: el archivo comenzará a verse como:

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

Cosas a tener en cuenta:

  • La subnetsección debe coincidir con la información de IP recopilada en el Invitado de Linux. El inet addrva a estar dentro range, netmaskcoincidirá Mask, option broadcast-addresscoincidirá Bcast, option domain-name-serversy option domain-namecoincidirá con la información recopilada con cat /etc/resolv.confy option routerscoincidirá con Gatewayel route -ncomando.

  • Queremos asignar una dirección IP estática, para que podamos agregar una entrada al hostsarchivo del host OS X. La dirección debe estar dentro de lo subnetdefinido. Las direcciones que no están disponibles para asignar son las que se encuentran rangeen la sección de subred, la dirección de difusión, el fixed-addresspara host vmnet8, el servidor DNS y la puerta de enlace. Y creo que la dirección igual a subred no está permitida. En este ejemplo, la subred es 192.168.213.0Entonces, los destinatarios disponibles son de 192.168.213.1 to 192.168.213.255menos 192.168.213.128 to 192.168.213.245(rango) menos 192.168.213.255(difusión) menos 192.168.213.1(host vmnet8) menos 192.168.213.2(puerta de enlace y servidor DNS). La red es que las direcciones 192.168.213.3 to 192.168.213.127están disponibles.


  • EN EL OS X Host: Cree una nueva hostentrada debajo de la SECCIÓN NO MODIFICAR . Esta entrada asignará una IP estática al invitado de Linux. hardware ethernetnecesita coincidir HWaddrdesde ifconfigel Invitado de Linux. Elija una dirección estática disponible para fixed-address. option broadcast-address, option domain-name-servers, option domain-nameY la option routersnecesidad para que coincida con las opciones dadas en la subnetsección de dhcpd.conf. (Que ya hemos comparado con la información recopilada en el Invitado de Linux). En este ejemplo, la entrada del host es:

    ####### 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;
    }
    
  • En OS X Host, guarde dhcpd.confy cierre su editor.

  • En el host OS X y todos los invitados: apague todas las máquinas virtuales y VMware.

  • En el host OS X: reinicie los servicios de VMware:

    OSXHost$cd /Library/Application\ Support/VMware\ Fusion/ 
    OSXHost$sudo ./boot.sh --restart 
    
  • En el host OS X: mire Activity Monitory asegúrese de que se vmnet-dhcpdestén ejecutando dos procesos con cada nombre . (Uno es para la vmnet8red NAT, el otro es para la red solo de host). Si no ve ambos, probablemente haya un problema con el vmnet8/dhcpd.confarchivo en el host OS X. Solucione eso y repita el reinicio de los servicios de VMware.

  • En el host OS X: Inicie VMware y Linux Guest VM.

  • En Linux Guest En la VM invitada, verifique que la configuración sea la esperada:

    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$
    
  • En Linux Guest: compruebe que se pueda acceder al mundo exterior:

    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$
    
  • En el host OS X: agregue una asignación para el nombre de host al hostsarchivo:

    OSXHost$cd /etc
    OSXHost$sudo emacs hosts
    

    Agregue una línea al final del archivo de hosts utilizando el nombre de host del Guest de Linux y la dirección IP asignada anteriormente.

    192.168.213.2   serpents-hold
    
  • En el host OS X: guarde el archivo y salga de emacs.

  • En el host OS X: compruebe que se puede acceder al Guest Linux por nombre 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$
    
Shannon Cesantía
fuente
Esto es genial ... si estás en un host OSX. Ojalá pudiera encontrar el equivalente de Windows en alguna parte.
TJ L
1
Gran información Gracias. 2 actualizaciones para v4.x 1. La ubicación de dhcpd.conf es ahora: "/ Library / Preferences / VMware Fusion /" 2. En Fusion 4, el servicio de red no se ejecuta cuando se cierra Fusion. Para reiniciar el servicio de red, reinicie Fusion.
sym3tri
8

La respuesta de un paso a la pregunta original es ejecutar este comando:

$ sudo apt-get install libnss-mdns

La instalación de este paquete debería habilitar la función al instante. Entonces podrá acceder a su VM en your-vm-hostname.local. Esto solo funcionará dentro de la red local de la VM, que depende de cómo lo configuró en su software de virtualización.

Esta característica es llamada Bonjour por Apple y Zeroconf por todos los demás. Está integrado en OS X e iOS. La forma más fácil de obtenerlo en Windows es instalar iTunes para Windows.

hashemi
fuente
Con esto, necesito agregar '.local' al nombre de la máquina invitada, por ejemplo ubuntu-guest.local, cuando me refiero desde el lado del host. Aparte de eso, esto funciona de maravilla!
Nathaniel Waisbrot
@NathanielWaisbrot Eso es cierto. Eso es lo que quería el póster original.
hashemi
3

Puede configurar zeroconf con Avahi, lo que debería permitir que el cliente se identifique en una red sin registro de DNS.

Jon Lasser
fuente
2

suponiendo que solo desea iniciar sesión a través de una línea de comando, ¿por qué no crear un archivo de configuración ssh ? Hago algo como esto para mi VM.

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

entonces you puedo

mac-box:~ ssh linux-box
Yanokwa
fuente
1

Si está utilizando NAT, puede intentar registrarse con servidores DNS, sin embargo, para computadoras que no sean el host, su IP será la misma que sus máquinas y puede causar algunos problemas.

Le recomendaría que cambie a una red en puente ya que esto le dará su propia dirección IP y a cualquier máquina, se verá y se sentirá como cualquier otra máquina en la red. Si configura todas las configuraciones de IP correctamente (o usa DHCP), debería registrarse automáticamente y no debería tener problemas para hacer nada en cualquier puerto a través de IP o nombre de host.

William Hilsum
fuente
1
Sí, creo que funcionaría, pero preferiría una red privada estable. La VM está en una computadora portátil que se mueve y, a veces, no tiene conexión a Internet. Si usara el modo puenteado, no podría contactarlo cuando el host estuviera fuera de línea.
amrox