【計算機網絡】DNS 解析 DNS 污染

1. DNS 解析(工作流程、參與方與緩存)

DNS 的目標:把人類可讀的域名(如 www.example.com)映射為 IP 地址(如 93.184.216.34)。

典型解析流程(遞歸解析器 + 迭代查詢):

  1. 客戶端(stub resolver):瀏覽器/操作系統發起 DNS 查詢,通常詢問配置的遞歸解析器(resolver,如 ISP 提供或 8.8.8.8)。

  2. 遞歸解析器:如果緩存命中就直接返回;否則它會代替客戶端向上級 DNS 進行查詢(Root → TLD → 權威):

    • 詢問 根服務器.)得到對應頂級域(TLD,如 .com)的 NS 列表。
    • 詢問 TLD 服務器 得到目標域名的權威服務器(Authoritative Name Server)。
    • 詢問 權威服務器 獲取真實記錄(A/AAAA/CNAME 等)。
  3. 遞歸解析器 返回結果給客戶端,并把結果緩存(受 TTL 限制)。

關鍵名詞:

  • 權威(Authoritative)服務器:負責某個域名的真實 DNS 記錄(由域名持有者或 DNS 提供商托管)。
  • 遞歸解析器(Resolver):為客戶端完成上面整個查詢流程的服務器(通常由 ISP、企業或公共 DNS 提供)。
  • Stub resolver:客戶端一側的輕量解析組件(操作系統/瀏覽器)。
  • TTL:記錄在解析器緩存中的存活時間。

2. DNS 污染 / 中毒:概念與類型

DNS 污染/中毒(DNS poisoning) 是指 DNS 響應被篡改或劫持,導致客戶端獲得錯誤的 IP,常見后果是訪問錯誤或被引導到惡意站點。

常見類型與成因:

  1. DNS 緩存中毒(Cache poisoning)

    • 攻擊者向遞歸解析器注入偽造的響應(例如偽造 A 記錄或 NS 記錄),導致解析器緩存錯誤數據,從而把多個用戶引導到惡意 IP。
    • 經典手段:偽造事務 ID、源端口等,使得偽造響應被接受。現代 DNS/操作系統通過隨機端口等減小風險,但并非萬無一失。
  2. 劫持/篡改(Hijacking)

    • ISP 或中間網絡設備基于策略或商業目的修改解析結果(例如將無法解析的查詢指向運營商廣告頁或攔截)。
    • 國家級審查(DNS 污染/污染返回錯誤 IP 或 NXDOMAIN/截斷)也屬于這一類。
  3. 中間人攻擊(Man-in-the-Middle)

    • 攻擊者在通信鏈路中攔截并修改 DNS 請求或響應(在未加密的情況下可行),常見于局域網或被劫持的 DNS 服務器。
  4. 域名劫持 / 域名解析權更改

    • 域名注冊信息被篡改,修改了域名的權威服務器或 A 記錄,這屬于對域名注冊/托管的直接攻擊或濫用。

3. DNS 污染會帶來哪些風險/危害?

  • 釣魚/流量劫持:把合法域名解析到惡意服務器,竊取憑證或注入惡意內容。
  • 隱私泄露:用戶被重定向到被監控的節點。
  • 可用性損失:合法服務不可達(被解析到虛假 IP 或 NXDOMAIN)。
  • 流量攔截/廣告注入:ISP 或中間人通過修改解析插入廣告或提示頁。
  • 信任破壞:如果 DNSSEC 被繞過或未啟用,客戶端無法驗證響應真實性。

4. 如何檢測 / 鑒別是否被污染

快速診斷步驟(用戶側)

  1. 對比多個解析器的結果

    dig +short example.com @8.8.8.8
    dig +short example.com @1.1.1.1
    dig +short example.com @本地遞歸解析器
    

    如果不同解析器返回不同 IP(且權威服務器并非變化),說明可能被污染或本地 resolver 緩存有問題。

  2. 追蹤權威來源

    dig +trace example.com
    

    +trace 會顯示從根、TLD 到權威服務器的逐步結果,便于定位哪個層級返回了錯誤結果。

  3. 查詢權威服務器:直接向域的權威服務器查詢:

    dig @ns1.example-authoritative.com example.com A
    

    若權威服務器給出正確值,但遞歸解析器給出錯誤值,很可能是遞歸解析器被中毒。

  4. 查看本機緩存

    • Windows: ipconfig /displaydns,清空緩存 ipconfig /flushdns
    • macOS: sudo killall -HUP mDNSResponder(不同系統命令略有差異)。
  5. 檢查 DNSSEC:如果域名啟用了 DNSSEC,使用 +dnssecdig 輸出檢查 RRSIG/AD 標志,或使用 delv 等工具驗證簽名是否有效。DNSSEC 能檢測劫持(若驗證失敗即可發現篡改)。

  6. 判斷是 ISP 層面還是本地問題:在同一網絡下,用手機切換到蜂窩網絡或使用 VPN,再次查詢;若換網絡未重現問題,則可能是本地或本 ISP 的污染。


5. 如何緩解與防護(用戶 & 運維/服務方)

用戶端(普通用戶/客戶端)

  • 使用可信公共解析器:如 Google (8.8.8.8 / 8.8.4.4)、Cloudflare (1.1.1.1)、Quad9(9.9.9.9)。注意某些 ISP 會攔截/劫持 DNS,即使設置了 DNS 也可能被重寫。

  • 啟用加密 DNS:DNS over HTTPS (DoH) 或 DNS over TLS (DoT),可防止中間人篡改:

    • 瀏覽器層:Firefox/Chrome 支持 DoH。
    • 系統/路由器:使用支持 DoT/DoH 的解析器或本地代理(例如 Cloudflared、stubby)。
  • 使用 VPN:將 DNS 解析通過 VPN 隧道走,可以繞過本地 ISP 的污染(但要信任 VPN 提供商)。

  • DNSSEC 驗證客戶端:部分系統/解析器可以啟用本地 DNSSEC 驗證(比如 unbound 可以啟用嚴格驗證),能檢測到被篡改的響應。

  • 定期清緩存:遇到解析問題時清空本機 DNS 緩存。

遞歸解析器 / ISP(運維側)

  • 啟用 DNSSEC 驗證:在遞歸解析器(如 unboundbindknot-resolver)上啟用 DNSSEC 驗證,拒絕或標記不合法簽名的響應。
  • 使用隨機源端口與事務 ID:現代解析器默認啟用,提高偽造響應難度。
  • 限制遞歸對外開放(防止被濫用):禁用開放遞歸或限制訪問白名單。
  • 實現速率限制 / 反放大 / 抗緩存中毒策略:防止針對大規模偽造響應的攻擊。
  • 監控與告警:監控異常解析結果、TTL 突變、權威 NS 變化等,及時告警。
  • 限制區域傳送(AXFR)和使用 TSIG:保護權威服務器數據。
  • 定期打補丁:修補已知的 DNS 軟件漏洞(比如某些 DNS 服務器歷史漏洞可被利用做緩存中毒)。

權威域名持有者

  • 啟用 DNSSEC 并正確簽名區域:讓下游解析器/用戶進行驗證。
  • 控制 NS/Registrar 安全:使用 registrar 的安全功能(鎖定轉移、強認證)。
  • 限制對 AXFR 的訪問并保護管理接口

6. 區分“DNS 污染”與“DNS 污染 / 劫持”的實際示例

  • ISP “污染/重定向”:當查詢無法解析或為某些敏感域名時,ISP 返回錯誤 IP(運營商提示頁或黑洞 IP)。這是有意為之,目的可能是審查或廣告。
  • 真實的緩存中毒攻擊:攻擊者利用解析器漏洞或網絡中間節點注入錯誤響應,使大量用戶解析到惡意網站。
  • DNSSEC 可檢測場景:若權威域啟用了 DNSSEC,遞歸解析器在收到偽造響應時會驗證失敗(如果解析器開啟 DNSSEC 驗證),從而拒絕返回給客戶端—這能顯著降低緩存中毒成功率。

7. 常用工具(命令行)用于排查與診斷

  • dig(Linux/macOS):

    • dig +trace example.com(追蹤解析鏈路)
    • dig @8.8.8.8 example.com A(向指定解析器查詢)
    • dig example.com +dnssec(檢查 DNSSEC)
  • nslookup(Windows/跨平臺)

  • delv(用于 DNSSEC 驗證)

  • Get-Command / ipconfig /displaydns / ipconfig /flushdns(Windows)

  • tcpdump / wireshark:抓包分析 DNS 流量,觀察是否有偽造響應或中間人篡改。

  • unbound-control(若用 unbound),rndc(BIND)等解析器管理工具。


