ECS 8080端口连接拒绝问题排查

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
简介: 如果遇到ECS部署的web服务无法访问,可以参考这个case进行排查

用户ECS网络设置

_

  • 上图是用户ECS的网络示意图:

    1. ecs处于vpc网络下
    2. ecs加入了一个安全组,该安全组出入方向均开放8080端口
    3. ecs有两个网卡,一个私网主网卡(有虚线的网卡),一个私网normal网卡
    4. ecs绑定了一个EIP(弹性公网IP)实现与公网互通

问题现象

  • 8080端口无法连接

排查过程

  • 首先确认安全组规则中,的确开放了入和出的8080端口,说明安全组配置没有问题:
    vpc_8080

vpc_8080

  **注意:经典网络不允许在安全组规则中设置 0.0.0.0/0 的地址段,vpc网络由于网络之间是隔离的,所以这样设置问题不大。**
AI 代码解读
  • 安全组设置没有问题,那重点怀疑用户的8080监听服务没有启动,用户反馈说本地curl 8080服务能够正确返回,说明服务已经启动. 要求用户反馈8080在监听的截图如下:
    A63EA360BB33B0B4CC58265AF4B06BD4
  • 从上图能够看出用户的web服务被绑定在127.0.0.1的8080端口上了,而这会导致公网无法访问该web服务,解释如下:

    1. 127.0.0.1是一个回送(loopback)地址,指本地机,一般用来测试使用
    2. 127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制,这也是跟localhost重要区别之一,localhost是不走网卡的,因此防火墙设置对localhost是无效的。
    3. 正常的网络包都是从ip层进入链路层,然后发送到网络上,而发向127.0.0.1的包,直接在IP层短路了,也就是发到IP层的包直接被IP层接收了,不再向下发送。这也就决定了web应用绑定在127.0.0.1上是不可能被公网访问到的。
  • 为了印证发向127.0.0.1无法被传输到网络上,可以使用netstat -r命令来看一下本机路由表的设置:
    AC299718E580B0C5D7E9EC55C21BA801

稍微解释一下上面的表格:

  - 第一列:Destination,目标网段或者主机
  - 第二列:Gateway,网关地址,”*” 表示目标是本主机所属的网络,不需要路由
  - 第三列:Flags,标记。一些可能的标记如下:
    - U :路由是活动的
    - H : 目标是一个主机
    - G :路由指向网关
   - R :恢复动态路由产生的表项
    - D :由路由的后台程序动态地安装
    - M :由路由的后台程序修改
    - ! :拒绝路由

  - 第四列:Ref,路由项引用次数
  - 第五列:Use,此路由项被路由软件查找的次数
  - 第六列:Iface,该路由表项对应的输出接口
AI 代码解读

从截图可以看出,目标是127的数据包,网关地址仍然是127,这就印证了127是回送(loopback)地址。

  • 解决方案:

    1. 修改web容器配置,把web应用绑定在ecs主网卡上。ECS bind EIP,实际上相当于EIP与ECS私有主网卡建立了映射关系,因此通过EIP:8080来访问web服务,最终就会*请求到私网主网卡:8080上。
    2. 更好的做法是把web服务绑定在0.0.0.0这个特殊IP上,关于0.0.0.0,这个IP并不是真实存在的,我们ping不通它,它只是一个符号,代表当前设备的IP。绑定在0.0.0.0上后无论是通过127.0.0.1还是本机ip去访问web服务,都是可以的。

总结

  • 127.0.0.1是一个回送(loopback)地址,只能用于本机测试,web应用绑定在127.0.0.1上是不可能被公网访问到的。
  • 把web应用绑定在ECS私网主网卡上就可以实现用EIP从公网来访问web服务,因为EIP与ECS私有主网卡建立了映射关系。
  • 0.0.0.0是个特殊的IP,绑定在0.0.0.0上后无论是通过127.0.0.1还是本机ip去访问web服务,都是可以的。
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
6
7
3
78366
分享
相关文章
用的到linux-tomcat端口占用排查-Day5
通过本文的介绍,详细讲解了在CentOS 8系统上排查和解决Tomcat端口占用问题的方法。从使用 `netstat`、`lsof`和 `ss`命令检查端口占用情况,到使用 `ps`和 `top`命令查找和停止占用端口的进程,再到修改Tomcat端口配置,最后介绍了自动化脚本的方法。希望本文能帮助系统管理员和开发者有效地解决端口占用问题,确保Tomcat服务器的正常运行。
34 11
云服务器常用端口作用
了解云服务器常用端口的作用有助于高效管理资源、快速定位问题及更好地使用云服务。常见端口包括:21(FTP,文件传输)、22(SSH,远程连接Linux)、25(SMTP,发送邮件)、80(HTTP,网页服务)、110/143(POP3/IMAP,接收邮件)、443(HTTPS,加密网页)、1433(SQL Server)、3306(MySQL)、3389(RDP,远程访问Windows桌面)和8080(代理服务)。
51 2
阿里云国际站:阿里云服务器端口配置
悟空云@CloudWuKong阿里云是全球领先的云计算服务提供商,为用户提供弹性计算、数据库、存储、网络安全等一系列云计算服务。在使用阿里云服务器时,合理配置端口非常重要,可以提高服务器安全性和稳定性。
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
本文介绍了如何使用VS Code通过Remote-SSH插件连接远程服务器进行代码开发,并与PyCharm进行了对比。作者认为VS Code在连接和配置多个服务器时更为简单,推荐使用VS Code。文章详细说明了VS Code的安装、远程插件安装、SSH配置文件编写、服务器连接以及如何在连接后切换文件夹。此外,还提供了使用密钥进行免密登录的方法和解决权限问题的步骤。
2755 0
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
969 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
108 3
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?

热门文章

最新文章

相关产品

  • 云服务器 ECS
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等