Can';t连接到运行Django的VM

Can';t连接到运行Django的VM,django,http,virtual-machine,virtualbox,portforwarding,Django,Http,Virtual Machine,Virtualbox,Portforwarding,使用VirtualBox,我有一个运行Centos 7的支持NAT的虚拟机。主机操作系统是Windows7。我似乎无法访问运行在VM中的Django web服务器。我错过了什么 我为虚拟机设置了两个端口转发规则: 我在来宾操作系统上启动Django web服务器,方法是: python manage.py runserver 0.0.0.0:8000 我尝试访问主机操作系统上的网页: http://localhost:8000 Google Chrome给了我错误代码ERR\u CONNE

使用VirtualBox,我有一个运行Centos 7的支持NAT的虚拟机。主机操作系统是Windows7。我似乎无法访问运行在VM中的Django web服务器。我错过了什么

我为虚拟机设置了两个端口转发规则:

我在来宾操作系统上启动Django web服务器,方法是:

python manage.py runserver 0.0.0.0:8000
我尝试访问主机操作系统上的网页:

http://localhost:8000
Google Chrome给了我错误代码
ERR\u CONNECTION\u RESET

主机操作系统上的
curl
结果:

[user@win7 ~ ]$ curl http://localhost:8000
curl: (56) Recv failure: Connection reset by peer
以下是在来宾操作系统上执行的
netstat
的结果:

[user@vm ~ ]$ netstat -na | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN
以下是在主机操作系统(使用Cygwin)上执行的
netstat
的结果:


还值得一提的是,SSH规则是有效的。我可以用SSH连接到机器上,没有任何问题。

这不是一个解决方案,而是解决我问题的一种方法。也许这会帮助遇到类似问题的任何人,他们只想连接到虚拟机的Web服务器

由于SSH正在工作,我想我可以通过SSH隧道访问该网页。通过命令行执行此操作的语法为:

ssh -L <local-port>:<remote-host>:<remote-port>
这将允许我浏览到
http://localhost:8000
并访问该网站


您也可以通过PuTTY来实现这一点,但我不会在这里解释,所以只需谷歌提供指导。

ssh隧道是一个不错的解决方案,但问题几乎可以肯定是CentOS 7,它现在使用firewalld而不是iptables来管理访问。而且,与iptables不同,默认配置非常严格

如果

ps-ae | grep防火墙

返回类似于

602?00:00:00防火墙D

您的系统正在运行firewalld,而不是iptables。他们不是一起跑的

要更正VM,以便您可以从主机访问django站点,请使用以下命令:

防火墙cmd--zone=public--add port=8000/tcp--permanent

防火墙cmd—重新加载


非常感谢pablo v在“访问虚拟机上的django服务器”一文中指出了这一点。

您忘记提到当您到达
http://localhost:8000
。有超时吗?@Zopieux结果现在有问题了。
ssh -L <local-port>:<remote-host>:<remote-port>
ssh -L 8000:127.0.0.1:8000