通配符 DNS 記錄:應用場景與相關風險

隨著組織的互聯網基礎設施不斷擴展,其對配置、設置和決策的需求也隨之增加——從選擇一個可靠的名稱服務器,到確定合適的 DNS 記錄類型以及設置合適的 TTL(生存時間)值。其中一項關鍵決策就是是否要創建通配符 DNS 記錄,這是一項大多數主機服務商、注冊商和 DNS 提供商都支持的功能。

在本文中,我們將介紹什么是通配符 DNS 記錄、它的作用以及可能存在的風險。

什么是通配符 DNS 記錄?

通配符 DNS 記錄是一種特殊的 DNS 記錄,允許域名管理員將不存在或隨機的子域名指向特定的 IP 地址或其他 DNS 資源數據。舉個例子,如果某人嘗試訪問一個未在域名 DNS 設置中定義的子域名,系統仍會返回響應,而不是報錯——用戶將被引導至通配符 A 記錄中定義的 IP 地址。

簡而言之,通配符 DNS 記錄是一個“兜底”機制,用于自動處理無效的子域名請求。定義通配符域名很簡單,但也有一些規則需要注意:

  • 只有一個星號(*)會被視為通配符操作符,DNS 通配符記錄不支持其他字符或表達式。例如,*.example.com 是正確的通配符記錄,而 *1.example.com 則不是。

  • 星號必須出現在域名的最左側標簽中。例如,*.example.com 是正確的,而 example.*com 則不是。

  • 每條記錄只能有一個星號,不能在多層級中使用通配符。例如,*.*.example.com 大多數 DNS 提供商會認為無效。同時,*.example.com 無法匹配 a.b.example.com,通配符只作用于一個層級。

  • 已存在的 DNS 記錄優先于通配符記錄。例如,如果為 blog.example.com 設置了具體的 DNS 記錄,即使存在 *.example.com 通配符記錄,系統也會優先使用指定的記錄。

如何創建通配符 DNS 記錄?

不同 DNS 提供商的具體操作步驟可能略有不同,但大致流程如下:

  1. 登錄賬戶并進入 DNS 管理控制臺;

  2. 添加一條新的 DNS 記錄并選擇記錄類型;

  3. 輸入通配符子域名(如 *.example.com)及其指向的目標地址,可能是 IP 地址、URL 或另一個子域;

  4. 新的 DNS 記錄生效時間可能從幾分鐘到 48 小時不等。

需要注意的是,并非所有類型的 DNS 記錄都支持通配符。A、AAAA 和 TXT 記錄支持得較廣;而 CNAME、ALIAS、URL 重定向、HTTP 重定向和 MX 雖技術上支持,但不常見;NS、SOA 和 PTR 記錄則完全不支持通配符。

通配符 DNS 的常見應用場景

現在你知道如何創建通配符 DNS 記錄了,那么是否有必要使用呢?以下是一些合法且常見的使用場景:

多租戶應用

多租戶軟件中,一個應用實例服務多個客戶,每個客戶有獨立子域名,如 customer1.sampleapp.comcustomer2.sampleapp.com 等。

通過使用 *.sampleapp.com 通配符 DNS,應用可統一處理所有子域名,而無需為每一個單獨配置 DNS。

博客平臺

像 WordPress.com 這樣的博客平臺允許用戶創建自定義子域名,如 mydailyblog.wordpress.com。這類平臺通常使用如 *.wordpress.com 的通配符 DNS,使任意子域名自動解析到共享 IP 地址。

DNS 查詢時,通配符記錄會返回相同 IP,服務器通過 HTTP Host 頭(如 mydailyblog.wordpress.com)識別要展示的博客內容,從而實現動態渲染每位用戶的個性化博客。

新頂級域(TLD)的臨時用途

互聯網名稱與數字地址分配機構(ICANN)要求新推出的 gTLD 在上線初期的最少 90 天內返回特殊 DNS 響應,用以管理名稱沖突(Name Collision: ICANN Approves Name Collision Occurrence Management Framework | Special IP Address (127.0.53.53) Alerts System Administrators of Potential Issue),類似通配符機制但不直接使用通配符記錄。

