无法从公共 IP 连接到 tomcat7

无法从公共 IP 连接到 tomcat7

我已经发布我在 stackoverflow 上提问过一个问题,建议在这里提问。

过去两天我一直在努力解决这个问题,希望有人能帮助我。我有一个运行 Ubuntu 服务器 14.04 的虚拟机,上面安装了 tomcat7(通过 apt-get)。我希望它可以通过我的公共 IP 地址供本地网络外的计算机访问,但目前我无法通过这种方式连接到它。但是,我可以通过 192.168.1.120 在本地网络上连接到它。我的路由器(Western Digital My Net N600)设置为将端口 8080 上的请求转发到保存 tomcat7 的 VM。

在我的虚拟机上,iptables 设置如下:

Chain INPUT (policy ACCEPT)
target     prot opt source          destination
ACCEPT     tcp  --  anywhere        anywhere                 tcp dpt:http-alt

Chain FORWARD (policy ACCEPT)
target     prot opt source          destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source          destination

Tomcat 本身运行良好,当我从 192.168.1.120:8080 访问它时,我可以连接并看到“它工作了!”页面。在谷歌搜索了一些之后,我认为这可能与 tomcat7 使用 IPv6 启动有关,所以我根据答案将其设置为首选 IPv4这里但仍然无法连接。

我有另一项服务(minecraft 服务器),托管在另一台虚拟机上,具有完全相同的路由器/iptable 设置(减去不同的端口号),确实可以工作。我只是不确定为什么 tomcat 不工作。

我尝试了除 8080 之外的其他端口,以防该特定端口号出现问题,但仍然一无所获。我还启动了 8080 端口的 tcpdump,当通过 192.168.1.120 访问时可以看到流量,但通过我的公共 IP 访问时看不到流量。此时,我想我要么忽略了一些非常基本的东西,要么是 tomcat 中的一些设置需要修复/更改,但我毫无头绪。

答案1

我怀疑是网关的端口转发功能不正确。检查网关是否将端口 8080 转发到虚拟机 (192.168.1.120)。我已经多次这样做了,而且一切正常……

在路由器上,使用您的用户名和密码登录到 GUI(admin/password 是默认凭据)

转到高级设置-->附加功能-->端口转发

为规则命名,选择“HTTP”作为应用程序名称,然后将“外部端口范围”设置为 8080。假设您的 tomcat 也在监听端口 8080,请将其设置为“内部端口范围”。下一步是添加服务器 IP 地址,在您的情况下为 192.168.1.120。下一步是启用规则。最后,保存配置并测试连接。

如果你需要带截图的指南,你可以点击这里

相关内容