Configurando o NAT do convidado do Ubuntu vmware

9

Eu tenho um host do Windows que executa a VM do Ubuntu convidada via vmplayer. Essa máquina virtual será clonada, distribuída entre várias pessoas (executando hosts do Windows) e usada para realizar um workshop de programação. Estou tentando - e até agora falhando - configurar a rede para atender aos seguintes requisitos:

  1. O hóspede precisa ter acesso à internet
  2. Todos os clones devem ter o mesmo nome de host (digamos que o Workshop seja concreto)
  3. O sistema host deve poder acessar seu respectivo convidado por esse nome (por exemplo, o ping Workshop efetuaria ping no hóspede que está sendo executado nesse host e não em nenhum outro clone)

O que eu tentei até agora:

  • "Instalou" um adaptador de rede NAT para o convidado
  • Tentou conectar o convidado via DHCP, em / etc / network / interfaces :

    auto eth0
    iface eth0 inet dhcp
       hostname Workshop
    

Isso funciona no que diz respeito à conexão com a Internet. No entanto, não consigo me conectar ao convidado pelo host. (Por exemplo, o ping Workshop não funciona; se eu usar o endereço retornado pelo ifconfig, ele também não funcionará no host).

  • Tentei atribuir um endereço estático ao convidado:

    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 é o endereço atribuído estaticamente ao host pelo VMWare Network VMNet8 Adapter - esse é o adaptador NAT acima). Agora, posso executar ping em 172.241.0.101 e telnetar para ele a partir do host. Também posso fazer ping e telnet do convidado para 172.241.0.100 (o host), mas é tudo - não há conexão com a rede mais ampla. (Também não consigo acessar o convidado pelo nome do host, mas isso não é crucial aqui, pois, se for necessário, posso usar o endereço diretamente - desde que seja o mesmo para todos - e não o nome).

Agora, acho que posso usar a opção de conexão de rede em ponte com o DHCP e isso me dará o que preciso no caso de uma VM (não tentei nesse caso, mas lembro-me de fazê-lo anteriormente). No entanto, no caso de várias VMs com o mesmo nome de host e seus hosts conectados à mesma rede, isso será problemático, não é?

Suas soluções e outros conselhos serão muito apreciados.

malenkiy_scot
fonte

Respostas:

8

Antes de tudo, sim, você não poderá usar uma conexão de rede em ponte porque todos os convidados terão o mesmo nome de host, portanto, você precisará usar o NAT.

Você acertou parte da configuração, no entanto, seu problema deve estar no gateway padrão que você atribuiu ao convidado. O gateway padrão, ao usar o NAT, não é o IP do host, é o IP de um "comutador virtual" conectado à rede NAT. (O adaptador VMnet8 do host é apenas outro dispositivo conectado à rede, para permitir que o host se comunique com a VM.) Esse comutador virtual sobre o qual estamos falando obtém o .2IP na sub-rede. Portanto, no seu caso, você /etc/network/interfacesdeve ler:

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

Isso deve conceder ao seu VM convidado acesso à Internet (através 172.241.0.2) e também se comunicar com seu host ( 172.241.0.100). Portanto, experimente e deixe-me saber se funciona.

Se não funcionar (altamente improvável), você precisará descobrir qual é o IP do comutador virtual. O que você pode fazer é permitir que a VM obtenha um IP através do DHCP (ou seja, altere-o para iface eth0 inet dhcpcomo você o possuía antes) e faça route -n. Isso deve mostrar o gateway padrão que ele está usando. Use esse IP na sua configuração estática.


Para poder executar ping na VM convidada usando seu Workshop de nome de host , veja o que você pode fazer. Você precisa adicionar uma entrada no hostsarquivo no Windows, localizado em C:\Windows\System32\drivers\etc\hosts. Edite esse arquivo para incluir a seguinte linha no final:

Para editar esse arquivo no Windows, no entanto, você precisa abri-lo como administrador no Bloco de Notas ou no Wordpad ... e, às vezes, nem permite salvá-lo, portanto, é necessário tirar uma cópia do arquivo em algum lugar, editar remova a extensão .txt, se houver, e volte a substituir a original e "confirme" ... ah, como eu amo o Linux. De qualquer forma, aqui está a linha que você precisa adicionar:

172.241.0.101    Workshop

Feito isso, você poderá conseguir com ping Workshopêxito do seu host do Windows.

Embora, é claro, para poder implantar isso em seu workshop, você precisará editar o arquivo de hosts em cada host do Windows, a menos que você também esteja clonando as máquinas Windows.

Dica : como você atribuirá um IP estático ao seu convidado, verifique se a "rede NAT" no VMplayer em todos os seus hosts Windows está usando a sub-rede 172.241.0.0/16, porque acho que o VMware atribui aleatoriamente uma sub-rede a suas redes virtuais ( VMnet1, 2 e assim por diante); portanto, o VMnet8 pode não estar usando a mesma sub-rede em outro host do Windows. Caso contrário, você precisará atribuir manualmente uma sub-rede ao VMnet8 usando o Editor de rede virtual no VMware.