通常情況下,ICANN 禁止注冊局為不存在或未注冊的域名設置通配符 DNS,而是要求返回 NXDOMAIN(域名不存在)。但上述框架是一個例外,用于防止名稱沖突——即內部網絡中使用的域名與公共互聯網上的名稱發生沖突。

為避免此類沖突,可設置一個類似通配符的 A 記錄,指向 127.0.53.53(保留地址),一旦觸發,在日志中警示管理員。

使用通配符 DNS 的風險

通配符 DNS 可以提升用戶體驗,讓用戶訪問未定義子域名時不會報錯,但使用時也需謹慎。總原則是:沒有正當用途就不要用通配符 DNS。 原因包括:

DNS 錯誤風險

在使用通配符 DNS 的網絡環境中可能出現意外流量路由。例如,若某設備名為 computer.example.com,系統可能自動將 example.com 設置為搜索域。此時訪問 www.google.com 失敗時,系統可能會嘗試 www.google.com.example.com,若啟用了通配符記錄,系統將錯誤地解析至內部資源,造成功能異常、流量誤導及難以診斷的錯誤。

子域接管

如果 *.company1.com 通配符記錄將所有子域都指向某云服務資源,而該資源被刪除但記錄未移除,攻擊者可注冊相同資源地址,接管如 login.company1.com 等子域,進而托管惡意內容。

釣魚攻擊

通配符記錄使拼寫錯誤的子域(如 logln.company1.com)依然能解析為真實主頁或默認頁。攻擊者可以用這類看似合法的鏈接誤導用戶點擊,通過后續提示跳轉至真正的釣魚頁面,收集用戶信息。

通配符 DNS 與通配符 SSL 的區別

通配符 DNS 控制子域名的解析,而通配符 SSL 則用于加密多個子域的 HTTPS 連接(如 *.example.com)。雖然便捷,但如果某子域被攻破,攻擊者可利用通配符證書托管惡意內容,仍顯示 HTTPS 小鎖,容易誤導用戶和繞過安全防護。

如何查找通配符 DNS 記錄?

安全專家經常需要識別通配符 DNS 的使用情況,用于攻擊面評估。WhoisXML API 提供多種 DNS 產品,可基于被動 DNS 和實時 DNS 數據判斷記錄是否為通配符。

使用?DNS Chronicle API | WhoisXML API獲取通配符信息

該 API 可查詢域名的歷史 A 和 AAAA 記錄,并返回是否為通配符記錄。例如:

curl --location 'https://dns-history.whoisxmlapi.com/api/v1' \

????????--header 'Content-Type: application/json' \

????????--data '{

????????"apiKey": "<your_API_key>",

? ? ? ? "searchType": "forward",

????????"recordType": "a",

????????"domainName": "0-2nask-us.turbotaxweb.profile.basecamp.app"

????????}' >> dns_chronicle_sample.json

結果中字段 wildcard: true 表示該記錄屬于通配符。如果為 false,則不是;若為 null,說明尚未檢查。

使用 Reverse DNS API 獲取更多信息

此工具可進一步確認某條記錄是否屬于通配符,可查詢 SOA、TXT 或 CNAME 記錄。

curl --location 'https://reverse-dns.whoisxmlapi.com/api/v1' \

????????--header 'Content-Type: application/json' \

????????--data '{

????????"apiKey": "<your_API_key>",

????????"limit": 1000,

????????"includeAdditionalChecks": 1,

????????"recordType": "soa",

????????"terms": [ { "field": "domain", "term": "example.com" } ] }'

總結

通配符 DNS 記錄是一種兜底機制,使對未定義子域的請求仍能指向有效的資源。在多租戶應用、博客平臺以及新 gTLD 初期階段具有實用價值。但大多數系統管理員會避免使用通配符 DNS,因為它可能引起路由錯誤,并可能被濫用用于釣魚或子域接管。

如需確認某域是否使用了通配符 DNS,可使用DNS Chronicle API 或 Reverse DNS API 進行查詢。

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

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

