Настройка гостевого NAT для Ubuntu vmware

9

У меня есть хост Windows, который запускает гостевую Ubuntu VM через vmplayer. Эта виртуальная машина будет клонирована, распределена между несколькими людьми (работающими на хостах Windows) и использована для проведения семинара по программированию. Я пытаюсь - и до сих пор не могу - настроить сеть для удовлетворения следующих требований:

  1. Гость должен иметь доступ к интернету
  2. Все клоны должны иметь одинаковое имя хоста (скажем, Workshop, чтобы быть конкретным)
  3. Хост-система должна иметь возможность доступа к соответствующему гостю через это имя (например, ping Workshop будет пинговать гостя, который работает на этом хосте, а не любой другой клон)

Что я пробовал до сих пор:

  • «Установил» сетевой адаптер NAT для гостя
  • Пробовал подключать гостя через DHCP, в / etc / network / interfaces :

    auto eth0
    iface eth0 inet dhcp
       hostname Workshop
    

Это работает, когда речь идет о подключении к Интернету. Однако я не могу подключиться к гостю с хоста вообще. (Например, ping Workshop не работает; если я использую адрес, возвращенный ifconfig, он также не работает с хоста).

  • Затем я попытался назначить статический адрес гостю:

    auto eth0
    iface eth0 inet static
         address 172.241.0.101
         netmask 255.255.0.0
         gateway 172.241.0.100
    

(172.241.0.100 - это адрес, статически назначенный хосту адаптером VMWare Network VMNet8 - это вышеупомянутый адаптер NAT). Теперь я могу пропинговать 172.241.0.101 и телнет к нему с хоста. Я также могу пинговать и telnet с гостя на 172.241.0.100 (хост), но это все - нет подключения к более широкой сети. (Я также не могу получить доступ к гостю через его имя хоста, но здесь это не критично, поскольку, если пуш прибывает, я могу использовать его адрес напрямую - при условии, что он одинаков для всех - а не имя).

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

Ваши решения и другие советы будут высоко оценены.

malenkiy_scot
источник

Ответы:

8

Прежде всего, да, вы не сможете использовать мостовое сетевое соединение, потому что у всех гостей будет одинаковое имя хоста, поэтому вам придется использовать NAT.

Вы правильно настроили часть конфигурации, однако ваша проблема должна быть в шлюзе по умолчанию, который вы назначили гостю. Шлюз по умолчанию при использовании NAT - это не IP-адрес хоста, а IP-адрес «виртуального коммутатора», подключенного к сети NAT. (Хост-адаптер VMnet8 - это просто другое устройство, подключенное к сети, позволяющее хосту взаимодействовать с виртуальной машиной.) Этот виртуальный коммутатор, о котором мы говорим, получает .2IP-адрес в подсети. Так что в вашем случае вы /etc/network/interfacesдолжны прочитать:

auto eth0
iface eth0 inet static
     address 172.241.0.101
     netmask 255.255.0.0
     gateway 172.241.0.2

Это должно предоставить вашей гостевой виртуальной 172.241.0.2машине доступ в Интернет (через ), а также установить связь с вашим хостом ( 172.241.0.100). Так что попробуйте и дайте мне знать, если это работает.

Если это не работает (крайне маловероятно), то вам необходимо выяснить, какой IP-адрес виртуального коммутатора. Что вы можете сделать, это позволить виртуальной машине получить IP через DHCP (то есть изменить его так, iface eth0 inet dhcpкак вы это делали раньше), а затем сделать route -n. Это должно показать вам шлюз по умолчанию, который он использует. Используйте этот IP в вашей статической конфигурации.


Чтобы можно было пропинговать гостевую виртуальную машину , используя мастерскую имени хоста , вот что вы можете сделать. Вам необходимо добавить запись в hostsфайл в Windows, который находится в C:\Windows\System32\drivers\etc\hosts. Отредактируйте этот файл, добавив в конце следующую строку:

Однако, чтобы отредактировать этот файл под Windows, вам нужно открыть его как администратор в Блокноте или Wordpad ... и иногда он даже не позволяет сохранить его, поэтому вам нужно где-то взять копию файла, отредактировать удалите расширение .txt, если оно есть, и вернитесь, замените оригинальное и «подтвердите» его ... о, как я люблю Linux. Но в любом случае вот строка, которую нужно добавить:

172.241.0.101    Workshop

Как только это будет сделано, вы сможете ping Workshopуспешно с вашего хоста Windows.

Хотя, конечно, чтобы иметь возможность развернуть это в своей мастерской, вам нужно будет отредактировать файл hosts на каждом узле Windows, если только вы не клонируете машины Windows.

Совет : поскольку вы собираетесь назначить статический IP-адрес вашему гостю, убедитесь, что «сеть NAT» в VMplayer на всех ваших хостах Windows использует подсеть 172.241.0.0/16, потому что я думаю, что VMware случайным образом назначает подсеть своим виртуальным сетям ( VMnet1, 2 и т. Д.), Поэтому VMnet8 может не использовать ту же подсеть на другом хосте Windows. Если это не так, вам нужно вручную предоставить VMnet8 подсеть с помощью редактора виртуальной сети в VMware.


РЕДАКТИРОВАТЬ

