Linux 虚拟机上部署了个小网站,怎么让外部 电脑 可以访问?

用 netstat 查了下虚拟机的 127.0.0.1:5000 可以访问,我真实的电脑访问不了,虚拟机的防火墙也关了,我真实机就是访问不了,为什么?,真实机是可以访问到虚拟机的80端口的

clipboard.png

阅读 10k
10 个回答

你的虚拟机要和真机是桥接,即要在一个局域网上。

。。这不是应该用 IP 地址访问嘛,,你本机的 IP 和 虚拟机的 IP 不一样,,应该是 http://虚拟机的IP:5000

在所有主机上127.0.0.1都表示本地IP(也就是电脑自己)

你需要先确定虚拟机的IP地址,如果不知道的怎么确定的话,有个比较笨的方法在虚拟机里面输入命令:

ifconfig

输入命令后会输出所有网卡的信息,包括每个网卡的IP地址,这些IP地址你一个一个试,就能试出来

  1. 如果在局域网内,你需要查到你当前虚拟机的局域网IP,如192.168.1.120,那么访问你部署的网站就应该是局域网IP+端口,如:192.168.1.120:5000
  2. 如果是在局域网外,也就是所谓的外网,就需要使用公网ip,如果没有公网ip,就使用FRP内网穿透。

虚拟机做端口转发到本机,然后访问本机的就可以

有些内网穿透技术可以实现 花生壳 ngrok

新手上路,请多包涵

从netstat命令的结果来看,这个应用的监听地址是127.0.0.1。
这意味着,这时只能在虚拟机里用本地回环地址才能访问网站,外部是无法访问的,即便你关了防火墙。

  1. 首先需要把虚拟机上这个应用的监听地址改成0.0.0.0(意味着监听虚拟机所有可用v4地址)。 接着在虚拟机上测试 http://127.0.0.1:5000 和http://虚拟机IP:5000是否都可以访问。
  2. 然后在宿主机上用 http://虚拟机IP:5000 试试能否访问。一般情况下宿主机和虚拟机是在同一个子网,除非虚拟机防火墙的限制,是能访问到的。
  3. 不明确所谓的“外部电脑”是指公网还是仅指宿主机所在局域网。若是后者,可以在宿主机上做防火墙端口转发或者使用nginx做反向代理

看截图,如果按照我以往经验来说 127.0.0.0:8000 是端口监听限制了只有内部可以访问,想要所有ip访问,得 0.0.0.0:8000

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