使用 VirtualBox,我有一个运行 Centos 7 的启用了 NAT 的虚拟机。主机操作系统是 Windows 7。我似乎无法访问在虚拟机内运行的 Django Web 服务器。我错过了什么?
我为虚拟机设置了两个端口转发规则:
我在 guest 操作系统上启动 Django 网络服务器:
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
这是在 guest 操作系统上执行的 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 规则有效。我可以毫无问题地通过 SSH 连接到机器。
最佳答案
这不是解决方案,而是解决我的问题的方法。也许这会帮助遇到与我类似的问题并且只想连接到他们 VM 的网络服务器的任何人。
由于 SSH 正在运行,我想我可以通过 SSH 隧道访问该网页。通过命令行这样做的语法是:
ssh -L <local-port>:<remote-host>:<remote-port>
所以在我的情况下,如果我想通过命令行打开隧道,我会这样做:
ssh -L 8000:127.0.0.1:8000
这将允许我浏览到 http://localhost:8000
并访问该网站。
您也可以通过 PuTTY 执行此操作,但我不会在此处进行解释,因此只需 Google 即可获取指南。
关于django - 无法连接到运行 Django 的虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958890/