Como configurar a rede no servidor VM Ubuntu com o host alterando as redes?

2

Meu host é um laptop com Windows 7 e tenho um servidor convidado Ubuntu 11.04 em execução no VMware. Estou usando o servidor convidado para o desenvolvimento do Rails.

Meu laptop entra e sai de redes - minha rede doméstica, a rede de trabalho, uma conexão 3G, etc.

Eu gostaria de configurar o servidor Ubuntu para que:

  • Eu posso acessá-lo (Samba, HTTPD e SSH) no mesmo endereço IP o tempo todo, independentemente da rede em que meu laptop esteja. Eu só quero acessar o servidor da VM do laptop. É um servidor de desenvolvimento. Um nome de host estável e um IP dinâmico também seriam suficientes - desde que eu consiga acessá-lo via HTTP, SSH e Samba do laptop, independentemente de o laptop estar conectado a uma rede ou não e independentemente da rede.
  • O servidor poderá se conectar à Internet (supondo que meu laptop tenha conectividade) para que eu possa apt-get .

Isso é possível? Tentei configurar um IP estático em /etc/network/interfaces , mas isso só funciona na minha rede doméstica e, se for para outro local, não consigo acessar a VM quando meu laptop não está na minha rede doméstica.

    
por Stewart Johnson 26.08.2011 / 05:49

2 respostas

3

Seu problema básico (ter um IP estático) não está relacionado à VM. Em vez de usar uma interface de rede bridged (ou seja, o sistema guest faz sua própria rede), você poderia, em teoria, usar NAT e redirecionamento de porta e configurar o sistema host para ter um IP estático.

Infelizmente, não é possível configurar um endereço IPv4 estático. Em uma rede IPv4, cada nó possui sua própria tabela de roteamento. Normalmente, a maioria dos nós enviará tráfego para sua rede local (começando com 192.168., 10. ou 172.16-31. *) Diretamente para o PC de destino. Infelizmente, os endereços usados na rede podem ser qualquer um dos itens acima e seu endereço preferido já pode ser usado.

Isso nos deixa com um endereço IPv4 global. O roteamento para aqueles é configurado no núcleo da Internet e esse roteamento deve ser configurado pelo ISP e pelo gateway local para a Internet. Isso não é viável e não permite a readmissão dinâmica.

O padrão IP móvel que permitiria esse reencaminhamento não teve uma implementação generalizada. O IPv4 móvel funciona com um sistema que gerencia seu endereço IPv4 global e redireciona-o para sua localização atual.

Você pode conseguir algo assim hoje usando uma VPN : Configurar uma VPN servidor com um IP estático em algum lugar da Internet, e tenha sua VM do Ubuntu Server conectada a ele. Em seguida, redirecione as portas em questão do servidor VPN para o cliente.

Se uma constante nome que mapeia o endereço IP atual for suficiente, você pode usar um serviço dyndns . Eles fornecem um nome de domínio que você pode atualizar com um utilitário cliente executado em sua VM. Dessa forma, você pode apontar my-ubuntu-vm.dyndns-provider.net para o endereço local atual em uso.

Em vez de registrar um nome DNS global, você também pode usar DNS multicast com avahi . Após a configuração , sua VM estará acessível sob um nome como my-ubuntu-vm.local . Infelizmente, o DNS multicast requer software adicional. Embora muitos sistemas Linux e Mac OS X o suportem de imediato, os sistemas Windows não o suportam. Você pode instalar o Bonjour da Apple (também oferecido juntamente com Apple Safari ) nesses sistemas.

Se o dyndns não funcionar para você (você realmente precisa de um IP, e não um nome, ou os tempos de atualização são muito irregulares), e você tem uma conexão de internet quase constante, recomendo mover o sistema VM para um host que tem um endereço IP global. Isso tem as mesmas desvantagens da solução VPN (não funciona quando você não está conectado à Internet e você terá que pagar pelo servidor e pelo endereço global), mas é relativamente fácil de configurar.

Se você quiser acessar a VM somente a partir do próprio host , basta usar NAT e Port Forwarding (agora disponível na GUI para, via Devices - > Network Adapters ) . Redirecione as portas (por exemplo, redirecione o servidor HTTP do cliente da porta 80 no convidado para a porta 2080 no host) e use a porta modificada. Passo-a-passo:

  1. Vá para a guia de rede. Se a VM estiver em execução, selecione Devices - > %código%. Se não estiver, clique com o botão direito do mouse, selecione Configurações (ou clique no botão Configurações) e vá para a guia Rede.
  2. Verifique se há apenas um adaptador e se ele está definido como NAT. (Se você mudar alguma coisa aqui, você precisa reconfigurar a VM)
  3. Abra Network Adapters na guia "Rede".
  4. Clique em Advanced .
  5. Adicione uma regra. Configure a porta do host para uma porta alta (como 2080) e a porta do cliente para a porta que você deseja redirecionar (80 para HTTP, 22 para ssh).
  6. Insira Port Forwarding no navegador do seu sistema host para acessar o servidor HTTP do cliente.

Se você precisar dos serviços para rodar nas mesmas portas, você também pode adicionar uma interface adicional (exceto a do NAT) e configurá-la para somente host . Isso fará com que uma nova interface apareça em seu sistema host, e você poderá usar as reservas do VirtualBox IP privado para que esta rede se comunique com o convidado. Passo a passo:

  1. Encerre a VM.
  2. Clique com o botão direito do mouse na VM no gerenciador e selecione http://localhost:2080 .
  3. Vá para a guia Settings .
  4. Configure duas interfaces: uma como NAT (para permitir que sua VM acesse a Internet), a outra como somente host (para permitir que seu host se comunique com o convidado).
  5. Inicialize a VM e digite Network para descobrir seu endereço. Você quer aquele começando com /sbin/ifconfig .
  6. Use esse endereço no sistema host.
por 28.08.2011 / 10:16
1

Você não pode ter um endereço IP estático se mover seu servidor pelos provedores. Cada provedor lhe atribuirá qualquer endereço que desejar. Como já foi mencionado, você pode usar um serviço dyndns para apontar um nome de domínio em qualquer endereço IP que esteja por vez. No entanto, isso não funcionará em geral, porque pode haver um firewall ou NAT bloqueando as conexões de entrada.

Uma alternativa confiável mas complexa é fazer uso de um servidor existente que já tenha um endereço IP estático (ou um domínio atualizado do dyndns). Se nada mais, você provavelmente pode configurar um em casa (é melhor que seja o Linux). Depois de ter um servidor desse tipo, configure uma rede privada virtual (VPN) entre o servidor estático e o servidor Ubuntu em roaming. Isso fornecerá ao seu servidor estático e aos endereços IP privados do seu servidor móvel, através dos quais eles podem se comunicar, onde quer que seu laptop esteja. Em outras palavras, ele aparecerá como se o servidor estático e o servidor móvel fossem parte da mesma LAN. Agora você pode configurar o NAT e o roteamento no servidor estático para permitir que o servidor móvel acesse a Internet através da VPN e do servidor estático. Você pode adicionar regras de encaminhamento de porta no servidor estático para redirecionar portas específicas do servidor estático para o servidor de roaming, por meio da VPN. Isso fará com que pareça que esses serviços estão localizados no endereço IP do servidor estático, enquanto eles realmente passarão pela VPN para serem atendidos pelo servidor móvel.

    
por 28.08.2011 / 11:03