11

У меня есть образ Ubuntu Server 9.04, настроенный в VMWare Fusion 3.0.0, с использованием опции NAT для сетевого подключения гостя. С хоста Mac я могу просто перейти по ssh к гостю linux, используя его IP-адрес, но я хотел бы иметь возможность ссылаться на него по имени хоста для удобства. то есть:

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

У меня была похожая настройка с использованием Parallels пару лет назад, но я не помню, как она была настроена. Возможно, это "только что сработало".

Любое предложение о том, как сделать эту работу?

5 ответов5

14

РЕДАКТИРОВАТЬ Первая версия инструкций, которые я опубликовал, вызвала конфликты с сервером имен и шлюзом, который VMware поставил на vmnet8. Эта версия исправляет проблему.

Версии программного обеспечения:

  • MAC OS X версия 10.6.3
  • VMware Fusion Версия 3.1.0 (261058)
  • Ubuntu 10.04 LTS

Что я сделал:

  • Во время создания виртуальной машины установите для сети значение NAT.

  • В гостевой системе Linux: Запустите ifconfig, чтобы получить аппаратный адрес HWaddr , широковещательный адрес Bcast , IPv4-адрес интернет-адреса inet addr и используемую маску 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>
    
  • В гостевой системе Linux: поиск информации о сервере имен

    UbuntuGuest$cat /etc/resolv.conf
    nameserver 192.168.213.2
    domain localdomain
    search localdomain
    
  • В гостевой системе Linux: найдите адрес шлюза: (Перечислен в столбце "Шлюз" строки с 0.0.0.0 в качестве пункта назначения.)

    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
    
  • На хосте OS X: отредактируйте файл dhcpd.conf для vmnet8 (виртуальный коммутатор NAT), чтобы назначить статический IP-адрес гостю Linux. (Используйте свой редактор по выбору в четвертой строке)

    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
    
  • На хосте OS X: файл начнет выглядеть примерно так:

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

Что следует отметить:

  • Раздел subnet должен соответствовать IP-информации, собранной на гостевой системе Linux. Адрес inet addr будет в пределах range , netmask будет соответствовать Mask , option broadcast-address будет соответствовать Bcast , option domain-name-servers и option domain-name будет соответствовать информации, собранной с помощью cat /etc/resolv.conf и option routers будут совпадать Gateway от команды route -n .

  • Мы хотим назначить статический IP-адрес, чтобы мы могли добавить запись в файл hosts OS X Host. Адрес должен быть в пределах определенной subnet . Адреса, которые нельзя назначить, находятся в пределах range в разделе подсети, широковещательном адресе, fixed-address для host vmnet8 , DNS-сервера и шлюза. И я думаю, что адрес, равный подсети, не допускается. В этом примере подсеть имеет значение 192.168.213.0 Таким образом, доступные адресаты имеют от 192.168.213.1 to 192.168.213.255 минус 192.168.213.128 to 192.168.213.245 (диапазон) меньше 192.168.213.255 (широковещание) меньше 192.168.213.1 (хост vmnet8) меньше 192.168.213.2 (шлюз и DNS-сервер). Сеть состоит в том, что доступны адреса с 192.168.213.3 to 192.168.213.127 .


  • На host OS X: создайте новую запись хоста под РАЗДЕЛОМ НЕ ИЗМЕНИТЬ. Эта запись назначит статический IP-адрес гостю Linux. hardware ethernet должен соответствовать HWaddr из ifconfig на гостевой системе Linux. Выберите доступный статический адрес для fixed-address . option broadcast-address , option domain-name-servers , option domain-name и option routers должны соответствовать параметрам, указанным в разделе subnet dhcpd.conf . (Что мы уже сопоставили с информацией, собранной в гостевой системе Linux.) В этом примере запись хоста:

    ####### 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;
    }
    
  • На хосте OS X Сохраните dhcpd.conf и закройте редактор.

  • На хосте OS X и всех гостях: выключите все виртуальные машины и VMware.

  • На хосте OS X: перезапустите сервисы VMware:

    OSXHost$cd /Library/Application\ Support/VMware\ Fusion/ 
    OSXHost$sudo ./boot.sh --restart 
    
  • На хосте OS X: посмотрите Activity Monitor и убедитесь, что запущены два процесса с именем vmnet-dhcpd . (Один для vmnet8 , сети NAT, другой для сети только с хостом.) Если вы не видите и то и другое, возможно, проблема в vmnet8/dhcpd.conf на хосте OS X. Исправьте это и повторите перезапуск сервисов VMware.

  • На хосте OS X: Запустите VMware и гостевую виртуальную машину Linux.

  • В гостевой Linux На гостевой виртуальной машине убедитесь, что настройки соответствуют ожиданиям:

    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$
    
  • В гостевой системе Linux: убедитесь, что внешний мир доступен:

    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$
    
  • На хосте OS X: добавьте сопоставление имени хоста в файл hosts :

    OSXHost$cd /etc
    OSXHost$sudo emacs hosts
    

    Добавьте строку в конец файла hosts, используя имя хоста гостя Linux и IP-адрес, назначенный выше.

    192.168.213.2   serpents-hold
    
  • На хосте OS X: сохраните файл и выйдите из emacs.

  • На хосте OS X: проверьте, что гостевой Linux доступен по имени хоста:

    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$
    
8

Единственный ответ на первоначальный вопрос - запустить эту команду:

$ sudo apt-get install libnss-mdns

Установка этого пакета должна включить функцию мгновенно. После этого вы сможете добраться до своей виртуальной машины по адресу your-vm-hostname.local . Это будет работать только в локальной сети виртуальной машины, которая зависит от того, как вы настроили ее в программном обеспечении для виртуализации.

Эта функция называется Bonjour Apple и Zeroconf всеми остальными. Он встроен в OS X и iOS. Самый простой способ получить его в Windows - это установить iTunes для Windows.

3

Вы можете настроить zeroconf с помощью Avahi, что позволит клиенту идентифицировать себя в сети без регистрации DNS.

2

если вы просто хотите войти через командную строку, почему бы не создать файл конфигурации ssh ? я делаю что-то подобное для моей виртуальной машины.

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

тогда я могу

mac-box:~ ssh linux-box
1

Если вы используете NAT, он может попытаться зарегистрироваться на DNS-серверах, однако для компьютеров, отличных от хоста, его IP-адрес будет таким же, как у ваших компьютеров, и может вызвать несколько проблем.

Я бы порекомендовал вам переключиться на мостовую сеть, так как это даст ему собственный IP-адрес, и любой машине он будет выглядеть и чувствовать себя как любая другая машина в сети. Если вы правильно настроили все настройки IP (или используете DHCP), он должен автоматически зарегистрироваться, и у вас не должно возникнуть проблем с выполнением каких-либо действий на любом порту через IP или имя хоста.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .