写点什么

看阿里云操作系统控制台如何一招擒拿网络丢包

  • 2025-07-10
    北京
  • 本文字数:2729 字

    阅读完需:约 9 分钟

大小:1.30M时长:07:33
看阿里云操作系统控制台如何一招擒拿网络丢包

背景


在云计算日益增长与业务大规模上云的背景下,网络的高质量通讯则是维护业务高效运行的重要保障。数据包丢失(Packet Loss)作为现代网络架构中的核心挑战,可能引发多维度的业务风险:在业务部署阶段或运行过程中,丢包现象轻则导致通信中断、数据传输异常,造成业务逻辑执行偏差;重则触发运维系统中的健康检查失败、Ping 不通及拒绝服务等连锁故障。


近期有客户在新区域部署业务集群时遭遇严重网络丢包问题,导致业务部署停滞并产生持续性成本消耗。这个问题直接导致了客户的生产部署停滞,那这么严重的问题难道需要很多时间和精力来排查吗?并不!在使用了阿里云操作系统控制台(https://alinux.console.aliyun.com/)(简称“操作系统控制台”)后,客户快速定位问题,不仅成功完成业务部署并实现稳定运行,更有效遏制了持续性成本消耗。

下面,我们将结合实际案例,来介绍如何使用操作系统控制台的丢包诊断解决丢包问题。

通过丢包诊断分析定位问题根因


场景一:问题快速定界


某消息服务客户在阿里云 ACK(阿里云 Kubernetes 服务)新区域部署集群时遭遇系统性健康检查异常,导致业务部署流程全面受阻。因此,需要排查健康检查失败的原因。


结合以往运维经验来看,大部分情况下在检查了 iptable 没有问题以后,基本上都会怀疑到内核丢包上面去。如果要排查内核丢包问题,过程比较繁琐且困难。因为在排查内核丢包问题的时候,需要排查人员对数据包在内核代码比较熟悉,对数据流经的合适函数入口结合 hook 点来监控数据包流向。整个过程无论是对排查人员的专业程度还是所需时间,都提出了不小的要求。


在这个案例中,我们是如何结合操作系统控制台快速定位问题的呢?


首先,我们来看下这个地域中的机器情况:如下图所示,ECS 作为 ACK Pod 的主机,前端有一个 SLB。

我们直接在 ECS 上对 eth0 网卡进行 tcpdump 抓包。从下面的抓包结果来看,source 是 SLB 的健康检查网段,此时 SLB 正不断向本机器发送 SYN 包来请求连接。但是本机并没有返回 ACK 包,导致了健康检查失败了。那好好的为什么我们的机器没有返回 ACK 包呢?


iptable 规则导致?


根据一般排查思路,首先,我们会怀疑是不是 iptable 的规则设定导致了某些请求被拦截。但是我们确认了正常的机器以及异常的机器后发现,iptable 并没有变化,因此 iptable 的规则导致的问题这个怀疑点可以排除。


内核丢包?


如果要排查内核丢包问题,以前我们也许需要熟悉网络内核模块的专家进行跟踪分析。但是现在,我们只需要动动手指,使用阿里云操作系统控制台,这位“专家”就能在很短的时间内,完成以往需要专业的人士才能完成的事情。


使用操作系统控制台对问题实例进行诊断:



如图上所示,在系统诊断中选择网络诊断、丢包诊断,然后根据第 4 步选择你所需要诊断的实例 ID,最后点击执行诊断。诊断完成以后,点击查看报告,可以看到机器中的丢包情况。



结果见上图,可以看到操作系统控制台的报告中显示无已知丢包异常。因此,我们基本排除了内核丢包情况。


既不是 iptable 规则,也不是内核丢包,还有什么可能呢?


结合操作系统控制台的诊断报告,现在基本可以确认了内核并没有出现丢包,成功排除了底层协议栈的潜在风险。 我们进一步分析发现,eth0 接口成功接收 SYN 包表明网络链路未发生数据丢弃,iptables 规则无异常则证实非配置规则所致。 经过上述排查环节后,我们意识到仍存在被忽视的排查维度——网络驱动或中间件模块可能存在异常。基于这一假设,我们把系统中的钩子打印出来看下:



上图可以发现,与正常机器对比,这里多了很多 sched_cls 类型的钩子。在与 ACK 研发团队确认后,得知此为一个网络组件的钩子。由于我们高度怀疑是该组件打上的钩子导致 SYN 被过滤掉了。因此,该组件卸载掉后,健康检查立马恢复了正常。



可以看到,在操作系统控制台的帮助下,我们非常快速对问题进行了初步定界,排除了内核丢包的嫌疑,从而能够更快地把目光放在其他方向的排查上,为解决问题节省了更多的时间。


精准抓出问题所在


某客户在新创建了实例以后,发现通过 telnet 1678 端口不通,对其业务有重要影响。该端口不通会导致其业务进程无法正常与外界通信。


本案例与上述案例有点类似,也是网络不通的情况。在面对网络不通的情况时,首先我们要做的就是对端口或者网卡进行抓包,接下来看下该端口或者网卡的数据包流情况。


客户在其机器上执行 telnet 程序,发现 telnet 机器的 22 端口是通的,但是 1678 端口以及其他端口不通。此外,检查了端口以及对应端口的监听进程都运行起来了,没有问题。


祭出我们的一般排查思路,是不是 iptable 的规则问题?先去检查一下 iptable 的设置。在客户的配合下,确认了这台机器上的 iptable 没有明显的问题,也没有设置特殊的规则。


既然不是 iptable 的问题,那么结合上一个案例的经验,是不是一些驱动的钩子导致的问题?接着我们检查了一下安全组件,没有安装额外的安全软件,而且也没有发现异常的函数钩子。因此,也不是钩子导致的问题。


既然钩子没有问题、iptable 也没有问题。那会不会是内核丢包了?有了这个怀疑,我们就可以使用操作系统控制台对异常实例进行诊断:



很快,诊断完成后,我们查看诊断的报告。



在这个报告中,诊断提示我们需要删除 iptable 丢包规则或者相关的 netfilter 驱动。结论也很明显,就是告诉我们是 netfilter 导致的丢包。既然是 netfilter 导致的丢包,那首先就要看下 nftable 的规则设置:



通过查看 nftable 规则设置,发现了 nft 中确实有对 1678 端口的 drop 规则。



删除对应规则并更新以后本机上监听 1678 端口,发现通了,可以连接上了,问题解决。


总结


在日常的系统运维中,丢包问题会导致业务通信丢失、业务无法正常运行乃至无法部署。但是丢包问题也不是完全令人望而却步的问题,阿里云操作系统控制台提供了简单、易用、专业的诊断工具。在怀疑系统存在丢包问题的时候,我们可以结合操作系统控制台按照一下步骤进行排查:


1、直接使用操作系统控制台的丢包诊断,看下诊断是否告知明确问题点。

2、如果诊断报告中没有显示内核出现了丢包,那就检查系统中是否有安装多余的安全软件,或者对比正常的环境下有没有多余的钩子。

3、没有预期外驱动或者钩子,检查 iptable 是否正确。

4、如果还是不能明确出丢包点,可以使用 funcgraph 或者 bpf 等工具对怀疑的丢包路径打点抓包,找出丢包的地方。

一般结合操作系统控制台,经过以上四个步骤,一般的丢包问题你们都能搞定,把丢包问题轻松解决~


  • 联系我们:您在使用操作系统控制台的过程中,有任何疑问和建议,可以搜索群号:94405014449 加入钉钉群反馈,欢迎大家扫码加入交流。

  • 问卷填写:欢迎填写控制台问卷,您的宝贵建议对我们非常重要。如有建议被采纳,我们将赠送一份礼品:https://survey.aliyun.com/apps/zhiliao/Ozqy9cPu5

2025-07-10 14:249900

评论

发布
暂无评论

Elasticsearch 常见 Query 搜索

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

实战 LeetCode 15.三数之和、18.四数之和,并扩展至 N 数之和

与你一起学算法

LeetCode 第 46 场双周赛题解

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

canvas从入门到猪头

执鸢者

大前端 canvas

第7周课后练习-性能优化一

潘涛

架构师训练营 4 期

架构师训练营第七周作业 - 学习总结

阿德儿

区块链技术的价值传递

CECBC

这些面试题你会吗?月薪20k+的Android面试都问些什么?面试必问

欢喜学安卓

android 程序员 面试 移动开发

堆栈与队列学习总结

Nick

数据结构 算法 堆栈 队列

架构师训练营第十二周作业

zamkai

个人职业规划和定位

张老蔫

28天写作

不负责预测:2021手机市场的“雄起”错觉

脑极体

LeetCode题解:198. 打家劫舍,动态规划(缓存偷盗状态),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

dubbo源码v2.7分析:结构、container入口及线程模型

程序员架构进阶

微服务 七日更 28天写作 2月春节不断更 dubbo源码

新作者 新入驻 新征程

InfoQ写作社区官方

写作平台 新人 热门活动

GitHub访问破百万!字节2021年Java程序员面试指导已疯传

比伯

Java 编程 程序员 架构 面试

聊聊2021年区块链的发展趋势

CECBC

比特币

诊所数字化:私域运营的本质

boshi

数字化转型 医疗 私域运营 七日更 28天写作

Selenium 与 Python 之间如何才能交融在一起

梦想橡皮擦

Python 28天写作 2月春节不断更

week13-conclusion

J

使用 Tye 辅助开发 k8s 应用竟如此简单(四)

newbe36524

.net Docker Kubernetes .net core dotnet

1.0 Go语言从入门到精通:Go语言介绍

xcbeyond

28天写作 Go 语言

语音聊天室申请上麦的用例文档

郭郭

week13-homework

J

Scrum Patterns:团队('Pigs')的估算(译)

Bruce Talk

敏捷开发 译文 Agile Scrum Patterns

设计模式简介

happlyfox

设计模式 28天写作

这些面试题你会吗?双非本科字节跳动Android面试题分享,大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

区块链处在中国市场的风口 既是机遇 也是挑战

CECBC

区块链

软件架构-事件驱动架构

看山

架构 事件驱动架构

【LeetCode】绝对差不超过限制的最长连续子数组Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

架构师训练营 4 期 第8周

引花眠

架构师训练营 4 期

看阿里云操作系统控制台如何一招擒拿网络丢包_阿里巴巴_张永德_InfoQ精选文章