Ладно. После комментариев вот что вам нужно сделать:

  1. Настройте свой (Windows) хост-компьютер так, чтобы он «автоматически получал IP-адрес» на адаптере VMnet8. Это должен получить IP 192.168.186.1.
  2. Настройте свой (Ubuntu) гостевой компьютер на статический IP-адрес в диапазоне 192.168.186.3 - 192.168.186.127. Давайте использовать 192.168.186.3. Кроме того, настройте шлюз по умолчанию и сервер DNS таким 192.168.186.2образом, чтобы вы /etc/network/interfacesдолжны были:

    auto eth0
    iface eth0 inet static
         address 192.168.186.3
         netmask 255.255.255.0
         gateway 192.168.186.2
         dns-nameservers 192.168.186.2
    
  3. Проверьте локальное подключение с помощью команды ping 192.168.186.1и 192.168.186.2с гостевой машины. Вы также должны иметь возможность пинговать с хоста на гостя.

  4. Проверьте подключение к Интернету на гостевой машине, выполнив google.comкоманду ping или просмотрев Интернет.
  5. Добавьте строку 192.168.186.3 Workshopв ваш hostsфайл на хост-компьютере Windows.
  6. Тест ping Workshopс хост-машины Windows.

Если вы хотите использовать IP-адреса из совершенно другой сети / пула, кроме 192.168.186.0/24, вам нужно перейти Edit > Virtual Network Editorв VMware, найти VMnet8 и изменить его настройки DHCP в самом низу на любую сеть, которую вы хотите, и соответственно изменить статические IP-адреса. (шлюз по умолчанию всегда будет вторым используемым IP, x.x.x.2).

введите описание изображения здесь

Алаа али
источник
172.241.0.2 не работает. Он также не отвечает на эхо-запрос (на самом деле, запуск nmap -sP 172.241.0.0/24 возвращает только два активных хоста - .100 и .101). При настройке с помощью dhcp по маршруту -n возвращается совершенно другой адрес: 192.168.186.2
malenkiy_scot
О, я предположил, что вы используете сеть 172.241.0.0/16, потому что она была той, которую использовал DHCP. Если подумать, это публичный IP [Oo]. Есть ли причина, по которой вы назначали IP-адреса хоста и гостя в сети 172.241.0.0? В любом случае, посмотрите на мой отредактированный ответ.
Алаа Али
Нет, это не то, что использует DHCP, но именно так настроен adater VMNet8. Адрес DHCP получается через службу DHCP VMWare. Я понятия не имею, откуда он получает свой пул адресов. Я не думаю, что адрес 172.241 является публичным, хотя. Когда я устанавливаю соединение между хостом и гостем и запускаю CPORTS, это показывает, что 10.63.41.41 (это адрес хоста в локальной сети) подключен к себе через разные порты - что имеет смысл, поскольку это NAT (или, возможно, фактически PAT) , Я на самом деле думал так же, как вы относились к шлюзу - что у него другой адрес.
malenkiy_scot
Да, как уже упоминалось в моем ответе, служба DHCP и ее пул настраиваются из редактора виртуальной сети (я добавил скриншот к своему ответу). Шлюз, DHCP и DNS-сервер являются одним и тем же виртуальным устройством x.x.x.2. И да, как вы сказали, он, конечно, использует перегрузку (PAT) по IP вашего хоста; Вы не должны видеть IP гостя в более широкой сети. Также 172.241.0.0/16 есть публичный диапазон IP =). 172.16.0.0 - 172.31.255.255является частным диапазоном в адресах класса B. Но это не имеет значения, это не должно ни на что влиять.
Алаа Али
Кроме того, вы можете посетить эту страницу, если вы хотите узнать больше о NAT в VMware, это хорошее чтение.
Алаа Али
3

У меня была похожая проблема, с использованием VMWare Player, работающего на Windows 7 с гостями Ubuntu. Но я смог подключиться от хоста к гостю и гостя к хосту, однако проблема была в том, что я не смог подключиться к интернету от гостя. После прочтения ответа @Alaa мне пришлось сделать еще одну настройку, чтобы добавить имя DNS-сервера в файл интерфейсов (dns-nameservers 192.168.150.2), а затем все встало на свои места.

Вот моя конфигурация, которая сработала.

Конфигурация интерфейса VMWare на хосте:

Сетевой адаптер VMware Сетевой адаптер VMnet8: (клиент)

Connection-specific DNS Suffix  . : 
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
Physical Address. . . . . . . . . : 00-50-56-C0-00-08
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::9c13:cbf2:1dc:259f%42(Preferred) 

IPv4 Address. . . . . . . . . . . : 192.168.150.1(Preferred) 
Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 
DHCPv6 IAID . . . . . . . . . . . : 704663638
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-19-06-50-32-88-53-2E-7A-D3-8E
DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                    fec0:0:0:ffff::2%1
                                    fec0:0:0:ffff::3%1
NetBIOS over Tcpip. . . . . . . . : Enabled 

Изменен интерфейс гостевой Ubuntu:

auto eth0
iface eth0 inet static
address 192.168.150.10
netmask 255.255.255.0
gateway 192.168.150.2
dns-nameservers 192.168.150.2

192.168.150.2 - это прокси-сервер VMWare, который перенаправляет гостевой трафик на хост.

Кингсли
источник
Здравствуйте, я встречаюсь с той же проблемой, что и у вас. Не могли бы вы объяснить, как вы решаете проблему? Первое, что нужно, где взять информацию «Сетевой адаптер VMware Сетевой адаптер VMnet8: (Клиент)». Вы хотите обновить свои изменения в / etc / network / interfaces? Кроме того, для таких адресов, как «маска сети», «шлюз», они различаются на разных компьютерах? Или я могу использовать то же, что вы отправили.
user288609