当前位置: 首页 > news >正文

【中标麒麟服务器操作系统实例分享】java应用DNS解析异常分析及处理

了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

文档中心:https://document.kylinos.cn


情况描述

中标麒麟服务器操作系统V7运行在 ARM虚拟机上java业务解析存储域名,出现偶发性失败。

情况分析

业务模型及抓包分析

通过和应用研发人员沟通确认域名解析的接口为java标准库提供的InteAddress.getAllByName()函数,用于获取与一个域名相关的所有IP地址。同时支持IPV4和IPV6地址解析。

dns报文格式如下:

dns请求报文

dns响应报文

DNS的报文格式。其中,事务 ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这6个字段是DNS的报文首部,共12个字节。整个DNS报文格式主要分为3部分内容,即基础结构部分、问题部分、资源记录部分。

事务ID:DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。

标志Flags:DNS 报文中的标志字段。

问题计数:DNS 查询请求的数目。

回答资源记录数:DNS 响应的数目。

权威名称服务器计数:权威名称服务器的数目。

附加资源记录数:额外的记录数目(权威名称服务器对应 IP 地址的数目)。

同时根据现有抓包信息:

解析异常时间点,ipv4和ipv6 dns请求报文的事务ID一致,且先回复了ipv6的结果,同时状态为“拒绝”即reply code为5。

所以此处怀疑事务ID冲突是导致解析异常的直接原因,怀疑底层存在事务ID初始化非原子性的情况。

后续验证及代码分析

为排除应用层代码逻辑的影响,编写对应测试程序调用InteAddress.getAllByName()解析存储端域名,经过4天测试复现问题。

对应复现的抓包信息:

关于DNS报文头部的初始化逻辑在底层glibc的reslov相关基础库中。初始化代码如下:

对比glibc-2.17和glibc-2.28版本此处算法及初始化逻辑并无变化。随后追溯2.17及之后相关小版本的补丁,确认Redhat7.9中遇到相关并行DNS请求ID冲突的问题,导致解析超时或失败的情况,详见https://bugzilla.redhat.com/show_bug.cgi?id=2065058。

    该补丁修复并不是针对并行初始化ID时原子锁缺失的场景,而是增加相关逻辑处理ID重复且可能有效的DNS响应报文。

相关补丁代码如下:

分析结论及升级方案

分析结论

并行DNS请求时可能存在事务ID一致的情况,原始glibc相关函数(res_send)只会处理第一个响应报文,忽略第二个报文,可能导致真实的解析结果丢失,最终解析超时或者失败。

高版本glibc-2.17-326通过增加相关逻辑处理同ID的第二个响应报文,修复该问题。

升级方案

中标麒麟操作系统v7.6当前最新版本为glibc-2.17-326.el7.ns7.02,该版本除修复了dns解析相关问题,同时优化解决timezone以及GB18030字符集的问题,所有补丁和红帽7系列对齐,经过严格测试后入库,升级不会影响当前系统稳定性。

具体升级方案:

rpm -Uvh glibc*.rpm nscd*.rpm

升级完成后需重启系统。

以下为测试环境升级结果:

相关文章:

【中标麒麟服务器操作系统实例分享】java应用DNS解析异常分析及处理

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 情况描述 中标麒麟服务器操作系统V7运行在 ARM…...

网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析

国内外要闻 Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析 在网络安全的复杂战场中,近期出现了一个值得关注的动态:名为 Rockstar 2FA 的钓鱼即服务(PhaaS)工具包遭遇变故,意外推动了另一个新生服务 Flo…...

玩转OCR | 探索腾讯云智能结构化识别新境界

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 玩转OCR 腾讯云智能结构化识别产品介绍服务应用产品特征行业案例总结 腾讯云智能结构化识别 腾讯云智能结构化OCR产品分为基础版与高级版&am…...

idea2024创建JavaWeb项目以及配置Tomcat详解

今天呢,博主的学习进度也是步入了JavaWeb,目前正在逐步杨帆旗航,迎接全新的狂潮海浪。 那么接下来就给大家出一期有关JavaWeb的配置教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正…...

外连接转AntiJoin的应用场景与限制条件 | OceanBase SQL 查询改写系列

在《SQL 改写系列:外连接转内连接的常见场景与错误》一文中,我们了解到谓词条件可以过滤掉连接结果中的 null 情形的,将外连接转化为内连接的做法是可行的,正如图1中路径(a)所示。此时,敏锐的你或许会进一步思考&#…...

华为实训课笔记 2024 1223-1224

华为实训 12/2312/24 12/23 [Huawei]stp enable --开启STP display stp brief --查询STP MSTID Port Role STP State Protection 实例ID 端口 端口角色 端口状态 是否开启保护[Huawei]display stp vlan xxxx --查询制定vlan的生成树计算结…...

MySQL超详细安装配置教程(亲测有效)

目录 1.下载mysql 2.环境配置 3.安装mysql ​4.navicat工具下载与连接 ​5总结 1.下载mysql mysql下载--MySQL :: 下载 MySQL 社区服务器 下载的时候这里直接逃过就行 我这里的版本是最新的mysql8.0.37 下载完成之后,将压缩包进行解压 这里我建议大…...

MySQL 8.0:explain analyze 分析 SQL 执行过程

介绍 MySQL 8.0.16 引入一个实验特性:explain formattree ,树状的输出执行过程,以及预估成本和预估返 回行数。在 MySQL 8.0.18 又引入了 EXPLAIN ANALYZE,在 formattree 基础上,使用时,会执行 SQL &#…...

信管通低代码信息管理系统应用平台

目前,国家统一要求事业单位的电脑都要进行国产化替代,替代后使用的操作系统都是基于linux的,所有以前在WINDOWS下运行的系统都不能使用了,再者,各单位的软件都很零散,没有统一起来。需要把日常办公相关的软…...

git推送本地仓库到远程(Gitee)

目录 一、注册创建库 二、创建仓库 三、推送本地仓库到远程 1.修改本地仓库用户名和邮箱 2.本地库关联远程仓库 3.拉取远程仓库的文件 4.推送本地库的文件 5.查看远程仓库 四、远程分支查看 1.查看远程分支 2.修改test.txt文件 一、注册创建库 Gitee官网&#xff1…...

【C++语言】多态

一、多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某种行为,当不同的对象去完成时会产生出不同的状态。 我们可以举一个例子: 比如买票这种行为,当普通人买票时,是全价买票&am…...

ThinkPHP 吸收了Java Spring框架一些特性

