2013-08-10 15 views
26

Mam Vagrant/VirtualBox z systemem operacyjnym Ubuntu 12.04 LTS. Mam skonfigurowane Vagrant aby przekierować port 8000 gości do mojego portu hosta 8888.Resetowanie połączenia podczas przekazywania portu przez 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! 

Gdy maszyna wirtualna zaczyna się, zacznę serwer dev Django na porcie 8000.

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

Ok wielkie, mogę umieścić go w tle i mogę nawet curl localhost:8000 i trochę wyjście z serwera

<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> 

Ale gdy próbuję trafić na serwer z mojego hosta z Firefox/Chrome/Teln I dostaję Resetowanie połączenia/Połączenie utracone/ERR_CONNECTION_RESET itp.

Najpierw myślałem, że może to być coś iptables, ale okazuje się, że Ubuntu ma domyślne zezwolenie na wszystko. Wyłączyłem też zaporę ogniową na komputerze hosta. Jak mogę dojść do sedna tego?

Odpowiedz

69

miałem Django słuchania na 127.0.0.1:8000 (domyślnie)

Jak wyjaśniono w odpowiedzi Mitchella tutaj: Vagrant's port forwarding not working Powinienem był nasłuch na 0.0.0.0. Oto cytat z jego odpowiedź:

chciałem dodać dodatkową uwagę, że często jest to spowodowane przez serwer w VM, ponieważ wiąże się z 127.0.0.1, który jest sprzężenia zwrotnego. Musisz się upewnić, że serwer jest powiązany z 0.0.0.0, aby wszystkie interfejsy mogły uzyskać do niego dostęp.

Jeśli używasz Django, chcesz uruchomić serwer dev takiego: ./manage.py runserver 0.0.0.0:8000

+1

A jeśli używasz szyny, i stało się dostać do tego postu Django, twój odpowiadający '' Opcje rails' są szyny -b 0,0 .0,0' – sameers

2

1). Projekt musi być uruchamiany jako python manage.py runserver 0.0.0.0:8000.
jeśli to nie rozwiąże problemu, to

2). Otwórz Vagrantfile i dodać
config.vm.network "forwarded_port", guest: 8000, host: 8001 to po
# config.vm.network "forwarded_port", guest: 80, host: 8080 linia

Praca ta w moim przypadku;)

Uwaga: naprzód informacji portu podany podczas uruchomienia vagrant up
....
==> default: Forwarding ports...

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

1

Innym rozwiązaniem jest użycie ssh tunneling z włóczęgę. Otwórz terminal i cd w katalogu, w którym znajduje się twój Vagrantfile. Zakładając, że Twój komputer wirtualny jest uruchomiony (vagrant up), wykonaj następujące polecenie.

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

Następnie do przodu gości port 8000 do hosta.

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

Teraz wystarczy otworzyć przeglądarkę i sprawdzić 127.0.0.1:8000.

Należy zauważyć, że poprzednie polecenie otworzy także powłokę na serwerze ssh. Jeśli chcesz otworzyć ssh tunel bez powłoki na serwerze ssh dodać -N

ssh -N -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default 
Powiązane problemy