web-dev-qa-db-fra.com

Réponse vide du serveur - impossible de se connecter à vagrant vm avec transfert de port

J'exécute werkzeug (dans le cadre d'une configuration Tilestache) à l'intérieur d'une VM vagabonde, exécutant ubuntu 'precise'.

Dans mon Vagrantfile, j'ai:

config.vm.network :forwarded_port, guest: 8080, Host: 8080

Lorsque je démarre le serveur dans la VM, je vois:

 * Running on http://127.0.0.1:8080/

Si je curl cette adresse depuis la machine virtuelle, j'obtiens le résultat attendu. Quand je la change curl de la machine hôte, je reçois:

curl: (52) Empty reply from server

Et Chrome dit "Aucune donnée reçue".

Informations de dépannage:

  • Le serveur répond aux pings de la machine hôte.
  • un renifleur de port vérifie que le port est ouvert
  • l'exécution de netstat -ntlp | grep 8080 dans la machine virtuelle indique que le serveur est à l'écoute sur 8080
  • Mon fichier hosts local n'a pas de conflits étranges
  • J'envoie aussi 22 => 2222, et je peux ssh sans problème
  • J'ai désactivé le pare-feu sur l'hôte et je ne crois pas qu'il y en ait un sur l'invité (iptables et ufw sont désactivés, au moins)
  • J'ai mis auto_correct: true en cas de conflit (il n'y en a pas)

Je sais que je pourrais configurer un réseau privé, mais j'aimerais comprendre pourquoi cela ne fonctionne pas et comment le résoudre.

D'autres idées?

27
meetar

Lorsque vous exécutez un serveur depuis une machine virtuelle, démarrez-le sur 0.0.0.0 au lieu de 127.0.0.1.

127.0.0.1 est uniquement accessible à la machine locale, ce qui pour un VM ne signifie rien en dehors de la VM ne peut l'atteindre! 0.0.0.0 est accessible de n’importe où sur le réseau local, ce qui, pour un VM, inclut la machine hôte.

La réponse est venue d'ici: Réinitialisation de la connexion lors de la redirection de port avec Vagrant

(Ce qui a apparemment obtenu sa réponse à partir d'ici: https://stackoverflow.com/a/5999945/738675 )

Avec l'aide de: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

Google-appât:

Voici les erreurs que vous pourriez recevoir si tel est le problème:

  • Chrome: "Aucune donnée reçue"
  • Firefox: "La connexion a été réinitialisée - La connexion au serveur a été réinitialisée pendant le chargement de la page."
  • Safari: "Safari ne peut pas ouvrir la page [URL] car le serveur a interrompu la connexion de manière inattendue"
  • curl: "Réponse vide du serveur"
69
meetar

Dans la ligne /etc/hosts change
127.0.0.1 localhost -> 0.0.0.0 localhost
et ensuite restart server

23
Truong Nguyen

Cela peut également être un problème avec votre pare-feu sur la machine vagabonde. Si vous pouvez contrôler l'adresse lorsque vous êtes sur la case d'oubli, vérifiez les paramètres de votre pare-feu ou désactivez-le:

sur CENTOS:

Sudo service firewalld stop

Ensuite, vous devriez mettre à jour vos paramètres firewalld et le redémarrer;)

1
Denise Mauldin