ECS 8080端口连接拒绝问题排查-阿里云开发者社区

开发者社区> 菠萝先森> 正文

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

简介: 如果遇到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网络由于网络之间是隔离的,所以这样设置问题不大。**
  • 安全组设置没有问题,那重点怀疑用户的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,该路由表项对应的输出接口

从截图可以看出,目标是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服务,都是可以的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9116 0
windows 2003 server 记录远程桌面的连接登录日志和修改3389连接端口方法
http://hi.baidu.com/cpucn/blog/item/f14f58db40654c6fd1164e42.html   A。
861 0
ECS服务器CPU使用率异常100%问题排查
服务器会莫名其妙的出现CPU使用率100%,且top、htop等一些命令,无法查询到消耗CPU的进程,陷入排查困境怎么办?
14240 0
接口测试从未如此简单 - Postman (Chrome插件)
原文:接口测试从未如此简单 - Postman (Chrome插件) 接口测试从未如此简单 - Postman (Chrome插件)  一个非常有力的Http Client工具用来测试Web服务的, 我这里来介绍如何用它测试restful web service 注:转载请注明出处    安...
1147 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10734 0
windows统计端口连接数
netstat -na -p tcp| findstr 80 | find /C "ESTABLISH" netstat -an -p tcp | find "127.0.0.1" | find /c "2112" netstat -an |find /c ":80"
870 0
新浪微博Python客户端接口OAuth2
Keyword: Python Oauth2 微博 sina weibo   #!/usr/bin/env python # -*- coding: utf-8 -*- __version__ = '1.
1039 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12817 0
2020最新 阿里云ECS的CPU100%排查
初创公司,架构lanmp,web前端和后端分开服务器,业务驱动主要是nginx和apache,nginx主要是处理静态文件和反向代理,前后端、搜索引擎、缓存、队列等附加的服务都是用docker容器部署。
401 0
+关注
7
文章
4
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载