端口使用Vagrant转发时连接重置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了端口使用Vagrant转发时连接重置相关的知识,希望对你有一定的参考价值。

我有Vagrant / VirtualBox运行Ubuntu 12.04 LTS OS。我已将Vagrant配置为将来宾端口8000转发到我的主机端口8888。

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

当虚拟机启动时,我在端口8000上启动Django dev服务器。

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

好的,我可以把它放在后台,我甚至可以curl localhost:8000并从服务器获得一些输出

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

但是当我尝试使用Firefox / Chrome / Telnet从我的主机上攻击服务器时,我得到连接重置/连接丢失/ ERR_CONNECTION_RESET等。

首先我认为它可能是一些iptables的事情,但事实证明Ubuntu默认允许一切。我还关闭了主机上的防火墙。我怎样才能深究这一点?

答案

我让Django听了127.0.0.1:8000(默认)

正如Mitchell在这里的回答所解释的那样:Vagrant's port forwarding not working我应该一直在听0.0.0.0。以下是他回答的引用:

我想添加一个额外的注释,这通常是由VM中的服务器引起的,因为它绑定到127.0.0.1,这是环回。您需要确保服务器绑定到0.0.0.0,以便所有接口都可以访问它。

如果你正在使用Django,你想要像这样启动开发服务器:./manage.py runserver 0.0.0.0:8000

另一答案

1)。项目必须以python manage.py runserver 0.0.0.0:8000运行。 如果这不能解决您的问题

2)。打开您的Vagrant文​​件并添加 config.vm.network "forwarded_port", guest: 8000, host: 8001此后 # config.vm.network "forwarded_port", guest: 80, host: 8080线

这个工作在我的情况下;)

注意:运行vagrant up时提供此正向端口信息 .... ==> default: Forwarding ports...

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

另一答案

另一个解决方案是使用ssh tunneling与vagrant。打开一个终端和cd进入你的Vagrantfile所在的目录。假设您的虚拟机启动并运行(vagrant up),请执行以下命令。

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

然后将客人端口8000转发给主机。

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

现在只需打开浏览器并检查127.0.0.1:8000

请注意,上一个命令也将在ssh服务器上打开一个shell。如果你想在ssh服务器上打开没有shell的ssh隧道,请添加-N

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

以上是关于端口使用Vagrant转发时连接重置的主要内容,如果未能解决你的问题,请参考以下文章

vagrant配置端口转发

Vagrant上的Rails 4.2服务器端口转发不起作用

在现有的vagrant box上添加端口转发

Ubuntu 16.04 - Vagrant Box问题:ssh_exchange_identification:读取:通过对等方重置连接

Cygwin 上 Vagrant 中的 Puphpet MySQL 工作台连接

尝试使用 SSH over HTTP 连接时通过 [IP] 端口 443 重置连接