Como se conectar a uma VM guest do sistema host?

15

Eu tenho uma configuração de servidor web de VM e instalei e iniciei o Apache. A VM tem uma interface de rede em ponte e pode ser pingada do host usando 192.168.0.2.

No entanto, se eu digitar esse mesmo endereço IP no navegador da máquina host, esperaria ver a página padrão do apache gerada na VM, mas, em vez disso, obtenho can't connect to 192.168.0.2 no navegador das máquinas host.

Eu claramente perdi alguma coisa. Alguém sabe o que eu perdi ou fiz de errado?

Saída da VM netstat -tnlp

tcp     0     0 0.0.0.0:22        0.0.0.0:*     LISTEN     950/sshd
tcp     0     0 127.0.0.1:25      0.0.0.0:*     LISTEN    1026/master
tcp     0     0 :::22                  :::*     LISTEN     904/sshd
tcp     0     0 ::1:25                 :::*     LISTEN     980/master

Desenho aproximado do que eu estou pensando que a atividade de rede / conectividade seria semelhante.

    
por oshirowanen 11.01.2014 / 15:14

3 respostas

14

Problema nº 1 - tipos de rede de VM

Existem 3 modos de rede:

  1. NAT
  2. Somente host
  3. Pontuado

Detalhes sobre como configurá-los

Quando usar cada um?

  • # 1 : para desenvolvimento de aplicativos do Facebook / Web que estão em outros servidores
  • # 2 : se você quiser criar seu próprio aplicativo e testá-lo no host do VirtualBox (não apenas na VM guest)
  • # 3 : se você quiser criar um aplicativo e testá-lo em outros sistemas na LAN

Problema nº 2 - bloqueio de firewall?

Dependendo de qual distro você está usando, o firewall pode estar impedindo que o seu navegador acesse sua instância do Apache. Isso faria sentido, já que você pode fazer ping no sistema, mas não acessá-lo pela porta 80, que é a porta em que o Apache está escutando.

desativando temporariamente

No CentOS você usa este comando para desativá-lo.

$ /etc/init.d/iptables stop

verifique se o Apache está escutando

Você também pode confirmar que está escutando nessa porta.

$ netstat -antp | grep :80 | head -1 | column -t
tcp  0  0  :::80  :::*  LISTEN  3790/httpd

confirma a desativação do firewall

O firewall pode ser confirmado que está totalmente aberto.

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

Se isso resolver seu problema, você poderá adicionar permanentemente uma regra que permita o tráfego na porta TCP 80.

adicionando uma regra para a porta TCP 80

$ /etc/init.d/iptables restart
$ iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ /etc/init.d/iptables save

NOTA: Isso fará com que a regra persista entre as reinicializações.

o firewall está aceitando a porta TCP 80

Um sistema que tenha a porta 80 aberta seria parecido com isto:

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:8834 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Problema # 3 - Apache ouvindo?

Na edição acima, vimos que o Apache estava ouvindo, mas às vezes ele é mal configurado, de modo que ele esteja apenas ouvindo um endereço IP ou que esteja ouvindo em uma interface de rede diferente. O comando netstat pode ser usado para verificar isso, bem como revisar os arquivos de configuração do Apache.

$ netstat -anpt | grep :80 | column -t
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  1750/httpd

Isso mostra que o Apache está escutando em todas as interfaces (IP 0.0.0.0).

Não vou repetir o que @a resposta do Lekensteyn , que aborda este assunto específico em mais detalhes aqui.

Referências

por 11.01.2014 / 16:20
2

Sua instalação do Apache provavelmente está configurada para escutar apenas no host local. Você pode verificar isso executando em seu convidado:

$ netstat -tnl | grep :80
Proto Recv-Q Send-Q Local Address      Foreign Address  State
tcp        0      0 0.0.0.0:80         0.0.0.0:*        LISTEN
tcp6       0      0 :::80              :::*             LISTEN

Se ele diz 0.0.0.0:80 , ele escuta em todas as interfaces. No seu caso, eu esperaria 127.0.0.1:80 . Para resolver isso, edite sua configuração do Apache (em algum lugar em /etc/httpd/conf/ ) e altere:

Listen 127.0.0.1:80

para:

Listen 80

Você também pode usar nmap para verificar os serviços disponíveis em sua máquina. Deveria se parecer com:

$ nmap 192.168.0.2

Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-11 15:22 CET
Nmap scan report for localhost (192.168.0.2)
Host is up (0.0036s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds
    
por 11.01.2014 / 15:21
2

No CentOS 7, o firewalld substituiu o iptables como o firewall padrão.

Eu tive que usar

systemctl stop firewalld

para pausar o firewall para testar a conexão do host ao VM do CentOS.

Veja mais aqui: link

    
por 14.01.2016 / 22:27

Tags