Wireshark TS | 詭異的光貓網絡問題

前言

來自于朋友分享的一個案例,最后定位的原因是光貓問題,而類似這類的設備所產生的網絡問題,也曾碰到過兩三次,但這一次的數據包現象挺特別,分析思路和過程也有所不同,故記錄分享一下。

問題背景

用戶所反饋的故障現象就是網頁打不開,經過現場工程師的初步排查及整理,反饋如下:

  1. 用戶使用光貓的 Wifi 訪問個別公網域名打不開;
  2. 用戶使用有線網絡訪問沒有問題;
  3. 網絡拓撲示意:筆記本終端 -> 光貓 -> 交換機 -> 互聯網設備;
  4. 其中光貓簡單看成是無線路由器,Wifi+DHCP+Nat;
  5. 捕獲數據包的節點:筆記本終端、光貓出口和互聯網出口

問題分析

筆記本終端

既然是筆記本終端打不開域名的故障現象,那么就可以先從筆記本捕獲數據包開始入手。客戶端 IP 192.168.0.1 和服務器端 IP 222.1.1.1 在標準的 TCP 三次握手和 TLS 握手完成之后,可見正常傳輸了一段時間后出現了大量的異常,通過專家信息統計,也可以看到出現了包括疑似虛假重傳/重傳,以及 Dup ACK 等問題。

直接跳轉至異常處,可以看見從數據包 No.101 開始至最后,連續出現了 TCP Spurious Retransmission + TCP Dup ACK 的問題組合。

實際上有經驗的工程師單從客戶端的捕獲文件,就已經可以初步判斷出現了什么問題,說明如下:

  1. 因為是在客戶端 192.168.0.1 本地抓包,所以從服務器端發給客戶端的數據分段,如果出現 TCP Spurious Retransmission 標識,說明在之前客戶端曾經收到過同樣 Seq Num 的數據分段,并響應了 ACK ,所以當再次收到相同 Seq Num 的數據分段時,會標記成 TCP 虛假重傳(所表達的意思就是:我收到了,也確認過了,但你還發同樣的數據,所以我認為是虛假重傳,我不需要);

  1. 由于客戶端收到了所謂的重復數據分段,因此也不能默默承受不做些什么,所以每收到一個重復數據分段,它就會響應一個 Dup ACK,其中 ACK Num 91925,表明說已經確認收到了 Seq Num 91925 之前的所有數據分段,希望下一次接收 Seq Num 從 91925 開始的數據分段,所以 No.101-106 6 個 TCP 數據分段對應 No.107-112 6 個 TCP Dup ACK,而再往后一樣的重復現象,3 個 TCP 數據分段對應 3 個 TCP Dup ACK;
  2. 但為什么服務器端會一直重傳報文呢?實際上如果能在服務器端上抓包,就會很明顯的發現,在這段異常期間,在服務器端是收不到客戶端所發送的 ACK 數據包,既然服務器端正常發送了數據分段,在超時時間內沒有收到 ACK 確認,因此就會產生重傳。

因此故障的根本原因是客戶端的 ACK 無法傳輸至服務器端,導致服務器端無法正常發送之后的數據,因此反映在客戶端應用現象上,就是打不開訪問的域名。

一般來說類似的問題可能就這樣結束了,因為訪問公網域名走的互聯網環境,很難有中間網絡的權限和排障信息,客戶端發了,服務器端沒收到,丟在中間網絡了,丟在哪,無從得知。但由于現場工程師也同時捕獲了本地其他兩個節點的數據包文件,光貓出口和互聯網出口,因此也就可以繼續分析一波。

互聯網出口

先看互聯網出口數據包文件,客戶端 IP 111.1.1.1(互聯網設備 SNAT)和服務器端 IP 222.1.1.1,仍是在文件最后出現了一堆異常。

根據數據包所顯示的異常現象,結合上述客戶端分析,說明如下:

  1. No.74 為最后一次看到的從客戶端發送給服務器端的 ACK ,其 Seq Num 為 63335;
  2. 服務器端實際所發送的數據分段,其 Seq Num 已經到了 91925;
  3. No.74 客戶端 ACK 正常傳輸到了服務器端,由于沒有包括 SACK 以及 3 個 Dup ACK 的支撐,服務器端一直等到 RTO 超時后,才進行了 No.86 Seq Num 63335 至之后的所有數據分段的超時重傳。

該數據包文件的異常現象,說明在本地的互聯網出口時就已經沒有捕獲到客戶端發給服務器端的 ACK 數據包,ACK 丟失在內部網絡,而不是互聯網,因此繼續研究下一個捕獲節點,光貓出口。

光貓出口

光貓出口數據客戶端 IP 10.1.1.1(光貓 SNAT)和服務器端 IP 222.1.1.1,直奔異常處,可以看到數據包現象與在客戶端上所捕獲的數據包現象基本一致,光貓出口有 ACK,而互聯網出口 無 ACK,初步說明 ACK 丟失在光貓至互聯網出口中間的網絡上。

