使用VirtualBox,我有一台运行Centos 7的支持NAT的VM。主机操作系统是Windows 7.我似乎无法访问在VM内运行的Django Web服务器。我错过了什么?
我为虚拟机设置了两个端口转发规则:
我在客户操作系统上启动Django Web服务器:
python manage.py runserver 0.0.0.0:8000
我尝试访问主机操作系统上的网页:
http://localhost:8000
Google Chrome向我提供了错误代码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
以下是在主机操作系统上执行netstat
的结果(使用Cygwin):
[user@win7 ~ ]$ netstat -na | grep 8000
TCP 0.0.0.0:8000 0.0.0.0:0 LISTENING
还值得一提的是SSH规则有效。我可以毫无问题地SSH到机器上。
答案 0 :(得分:1)
这不是一个解决方案,而是解决我的问题。也许这可以帮助任何人遇到类似我的问题,并希望能够连接到他们的VM的网络服务器。
由于SSH正在运行,我想我可以通过SSH隧道访问网页。通过命令行执行此操作的语法是:
ssh -L <local-port>:<remote-host>:<remote-port>
所以在我的情况下,如果我想通过命令行打开隧道,我会这样做:
ssh -L 8000:127.0.0.1:8000
这样我就可以浏览http://localhost:8000
并访问该网站。
您也可以通过PuTTY执行此操作,但我不会在此处解释,因此只需谷歌作为指南。
答案 1 :(得分:0)
ssh隧道是一个好的解决办法,但问题几乎可以肯定是CentOS 7现在使用firewalld而不是iptables来管理访问。并且,与iptables不同,默认配置非常严格。
如果
ps -ae | grep防火墙
返回类似
的内容602? 00:00:00 firewalld
你的系统正在运行firewalld,而不是iptables。他们不会一起跑。
要更正您的VM,以便您可以从主机访问您的django站点,请使用以下命令:
firewall-cmd --zone = public --add-port = 8000 / tcp --permanent
firewall-cmd --reload
非常感谢pablo v在帖子&#34;访问虚拟机上的django服务器&#34;指出这一点。