8. 總結

  • 解析流程:客戶端 → 遞歸解析器 → 根 → TLD → 權威 → 緩存 → 返回。
  • 緩存中毒:攻擊者注入偽造響應到遞歸解析器緩存,從而影響大量用戶。
  • 污染后果:釣魚、隱私泄露、可用性下降。
  • 檢測方法:對比多個解析器、dig +trace、查詢權威服務器、檢查 DNSSEC。
  • 防護:DNSSEC、DoH/DoT、使用可信解析器、遞歸解析器加固、權限與速率限制、監控告警。

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

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

相關文章

用住宿樓模型徹底理解Kubernetes架構(運行原理視角)

導讀:從樓宇建設到租客入住的全流程想象我們正在建設一棟巨型智能住宿樓,從基礎設施搭建到租客入住管理,每個環節都對應Kubernetes的組件和概念。本文將按運行原理的先后順序,系統解析Kubernetes的23個核心組件與基本概念。把 Kub…

嘉銀科技基于阿里云 Kafka Serverless 提升業務彈性能力,節省成本超過 20%

作者:四牛 前言 云消息隊列 Kafka 版 Serverless 系列憑借其秒級彈性擴展、按需付費、輕運維的優勢,助力嘉銀科技業務系統實現靈活擴縮容,在業務效率和成本優化上持續取得突破,保證服務的敏捷性和穩定性,并節省超過 20…

RTOS 任務狀態與調度機制詳解