EDITAR

OK. Após os comentários, eis o que você precisa fazer:

  1. Configure sua máquina host (Windows) para "obter o endereço IP automaticamente" no adaptador VMnet8. Deve obter o IP 192.168.186.1.
  2. Configure sua máquina convidada (Ubuntu) para um IP estático no intervalo 192.168.186.3 - 192.168.186.127. Vamos usar 192.168.186.3. Além disso, configure o gateway padrão e o servidor DNS como sendo 192.168.186.2Portanto, você /etc/network/interfacesdeve ser:

    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. Teste a conectividade local executando ping 192.168.186.1e 192.168.186.2na máquina convidada. Você também deve poder executar ping do host para o convidado.

  4. Teste a conectividade da Internet na máquina convidada executando ping google.comou navegando na Internet.
  5. Adicione a linha 192.168.186.3 Workshopao seu hostsarquivo na máquina host do Windows.
  6. Teste ping Workshopna máquina host do Windows.

Se você deseja usar IPs de uma rede / pool totalmente diferente 192.168.186.0/24, precisará acessar o Edit > Virtual Network EditorVMware, encontrar o VMnet8 e alterar as configurações de DHCP na parte inferior para qualquer rede que desejar e alterar os IPs estáticos de acordo. (o gateway padrão sempre será o segundo IP utilizável x.x.x.2).

insira a descrição da imagem aqui

Alaa Ali
fonte
172.241.0.2 não funciona. Ele também não responde a um ping (na verdade, executar o nmap -sP 172.241.0.0/24 retorna apenas dois hosts ativos - .100 e .101). Quando configurada com dhcp um endereço completamente diferente é devolvido por via -n: 192.168.186.2
malenkiy_scot
Ah, presumi que você estivesse usando a rede 172.241.0.0/16 porque era a que o DHCP estava usando. Mas pense bem, isso é realmente um IP público [Oo]. Existe um motivo para você atribuir os IPs de host e convidado na rede 172.241.0.0? De qualquer forma, olhe para a minha resposta editada.
Alaa Ali
Não, não é o que o DHCP está usando, mas é assim que o VMNet8 Adater está configurado. O endereço DHCP é obtido por meio de um serviço DHCP do VMWare. Não faço ideia de onde ele obtém seu pool de endereços. Eu não acho que o endereço 172.241 seja público, no entanto. Quando eu estabeleço uma conexão entre o host e o convidado e executo o CPORTS, ele mostra que 10.63.41.41 (esse é o endereço do host na LAN) está conectado a si mesmo em portas diferentes - o que faz sentido, pois é NAT (ou provavelmente PAT) . Na verdade, pensei da mesma maneira que você em relação ao gateway - que ele tem um endereço diferente.
malenkiy_scot
Sim, como mencionado na minha resposta, o serviço DHCP e seu pool são configuráveis ​​no Editor de rede virtual (adicionei uma captura de tela à minha resposta). O gateway, servidor DHCP e DNS são todos o mesmo dispositivo virtual x.x.x.2,. E sim, como você disse, é claro que usa sobrecarga (PAT) sobre o IP do seu host; você não deveria estar vendo o IP do convidado na rede mais ampla. Além disso, 172.241.0.0/16 é um intervalo de IP público =). 172.16.0.0 - 172.31.255.255é o intervalo privado nos endereços de classe B. Mas isso realmente não importa, não deve afetar nada.
Alaa Ali
Além disso, você pode visitar esta página se quiser ler mais sobre o NAT no VMware, é uma boa leitura.
Alaa Ali
3

Eu estava tendo um problema semelhante, usando o VMWare Player em execução no Windows 7 com os hóspedes do Ubuntu. Mas consegui conectar-me de host a convidado e convidado a host, no entanto, o problema era que não consegui conectar-me à Internet a partir do hóspede. Depois de ler a resposta do @Alaa, tive que fazer mais um ajuste para adicionar o nome do servidor DNS ao arquivo de interfaces (dns-nameservers 192.168.150.2) e, em seguida, tudo se alinhava.

Aqui está minha configuração que funcionou.

Configuração da interface VMWare no host:

Adaptador Ethernet VMware Network Adapter VMnet8: (Cliente)

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 

Alterações na interface do convidado 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 é o proxy do VMWare que encaminhará o tráfego de convidados para o host.

Kingsly
fonte
Olá, encontro o mesmo problema que o seu. Você poderia explicar mais sobre como resolver o problema. A primeira coisa é onde obter as informações de "Adaptador Ethernet VMware Network Adapter VMnet8: (Cliente)". Quer dizer que você precisa atualizar suas alterações no / etc / network / interfaces Além disso, para o endereço como "máscara de rede", "gateway", eles variam de acordo com a máquina? Ou posso usar o mesmo que você postou.
precisa saber é o seguinte