2014-07-25 2 views
3

En utilisant VirtualBox, j'ai une VM compatible NAT exécutant Centos 7. Le système d'exploitation hôte est Windows 7. Je n'arrive pas à accéder au serveur web Django qui tourne à l'intérieur de la VM. Qu'est-ce que je rate?Impossible de se connecter à la VM exécutant Django

J'ai deux règles de redirection de port définies pour la machine virtuelle:

Port Forwarding Rules

Je commence le serveur Web Django sur l'OS invité avec:

python manage.py runserver 0.0.0.0:8000 

Et j'essaie de visiter le page Web sur le système d'exploitation hôte à:

http://localhost:8000 

Google C hrome me donne le code d'erreur ERR_CONNECTION_RESET.

Le résultat de curl sur le système d'exploitation hôte:

[[email protected] ~ ]$ curl http://localhost:8000 
curl: (56) Recv failure: Connection reset by peer 

Voici le résultat d'une netstat effectuée sur le système d'exploitation invité:

[[email protected] ~ ]$ netstat -na | grep 8000 
tcp  0  0 0.0.0.0:8000   0.0.0.0:*    LISTEN 

Voici le résultat d'une netstat effectuée sur la OS hôte (avec Cygwin):

[[email protected] ~ ]$ netstat -na | grep 8000 
    TCP 0.0.0.0:8000   0.0.0.0:0    LISTENING 

Il est Il convient également de mentionner que la règle SSH fonctionne. Je peux SSH dans la machine sans problèmes.

+0

Vous avez oublié de mentionner ce qui se passe lorsque vous accédez à 'http: // localhost: 8000'. Y a-t-il un timeout? – zopieux

+0

@Zopieux Les résultats sont maintenant dans la question. –

Répondre

1

Ce n'est pas une solution, mais une solution de rechange pour mon problème. Peut-être que cela aidera n'importe qui rencontrant un problème semblable au mien, et veut juste pouvoir se connecter au serveur Web de leur VM. Comme SSH fonctionnait, j'ai pensé que je pouvais accéder à la page Web via un tunnel SSH. La syntaxe de le faire via la ligne de commande est:

ssh -L <local-port>:<remote-host>:<remote-port> 

Donc, dans ma situation, si je voulais ouvrir un tunnel via la ligne de commande que je ferais:

ssh -L 8000:127.0.0.1:8000 

Cela me permet de parcourir de http://localhost:8000 et accédez au site Web.

Vous pouvez également le faire via PuTTY, mais je ne vais pas l'expliquer ici, alors juste Google pour un guide.

0

Le tunnel ssh est un bon fonctionnement, mais le problème est presque certainement CentOS 7 qui utilise maintenant firewalld plutôt que iptables pour accéder au gestionnaire. Et, contrairement à iptables, la configuration par défaut est assez restrictive.

si

ps ae | grep pare-feu

retours quelque chose comme

602?00:00:00 firewalld

votre système exécute firewalld, pas iptables. Ils ne courent pas ensemble.

Pour corriger votre VM afin que vous puissiez accéder à votre site django de l'hôte, utilisez les commandes:

pare-feu cmd --zone = public --add-port = 8000/tcp --permanent

pare-feu cmd --reload

Un grand merci à pablo v dans le poste "accès serveur django sur la machine virtuelle" pour l'avoir signalé.