除了已有的三個數據包文件之外,在沒有其他輸入信息的情況下,需要繼續深入光貓出口數據包文件,找尋下可能的問題原因。

大多數情況下的問題,在數據包上都會或多或少有些跡象。通過觀察服務器端發送數據分段的重傳現象,會發現是從 Seq Num 63335 開始,說明客戶端所響應的 ACK 都沒有正常返回至服務器端,因此可以過濾源 IP 為客戶端 10.1.1.1 的數據包,如下。

可以看到相關的異常數據包現象,說明如下:

  1. 同樣是客戶端源 IP 10.1.1.1 發送的 ACK,但從 No.79 開始,ACK Len 長度由之前的 68 變為了 122,而 TCP Len 均為 0;
  2. 最后一個 Len 為 68 的 ACK 是 No.73,它的 ACK Num 即為 63335,所以之后 Len 為 122 的 ACK 都發生了問題,沒有正常到達服務器端;
  3. 而從 No.107 開始之后的 ACK 數據包,ACK Num 均為 91925,全部標識為 Dup ACK,說明收到了重復的數據分段,也就是上圖中的 No.101 開始的 TCP 虛假重傳數據分段。

TCP Len 為 0 的純 ACK ,為什么整個數據包長度會由 68 變成了 122,通過對比 No.73 和 No.79 兩個 ACK 數據包詳情發現了問題所在,除了正常 ACK 滿足數據幀最小長度 64 字節所填充的 Padding 全 0 數據之外,在 No.79 這個異常 ACK 中又多出現了一段 Trailer 全 0 數據,長度為 54 字節

因此從 No.79 開始所出現的 Len 為 122 的 ACK 異常數據包,也就是被光貓額外填充了 54 字節的全 0 數據,在到達互聯網出口設備的這一段路徑上,發生了丟棄。

問題總結

將這個現象反饋至現場后,進一步排查,發現在光貓至互聯網出口設備之間,還有一個防火墻設備,通過檢查和測試,確認了是防火墻設備的包長度檢測功能阻斷了這些異常 ACK ,至此找到了導致問題發生的根本原因,詭異的光貓,不是嘛 🙄

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913079.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mac mini m4安裝node.js@16以下版本方法

設備:mac mini m4 目的:使用nvm 安裝 node.js14.x 版本 結果:安裝不上 原因:Node.js 14 發布時,Apple Silicon(M1/M2)尚未普及,因此 沒有官方預編譯的 macOS ARM64 版本 處理方案&am…

系統安全設計方案,軟件系統安全設計方案

1.1 總體設計 1.1.1 設計原則 1.2 物理層安全 1.2.1 機房建設安全 1.2.2 電氣安全特性 1.2.3 設備安全 1.2.4 介質安全措施 1.3 網絡層安全 1.3.1 網絡結構安全 1.3.2 劃分子網絡 1.3.3 異常流量管理 1.3.4 網絡安全審計 1.3.5 網絡訪問控制 1.3.6 完整性檢查 1.…

Python入門Day3

Python的基礎數據類型 1.Python中提供了六種內置的數據類型,一般用于存儲數據: –數值Number –字符串String –列表List –元組Tuple –字典Dictionary –集合Set 2.Python中的數據類型可以做以下幾個分類: –有序:可以使用下標…

前端富文本添加錄音功能方案

