首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法连接到运行Django的VM

无法连接到运行Django的VM
EN

Stack Overflow用户
提问于 2014-07-25 15:09:28
回答 2查看 1.2K关注 0票数 3

使用VirtualBox,我有一个支持NAT的VM运行Centos 7,主机操作系统是Windows 7,我似乎无法访问VM内部运行的Django web服务器。我遗漏了什么?

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

我在来宾操作系统上启动Django web服务器时:

代码语言:javascript
运行
复制
python manage.py runserver 0.0.0.0:8000

我试着访问主机操作系统上的网页:

代码语言:javascript
运行
复制
http://localhost:8000

Google给了我错误代码ERR_CONNECTION_RESET

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

代码语言:javascript
运行
复制
[user@win7 ~ ]$ curl http://localhost:8000
curl: (56) Recv failure: Connection reset by peer

以下是在客户操作系统上执行的netstat的结果:

代码语言:javascript
运行
复制
[user@vm ~ ]$ netstat -na | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN

以下是在主机操作系统(使用Cygwin)上执行netstat的结果:

代码语言:javascript
运行
复制
[user@win7 ~ ]$ netstat -na | grep 8000
  TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING

还值得一提的是,SSH规则有效。我可以安全地进入机器,没有问题。

EN

回答 2

Stack Overflow用户

发布于 2014-07-25 16:24:02

这不是一个解决方案,而是一个解决我的问题的方法。可能会帮助任何遇到类似于我的问题的人,只想能够连接到他们的VM的for服务器。

由于SSH正在工作,我想我可以通过SSH隧道访问网页。通过命令行这样做的语法是:

代码语言:javascript
运行
复制
ssh -L <local-port>:<remote-host>:<remote-port>

因此,在我的情况下,如果我想通过命令行打开隧道,我会这样做:

代码语言:javascript
运行
复制
ssh -L 8000:127.0.0.1:8000

这将允许我浏览到http://localhost:8000并访问该网站。

你也可以通过PuTTY来做这件事,但是我不会在这里解释,所以只是谷歌作为一个指南。

票数 1
EN

Stack Overflow用户

发布于 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服务器”中指出了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24958890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档