使用VirtualBox,我有一个支持NAT的VM运行Centos 7,主机操作系统是Windows 7,我似乎无法访问VM内部运行的Django web服务器。我遗漏了什么?
我为虚拟机设置了两个端口转发规则:
我在来宾操作系统上启动Django web服务器时:
python manage.py runserver 0.0.0.0:8000
我试着访问主机操作系统上的网页:
http://localhost:8000
Google给了我错误代码ERR_CONNECTION_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
的结果:
[user@win7 ~ ]$ netstat -na | grep 8000
TCP 0.0.0.0:8000 0.0.0.0:0 LISTENING
还值得一提的是,SSH规则有效。我可以安全地进入机器,没有问题。
发布于 2014-07-25 16:24:02
这不是一个解决方案,而是一个解决我的问题的方法。可能会帮助任何遇到类似于我的问题的人,只想能够连接到他们的VM的for服务器。
由于SSH正在工作,我想我可以通过SSH隧道访问网页。通过命令行这样做的语法是:
ssh -L <local-port>:<remote-host>:<remote-port>
因此,在我的情况下,如果我想通过命令行打开隧道,我会这样做:
ssh -L 8000:127.0.0.1:8000
这将允许我浏览到http://localhost:8000
并访问该网站。
你也可以通过PuTTY来做这件事,但是我不会在这里解释,所以只是谷歌作为一个指南。
发布于 2015-12-26 02:34:29
ssh隧道是一个可以解决的问题,但问题几乎可以肯定是CentOS 7,它现在使用的是firewalld,而不是iptables来管理访问。而且,与iptables不同的是,默认配置具有很强的限制性。
如果
ps -ae \ grep防火墙
返回类似于
上午602 :00:00
您的系统正在运行firewalld,而不是iptables。他们不一起跑。
要更正VM,您可以从主机访问django站点,请使用以下命令:
防火墙-cmd --zone=public --附加端口=8000/tcp--永久 防火墙-cmd--重新加载
感谢pablo v在文章“虚拟机上的访问django服务器”中指出了这一点。
https://stackoverflow.com/questions/24958890
复制相似问题