ThinkPHP 吸收了Java Spring框架一些特性,下面介绍如下: 1、controller 控制器层 存放控制器层的文件,用于处理请求和响应 2、model 实体类 存放实体类的文件,用于定义数据模型 3、dao DAO层 存放DAO(数据访问…...

自动控制系统综合与LabVIEW实现

自动控制系统综合是为了优化系统性能,确保其可靠性、稳定性和灵活性。常用方法包括动态性能优化、稳态误差分析、鲁棒性设计等。结合LabVIEW,可以通过图形化编程、高效数据采集与处理来实现系统综合。本文将阐述具体方法,并结合硬件选型提供实…...

记录一个SVR学习

1、为什么使用jupter来做数据预测?而不是传统pycharm编辑器 1、Jupyter Notebook 通过anaconda统一管理环境,可以运行python、R、Sql等数据分析常用语言。 2、做到交互式运行,可以逐步运行代码块,实时查看结果,便于调…...

Java内存区域进一步详解

方法区 方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个线程共享的内存区域。 《Java 虚拟机规范》只是规定了有方法区这么个概念和它的作用,方法区到底要如何实现那就是虚拟机自己要考虑的事情了。也就是说,在不同的虚拟机实现上&am…...

SpiderFlow平台v0.5.0流程的执行过程

流程执行过程: 1. 流程启动 流程的执行通常从一个 开始节点 开始,该节点是整个爬虫任务的起点。开始节点没有实际的功能作用,主要作用是标记流程的起始。 执行顺序:在执行过程中,系统按照流程中的连接线顺序依次执行…...

利用.NET Upgrade Assitant对项目进行升级

本教程演示如何把WPF程序从 <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>升级到<TargetFramework>net8.0-windows</TargetFramework>. 下载并安装.NET Upgrade Assistant - Visual Studio Marketplace Supported .NET upgrades: .NET Frame…...

JAVA开发Erp时日志报错:SQL 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘***‘ 中的标识列插入显式值

错误提示 ### SQL: INSERT INTO sys_user ( user_id, username, password, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ? ) ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时&…...

[计算机网络]ARP协议的故事:小明找小红的奇妙旅程

1.ARP小故事 在一个繁忙的网络世界中&#xff0c;每个设备都有自己的身份标识——MAC地址&#xff0c;就像每个人的身份证号码一样。在这个故事里&#xff0c;我们的主角小明&#xff08;主机&#xff09;需要找到小红&#xff08;目标主机&#xff09;的MAC地址&#xff0c;才…...

数学竞赛网站:构建互动学习的网络平台

2.1 MYSQL数据库 题目确定了是一个应用程序之后&#xff0c;就开始按部就班的进行设计与分析。本课题是需要数据库作为数据管理工具以及数据载体&#xff0c;从程序功能分析到数据分析&#xff0c;选择合适的关系型数据库是当下所选择的重要环节。关系型数据库可选择余地不多&a…...

WarcraftHelper完整指南:5步让魔兽争霸III在现代电脑上完美运行

WarcraftHelper完整指南&#xff1a;5步让魔兽争霸III在现代电脑上完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸III是一款经典的游…...

解决Bootstrap项目中日期时间选择难题:bootstrap-datetimepicker深度集成指南

解决Bootstrap项目中日期时间选择难题&#xff1a;bootstrap-datetimepicker深度集成指南 【免费下载链接】bootstrap-datetimepicker 项目地址: https://gitcode.com/gh_mirrors/boo/bootstrap-datetimepicker 在Bootstrap项目开发中&#xff0c;日期时间选择器是表单…...

终极任务栏分组工具:5分钟掌握桌面高效管理

终极任务栏分组工具&#xff1a;5分钟掌握桌面高效管理 【免费下载链接】taskbar-groups Lightweight utility for organizing the taskbar through groups 项目地址: https://gitcode.com/gh_mirrors/ta/taskbar-groups Taskbar Groups 是一款轻量级的任务栏分组管理工…...

Translumo:高效免费的屏幕实时翻译工具,打破语言障碍的实用指南

Translumo&#xff1a;高效免费的屏幕实时翻译工具&#xff0c;打破语言障碍的实用指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Tr…...

用OllyDbg和Cheat Engine“透视”Windows扫雷:从内存布局到游戏修改的完整实战

逆向工程实战&#xff1a;用OllyDbg和Cheat Engine解密Windows扫雷 当经典扫雷游戏遇上逆向工程工具&#xff0c;一场关于内存布局与程序逻辑的侦探游戏就此展开。本文将带你从零开始&#xff0c;通过OllyDbg和Cheat Engine这两款神器&#xff0c;逐步揭开扫雷程序背后的数据结…...

CKA-2026-resources

您管理一个 WordPress 应用程序。由于资源请求过高&#xff0c;某些 Pod 无法启动。Taskrelative-fawn namespace 中的 WordPress 应用程序包含&#xff1a;l具有 3 个副本的 WordPress Deployment按如下方式调整所有 Pod 资源请求&#xff1a;l将节点资源平均分配给这 3 个 Po…...

2026年SCI三四区AI率超30%怎么办?3招搞定不影响学术表达

SCI三四区的AI率要求通常在20%-30%之间&#xff0c;但实际情况是有些编辑系统比这个还严&#xff0c;退稿理由直接写「AI content detected」。 这篇是给有这个问题的科研人写的。不绕弯子&#xff0c;直接说3个有效的方法&#xff0c;帮你把AI率降到合规范围&#xff0c;同时…...

电商客服+导购智能体的设计与开发投

这个代码的核心功能是&#xff1a;基于输入词的长度动态选择反义词示例&#xff0c;并调用大模型生成反义词&#xff0c;体现了 “动态少样本提示&#xff08;Dynamic Few-Shot Prompting&#xff09;” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

深入理解 V8 引擎:C++ 与 JavaScript 的跨界传送门

在进行 Chromium 浏览器内核开发的日常中&#xff0c;我们经常需要追踪一段 JavaScript 代码是如何被浏览器执行的&#xff0c;或者一个扩展 API&#xff08;如 chrome.tabs.query 或 chrome.account.login&#xff09;是如何从 JS 穿透到 C 底层的。 当我们顺着 Blink 的 HTM…...

雪女-斗罗大陆-造相Z-Turbo在元宇宙中的应用:为用户虚拟化身生成个性化动漫形象

雪女-斗罗大陆-造相Z-Turbo在元宇宙中的应用&#xff1a;为用户虚拟化身生成个性化动漫形象 想象一下&#xff0c;你正准备进入一个热闹的虚拟世界&#xff0c;参加一场线上聚会。别人都顶着一个系统默认的、千篇一律的方块人形象&#xff0c;而你&#xff0c;却拥有一个完全根…...