2013-08-10 17 views
26

Ho Vagrant/VirtualBox con sistema operativo Ubuntu 12.04 LTS. Ho configurato Vagrant per inoltrare la porta ospite 8000 alla mia porta host 8888.Reset connessione durante il port forwarding con Vagrant

[default] Preparing network interfaces based on configuration... 
[default] Forwarding ports... 
[default] -- 22 => 2222 (adapter 1) 
[default] -- 8000 => 8888 (adapter 1) 
[default] Booting VM... 
[default] Waiting for VM to boot. This can take a few minutes. 
[default] VM booted and ready for use! 

Quando la macchina virtuale si avvia, comincio un server dev Django sulla porta 8000.

Development server is running at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 

Va bene grande, posso metterlo in background e posso anche curl localhost:8000 e ottenere qualche uscita dal server

<div id="explanation"> 
    <p> 
    You're seeing this message because you have <code>DEBUG = True</code> in your 
    Django settings file and you haven't configured any URLs. Get to work! 
    </p> 
</div> 

Ma quando provo a colpire il server dalla mia macchina host con un Firefox/Chrome/TELN sto ricevendo Connection Reset/Connection Lost/ERR_CONNECTION_RESET ecc.

Per prima cosa ho pensato che potesse essere una cosa iptables, ma risulta che Ubuntu ha il permesso di default su tutto. Ho anche spento il firewall sul mio computer host. Come posso arrivare alla fine di questo?

risposta

69

ho avuto Django ascolto su 127.0.0.1:8000 (default)

Come spiegato nella risposta di Mitchell qui: Vagrant's port forwarding not working avrei ascoltato su 0.0.0.0. Ecco una citazione della sua risposta:

ho voluto aggiungere una nota complementare che spesso questo è causato dal server all'interno della VM perché si lega a 127.0.0.1, che è di loopback. È necessario assicurarsi che il server sia associato a 0.0.0.0 in modo che sia possibile accedere a tutte le interfacce da .

Se stai usando Django, si vuole avviare il server dev così: ./manage.py runserver 0.0.0.0:8000

+1

E se si sta utilizzando Rails, e successo per arrivare a questo post Django, il vostro corrispondente 'opzioni rails' sono' rotaie -b 0.0 .0.0' – sameers

2

1). Il progetto deve essere eseguito come python manage.py runserver 0.0.0.0:8000.
se questo non risolve il problema allora

2). Aprire il Vagrantfile e aggiungere
config.vm.network "forwarded_port", guest: 8000, host: 8001 questo dopo
# config.vm.network "forwarded_port", guest: 80, host: 8080 linea

Questo lavoro nel mio caso;)

Nota: Questa informazione porta in avanti previsto quando viene eseguito vagrant up
....
==> default: Forwarding ports...

default: 8000 => 8001 (adapter 1)
default: 22 => 2222 (adapter 1)

1

Un'altra soluzione consiste nell'utilizzare ssh tunneling con vagante. Aprire un terminale e cd nella directory in cui si trova lo Vagrantfile. Supponendo che vm sia attivo e in esecuzione (vagrant up), eseguire il seguente comando.

# save vagrant ssh config to a file named `vagrant-ssh-config` 
vagrant ssh-config > vagrant-ssh-config 

Successivamente inoltra la porta 8000 dell'ospite da ospitare.

ssh -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default 

Ora basta aprire il browser e controllare 127.0.0.1:8000.

Si noti che il comando precedente aprirà anche una shell sul server ssh. Se si desidera aprire tunnel ssh senza una shell sul server ssh aggiungere -N

ssh -N -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default 
Problemi correlati