相關文章

快速上手知識圖譜開源庫pykeen教程指南(一)

文章目錄 1 前情提要1.1 AmpliGraph 和 PyKEEN 對比介紹1.2 TransE、ConvE、RotatE幾款模型的差異 2 直接上案例2.1 數據載入&#xff1a;TriplesFactory2.2 模型訓練2.2.1 訓練信息2.2.2 TransE模型可以降維實體、關系的關系 2.3 模型保存與加載、評估2.3.1 保存與模型加載2.3…

飛搭系列 | 獲取彈窗數據,輕松實現回填

前言 飛搭低代碼平臺&#xff08;FeiDa&#xff0c;以下簡稱“飛搭”&#xff09;&#xff0c;為企業提供在線化、靈活的業務應用構建工具&#xff0c;支持高低代碼融合&#xff0c;助力企業低門檻、高效率和低成本地快速應對市場變化&#xff0c;加速復雜業務場景落地。 概要…

Linux如何安裝AppImage程序

Linux如何安裝AppImage程序 文章目錄 Linux如何安裝AppImage程序 在 Linux 中&#xff0c;.AppImage 是一種便攜式的應用程序格式&#xff0c;無需安裝即可運行。 1.賦予該文件可執行權限 可以使用下列命令&#xff0c;賦予可執行權限 # 舉個例子 chmod x /path/to/MyApp.App…

云硬盤的原理

云硬盤是云計算環境中的一種存儲服務&#xff0c;其原理主要涉及數據存儲、數據冗余與容錯、性能優化以及數據安全等方面&#xff0c;以下是具體介紹&#xff1a; 數據存儲 邏輯卷管理&#xff1a;云硬盤通常會將物理存儲設備劃分為多個邏輯卷&#xff0c;每個邏輯卷可以獨立地…

使用 pgrep 殺掉所有指定進程

使用 pgrep 殺掉所有指定進程 pgrep 是一個查找進程 ID 的工具&#xff0c;結合 pkill 或 kill 命令可以方便地終止指定進程。以下是幾種方法&#xff1a; 方法1&#xff1a;使用 pkill&#xff08;最簡單&#xff09; pkill 進程名例如殺掉所有名為 “firefox” 的進程&…

堆排序(算法題)

#include <bits/stdc.h> using namespace std;const int N 100010; // 堆數組的最大容量 int h[N], s; // h[]存儲堆元素&#xff0c;s表示當前堆的大小// 下沉操作&#xff1a;調整以i為根的子樹&#xff0c;維護小頂堆性質 void down(int i) {int t i; /…

極狐GitLab 如何將項目共享給群組?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 共享項目和群組 (BASIC ALL) 在極狐GitLab 16.10 中&#xff0c;更改為在成員頁面的成員選項卡上顯示被邀請群組成員&#xf…

用 CodyBuddy 幫我寫自動化運維腳本

我正在參加CodeBuddy「首席試玩官」內容創作大賽&#xff0c;本文所使用的 CodeBuddy 免費下載鏈接&#xff1a;騰訊云代碼助手 CodeBuddy - AI 時代的智能編程伙伴”。 #CodeBuddy首席試玩官 背景 我個人是非常喜歡 Jenkins 自動化部署工具的&#xff0c;之前都是手寫 Jenki…

基于windows安裝MySQL8.0.40

基于windows安裝MySQL8.0.40 基于windows 安裝 MySQL8.0.40&#xff0c;解壓文件到D:\mysql-8.0.40-winx64 在D:\mysql-8.0.40-winx64目錄下創建my.ini文件&#xff0c;并更新一下內容 [client] #客戶端設置&#xff0c;即客戶端默認的連接參數 # 設置mysql客戶端連接服務…

Python小酷庫系列:5個常用的dict屬性化訪問擴展庫

5個常用的dict屬性化訪問擴展庫 嵌套結構高級功能性能綜合建議 在前面我們詳細講解了 Box和 Munch這兩個dict屬性化訪問的擴展庫&#xff0c;總體而言它們主要用于提升配置文件數據、JSON對象數據的可讀性&#xff0c;減少了代碼中雙引號。在這一領域中還有dotmap、addict 和…

