无法从来宾虚拟机上的 tomcat 获取 http(nat 连接)

can't get http from tomcat on guest vm (nat connection)

我在客户机上安装了 运行 centos(使用 virtualbox,通过 nat 连接)。 这台机器上的 8080 端口上有 tomcat 运行。

<Connector port="8080" protocol="HTTP/1.1" address="0.0.0.0"
           connectionTimeout="20000"
           redirectPort="8443" />

有从主机到来宾的端口转发
主机 2222,来宾 22 (ssh)
主机 40001,访客 8080

我尝试从 http://localhost:8080 获取页面 如果我通过 ssh 从主机连接并执行 curl localhost:8080 我会得到一个 html 页面。

但是如果尝试通过浏览器获取http://localhost:40001,它会变成无限加载。
网络统计-an |在主机显示上找到“40001” C:\Users\user>netstat -an |找到“40001”

  TCP    0.0.0.0:40001          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:30279        127.0.0.1:40001        FIN_WAIT_2
  TCP    127.0.0.1:40001        127.0.0.1:30279        CLOSE_WAIT

如果我尝试在主机上远程登录 (telnet localhost 40001),连接正常。

如果我尝试在来宾上获取 netstat,我会得到这个

[aegis@localhost ~]$ netstat -an | grep LISTEN | grep tcp
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN

我不明白为什么主机的 telnet 可以正常工作,但我无法通过浏览器获取页面。你能帮我吗,我哪里配置有误?

起初,我因为工作而感到沮丧"telnet localhost 40001 from host machine"。
但是22端口和8080端口是有区别的。

默认开启22端口
8080端口没有。
如果你遇到这样的问题,你应该允许防火墙连接到 8080 端口。

例如,你可以执行这条语句:

iptables -I INPUT 1 -i eth0 -p tcp --dport 8080 -j ACCEPT