為富文本編輯器添加錄音功能可以增強內容創作的多樣性。以下是幾種實現方案: 方案一:基于Web Audio API原生實現 實現步驟獲取用戶麥克風權限 navigator.mediaDevices.getUserMedia({ audio: true }).then(stream > { /* 處理音頻流 */ }).catch(err …

解鎖阿里云Hologres:開啟實時數據分析新時代

引言在當今這個數字化浪潮洶涌澎湃的大數據時代,數據就如同企業和組織的 “數字石油”,成為了最具價值的資產之一。隨著信息技術的飛速發展,各行業所產生和收集的數據量正以指數級的速度增長,從社交媒體上的用戶互動信息&#xff…

python學習打卡day59

DAY 59 經典時序預測模型3 知識點回顧: SARIMA模型的參數和用法:SARIMA(p, d, q)(P, D, Q)m模型結果的檢驗可視化(昨天說的是摘要表怎么看,今天是對這個內容可視化)多變量數據的理解:內生變量和外部變量多變…

java中agent的作用

一 java中agent1.1 agent-javaagent 是 Java 虛擬機 (JVM) 提供的一個啟動參數,用于在 Java 程序 main 方法執行之前,加載一個特殊的 Java 代理程序(Java Agent)。它的核心作用是對運行中的 Java 程序進行字節碼層面的動態修改、監…

[C/C++內存安全]_[中級]_[如何避免數組訪問越界]

場景 C/C的標準在C26以前還沒支持內存安全的訪問連續內存的類或特性。在開發分析內存數據或文件數據的程序時,經常需要把一段內存數據復制到另一個堆空間里。 這時目標內存空間由于起始地址的移動,剩余大小的計算錯誤,經常會導致訪問越界錯誤…

rabbitmq 與 Erlang 的版本對照表 win10 安裝方法

win10 64位系統 安裝的版本 otp_win64_27.3.3.exe rabbitmq-server-4.1.1.exe rabbitmq 與 Erlang 的版本對照表 Erlang Version Requirements This guide covers Erlang/OTP version requirements https://www.rabbitmq.com/docs/which-erlang Erlang 28 is not currently…

kali安裝教程

kali教程 我下載的是kali的集成環境,可以直接進行打開,無需進行安裝。 Get Kali | Kali Linux, 官網下載路徑 直接按enter鍵 安裝完成 生成一個小皮安裝鏈接 會給你生成一個外網和內網地址, 可以進行瀏覽 點擊我同意這個協議…

微信小程序入門實例_____快速搭建一個快遞查詢小程序?

🌷🌷之前幾篇博文我們一起開發了天氣查詢、單詞速記和待辦事項小程序,這次我們來對生活中常用的功能 —— 快遞查詢來探索相關的小程序。網購已經成為大家生活的一部分,有了自己的快遞查詢小程序,不用切換多個應用&…

【防火墻基礎之傳統墻到 UTM 到 NGFW 再到 AI 的變化】

防火墻技術演進與未來趨勢:從傳統防御到AI驅動的智能安全 防火墻技術歷經數十年發展,已從早期的簡單包過濾演進為融合AI的智能安全平臺。當前,傳統爬蟲防護技術如頻率限制和人機校驗已無法應對現代攻擊,而全面風控體系通過多維協同…

【仿muduo庫實現并發服務器】Poller模塊

仿muduo庫實現并發服務器 1.Poller模塊成員變量創建epoll模型對于一個描述符添加或修改事件監控對于一個描述符移除事件監控啟動epoll事件監控,獲取所有活躍連接 1.Poller模塊 Poller模塊主要是對任意的描述符進行IO事件監控。 它是對epoll的封裝,可以讓…

小程序學習筆記:使用 MobX 實現全局數據共享,實例創建、計算屬性與 Actions 方法

在小程序開發過程中,組件間的數據共享是一個常見且關鍵的問題。今天,我們就來深入探討一下如何在小程序中實現全局數據共享,借助 MobX 相關的包,讓數據管理變得更加高效便捷。 什么是全局數據共享 全局數據共享,也被…

觀測云 × AWS SSO:權限治理可觀測實踐

AWS IAM Identity Center 介紹 AWS IAM Identity Center(原 AWS Single Sign-On)是 AWS 提供的一項云原生身份與訪問管理(IAM)服務,旨在集中簡化多 AWS 賬戶、多業務應用的安全訪問控制。 觀測云 觀測云是一款專為 …

springboot整合配置swagger3

一. swagger3介紹 Swagger 3 是基于 OpenAPI 規范 3.0 的 API 文檔工具,用于設計、構建和消費 RESTful API。它通過標準化描述 API 的接口、參數、響應等元數據,實現以下核心功能: 自動生成交互式文檔API 測試與調試代碼生成(客…

RabbitMQ 4.1.1初體驗

為什么選擇 RabbitMQ?* RabbitMQ 是一款可靠且成熟的消息代理和流處理中間件,可輕松部署在云端、本地數據中心或您的開發機上,目前已被全球數百萬用戶使用。 優勢在哪里 互操作性 RabbitMQ 支持多種開放標準協議,包括 AMQP 1.0 和…

【精華】QPS限流等場景,Redis其他數據結構優劣勢對比

下面是一個詳細的 Redis 數據結構對比表,比較它們在實現 QPS 限流 / 滑動窗口統計 / 查定比監控等場景中的適用性: ? Redis 數據結構對比表(用于接口限流 / QPS 監控) 維度String INCR 固定窗口List 滑動窗口Hash 計數器ZSet 滑…

頂層設計:支持單元化、灰度化的應用架構

一、頂層目標 業務連續性:任何單元故障不影響整體彈性伸縮:根據業務流量橫向擴展靈活灰度:任何發布都可逐步平滑上線成本可控:單元化帶來的資源冗余最小 二、核心理念 設計目標核心理念單元化垂直拆分,分而治之&…

MacOS Safari 如何打開F12 開發者工具 Developer Tools

背景 If you’re a web develper, the Safari Develop menu provides tools you can use to make sure your website works well with all standards-based web browsers. 解決 If you don’t see the Develop menu in menu bar, Choose Safari > settingsClick Advanced…