OC語言學習——面向對象(下)

一、OC的包裝類 OC提供了NSValue、NSNumber來封裝C語言基本類型&#xff08;short、int、float等&#xff09;。 在 Objective-C 中&#xff0c;**包裝類&#xff08;Wrapper Classes&#xff09;**是用來把基本數據類型&#xff08;如 int、float、char 等&#xff09;“包裝…

密碼學系列 - SR25519與ED25519

SR25519 SR25519 是一種高級的數字簽名算法&#xff0c;它基于 Schnorr 簽名方案&#xff0c;使用的是 Curve25519 橢圓曲線。這種簽名算法在密碼學社區中廣受歡迎&#xff0c;特別是在區塊鏈和加密貨幣領域。以下是關于 SR25519 的詳細介紹。 SR25519 簡介 SR25519 是一種 …

Vue3源碼學習7-PatchFlags使用位算符

文章目錄 前言? 一、基礎知識&#xff1a;什么是二進制&#xff1f;? 二、位運算的基本操作? 三、左移運算 <<? 四、實際用途&#xff1a;如何用于狀態標記&#xff08;PatchFlags&#xff09;? 五、組合多個狀態標記? 六、小結口訣&#xff08;記憶&#xff09;?…

在 Vue 2 中使用 qrcode 庫生成二維碼

&#x1f31f; 前言 歡迎來到我的技術小宇宙&#xff01;&#x1f30c; 這里不僅是我記錄技術點滴的后花園&#xff0c;也是我分享學習心得和項目經驗的樂園。&#x1f4da; 無論你是技術小白還是資深大牛&#xff0c;這里總有一些內容能觸動你的好奇心。&#x1f50d; &#x…

電子電器架構 --- 網關釋放buffer的必要性

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

Java中Stream、File、方法遞歸

文章目錄 十五、Stream流、File、方法遞歸1、Stream1.1 什么是Stream1.2 獲取Stream流1.3 Stream流常見的中間方法1.3 Stream流常見的終結方法1.4 收集Stream流 2、File、IO流&#xff08;一&#xff09;2.1 存儲數據的方案2.2 File&#xff1a;代表文本2.3 常用方法一&#xf…

挑戰用豆包教我學Java01天

今天是豆包教我學Java的第一天&#xff0c;廢話不多說直接開始。 1.每日題目&#xff1a; 基礎語法與數據類型 題目&#xff1a;編寫一個 Java 程序&#xff0c;從控制臺讀取兩個整數&#xff0c;然后計算它們的和、差、積、商&#xff0c;并輸出結果。題目&#xff1a;編寫…

文章記單詞 | 第67篇(六級)

一&#xff0c;單詞釋義 cylinder&#xff1a;英 [?s?l?nd?(r)] 美 [?s?l?nd?r] &#xff0c;名詞&#xff0c;意為 “圓筒&#xff1b;圓柱體&#xff1b;汽缸&#xff1b;&#xff08;有特定用途的&#xff09;圓筒形物品”。fool&#xff1a;英 [fu?l] 美 [fu?l]…

Make:獨立創造者手冊——從0到1的商業自由之路

目錄 如何獲得創業想法 ? 解決你自己的問題 ? 從微觀細分市場起步 ? 從問題出發&#xff0c;而非解決方案 ? 記錄與驗證想法 如何構建產品 ? 快速構建最小化產品 ? 對抗完美主義 ? 自行開發 vs. 外包 ? 學習基礎編程的必要性 案例與洞見 ? Levelsio的70個項目與5%成…

spark基本介紹

一、Spark概述 Spark是一種基于內存的快速、通用、可拓展的大數據分析計算引擎。 Hadoop是一個分布式系統結構的基礎架構。 二、Spark與Hadoop相比較的優勢&#xff1a; 1. 處理速度&#xff1a;Hadoop&#xff1a;數據處理速度相對較慢 Spark&#xff1a;速度比Hadoop快很…