一、任務狀態概述在實時操作系統(RTOS)中,任務通常具有以下幾種基本狀態:Running(運行態):任務正在 CPU 上實際執行。單核系統中同一時刻最多只有一個任務處于運行態。Ready(就緒態&…

TDengine 特殊選擇函數 UNIQUE 用戶手冊

UNIQUE 函數用戶手冊 函數定義 UNIQUE(expr)功能說明 UNIQUE() 函數返回指定列去重后的值,功能類似于 SQL 中的 DISTINCT 關鍵字。對于相同的數據值,UNIQUE 函數會返回時間戳最小的那一條記錄。該函數會跳過 NULL 值。 版本要求 最低版本: v3.0.0.0…

新零售第一階段傳統零售商的困境突破與二次增長路徑:基于定制開發開源AI智能名片S2B2C商城小程序的實踐探索

摘要:新零售第一階段,傳統零售商面臨同質化競爭、用戶消費意愿低迷、線上電商分流等核心困境。本文以定制開發開源AI智能名片S2B2C商城小程序為切入點,結合阿里巴巴、某知名連鎖零售企業等實踐案例,分析其通過“AI智能推薦供應鏈協…

Spark SQL 之 Join Reorder

參考鏈接 https://www.cnblogs.com/fxjwind/p/14768975.html join Reorder src/main/scala/org/apache/spark/sql/catalyst/optimizer/CostBasedJoinReorder.scala private def reorder(plan: LogicalPlan, output: Seq[Attribute]): LogicalPlan = {<

牛客周賽 Round 109

比賽鏈接&#xff1a;牛客競賽_ACM/NOI/CSP/CCPC/ICPC算法編程高難度練習賽_牛客競賽OJ A-小紅的直角三角形_牛客周賽 Round 109 簽到題&#xff1a;用勾股定理即可通過此題&#xff08;需要注意對共線情況的判斷&#xff09; 代碼&#xff1a; // Problem: 小紅的直角三角…

[deepseek]LNK2001錯誤即單獨編譯匯編并鏈接

方案一&#xff1a;使用預編譯的 .obj 文件&#xff08;最簡單&#xff09; 如果匯編代碼不常改動&#xff0c;這是最省事的方法。手動編譯一次&#xff1a; 打開命令行&#xff0c;切換到 spoof.asm 所在目錄。使用你已有的匯編器&#xff08;或者下載一個單獨的 MASM 版本&am…

php學習 (第六天)

虛擬主機 一.什么是虛擬主機&#xff1f; 1.1 概念虛擬主機&#xff08;Web Hosting&#xff09;英文&#xff1a;Web Hosting / Shared Hosting核心概念&#xff1a; 一臺服務器被切分給多個用戶&#xff0c;每個人只使用服務器的一部分資源&#xff08;CPU、內存、帶寬、存儲…

AcousticsML聲學機器學習翻譯教程二(特征提取Feature Etraction)

源自&#xff1a;https://github.com/RAMshades/AcousticsM 特征提取 特征是可測量的屬性&#xff0c;作為系統的輸入。這些輸入與特定數據樣本相關&#xff0c;機器學習模型可通過解讀這些特征來提供預測。特征通常具有獨立性&#xff0c;并能提供樣本的具體細節。音頻特征示例…

【論文閱讀】Beyond Text: Frozen Large Language Models in Visual Signal Comprehension

本論文研究了能否利用一個“凍結”的LLM&#xff0c;直接理解視覺信號&#xff08;即圖片&#xff09;&#xff0c;而不用在多模態數據集上進行微調。核心思想是把圖片看作一種“語言實體”&#xff0c;把圖片轉換成一組離散詞匯&#xff0c;這些詞匯來自LLM自己的詞表。為此&a…

The Oxford-IIIT寵物圖像識別數據集(753M)

0、引言博主研究生期間做的是人工智能領域相關的深度學習模型研究&#xff0c;早期還沒定題的時候調研了大量方向。眾所周知&#xff0c;模型性能的好壞很大程度上依賴于數據集&#xff0c;因此我當時也接觸了大量數據集&#xff0c;這陣子將這些數據集匯總整理了一下&#xff…

jdbc DAO封裝及BaseDAO工具類

DAO概念 DAO&#xff1a;Data Access Object&#xff0c;數據訪問對象。 Java是面向對象語言&#xff0c;數據在Java中通常以對象的形式存在。一張表對應一個實體類&#xff0c;一張表的操作對應一個DAO對象&#xff01; 在Java操作數據庫時&#xff0c;我們會將對同一張表的增…

大模型應用開發2-SpringAI實戰

SpringAI整合了大多數大模型&#xff0c;而且對于大模型開發的三種技術架構都有比較好的封裝和支持&#xff0c;開發起來非常方便。不同的模型能夠接收的輸入類型、輸出類型不一定相同。SpringAI根據模型的輸入和輸出類型不同對模型進行了分類&#xff1a; 大模型應用開發大多…

TDengine 時序函數 DIFF 用戶手冊

DIFF 函數用戶手冊 函數概述 DIFF 函數用于計算數據列中相鄰兩行數據的差值&#xff0c;通常用于分析數據的變化趨勢和增量。該函數特別適用于監控智能電表數據的變化模式。 語法 SELECT DIFF(column_name [, ignore_negative]) FROM table_name;參數說明 column_name: 數…

清除gradle緩存的某個依賴

要清除 Gradle 緩存中的某個特定依賴&#xff0c;可以按照以下步驟操作&#xff1a;找到依賴在緩存中的路徑 Gradle 緩存的默認位置&#xff1a; Windows: C:\Users\<用戶名>\.gradle\caches\modules-2\files-2.1 macOS/Linux: ~/.gradle/caches/modules-2/files-2.1 路徑…

機器人控制器開發(驅動層——伺服驅動canopen的sdo和pdo)

文章總覽 一、核心區別&#xff1a;一句話概括 ? ??SDO&#xff08;服務數據對象&#xff09;??&#xff1a;像 ??“問詢/設置”??。用于??點對點、非周期??的參數配置和讀取。例如&#xff0c;設置電機增益、讀取當前位置等。??速度慢&#xff0c;但確保數據準…

返利APP排行榜數據實時更新:基于 WebSocket 與 Redis 的高并發數據推送技術

返利APP排行榜數據實時更新&#xff1a;基于 WebSocket 與 Redis 的高并發數據推送技術 大家好&#xff0c;我是阿可&#xff0c;微賺淘客系統及省賺客APP創始人&#xff0c;是個冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在返利APP運營中&#xff0c;用戶對排…

[論文閱讀] 人工智能 + 軟件工程 | 告別冗余HTML與高算力消耗:EfficientUICoder如何破解UI2Code的token難題

告別冗余HTML與高算力消耗&#xff1a;EfficientUICoder如何破解UI2Code的token難題 論文信息信息類別具體內容論文原標題EfficientUICoder: A Dual-Modal Token Compression Framework for UI-to-Code Generation with Multimodal Large Language Models論文鏈接https://arxiv…

【STM32項目開源】STM32單片機智能語音風扇控制系統

目錄 一、設計背景和意義 1.1設計背景&#xff1a; 1.2設計意義&#xff1a; 二、實物展示 三、硬件功能介紹 2.1 硬件清單&#xff1a; 2.2 功能介紹&#xff1a; 四、軟件設計流程圖 五、硬件PCB展示 六、軟件主函序展示 七、單片機實物資料 資料獲取 查看主頁介…