DNS 劫持,也稱作域名劫持瘪弓,經(jīng)常見于一些運營商某一區(qū)域的 DNS 服務(wù)器行為異常垫蛆。(這種異常的原因有許多,眾所周知腺怯,網(wǎng)間結(jié)算的費用比較貴袱饭,運營商現(xiàn)在被要求降費提速,日子不好過呛占,也為了節(jié)省成本虑乖,通常會部署 DNS 緩存服務(wù)器,在用戶跨網(wǎng)訪問時晾虑,采用技術(shù)手段將用戶與目標服務(wù)器的連接劫持到自家的緩存服務(wù)器上疹味,結(jié)果正常的話仅叫,這種劫持也被稱作良性劫持。但是如果不正常糙捺,很多請求的訪問鏈路便out of control了…)诫咱。區(qū)別于 HTTP 劫持,DNS 劫持即使是走 HTTPS 請求也會受到影響洪灯,這種影響常見于 HTTP 改造 HTTPS 過程的時候坎缭,當(dāng)請求的域名在 DNS 緩存服務(wù)器上命中之后,便會走緩存結(jié)果婴渡,然而幻锁,由于大部分的緩存服務(wù)器只支持 80 端口,不支持 443 端口的訪問边臼,所以春節(jié)期間發(fā)生的一些劫持問題主要來源于近期的HTTPS改造哄尔。
本文適合 PM、FE 閱讀柠并,如果遇到類似的情況可以按照如下步驟來收集證據(jù)岭接,配合 SRE 舉報。
舉報是解決運營商劫持非常有效的手段臼予,維護網(wǎng)絡(luò)環(huán)境人人有責(zé)鸣戴。
如何在移動端確定你是否被劫持,區(qū)分 Android 和 iOS 兩個平臺粘拾,但是原理和步驟基本一致窄锅,此處利用春節(jié)期間遇到的一個 Case,基于 Android 平臺做介紹:
1.工具準備
下載Android平臺的追蹤工具:http://www.wandoujia.com/apps/com.ulfdittmer.android.ping?utm_source=qq(忽略豌豆莢)
2.獲取檢測結(jié)果
安裝完畢之后打開缰雇,可以見下圖界面入偷,此時輸入要檢測劫持的域名:
輸入域名之后,點擊 “DNS” 按鈕械哟,即可開始追蹤 DNS 解析的鏈路疏之,結(jié)果如下圖:
3.結(jié)果分析
結(jié)果出來了,我怎么驗證是否域名被劫持呢暇咆,這時候我們需要分析一下 CDN 網(wǎng)絡(luò)對于域名解析做的一些調(diào)整:啟用 CDN 加速服務(wù)锋爪,需要將域名指向加速域名,再由加速域名來提供 ip 地址爸业,需要在 DNS 服務(wù)商處為域名添加 CNAME 記錄其骄,從而達到內(nèi)容分發(fā)加速的效果。
也就是說扯旷,CDN 域名在 DNS 解析時需要先解析到一條或者多條 CNAME 記錄年栓,這些 CNAME 記錄指向統(tǒng)一的 CDN 的加速服務(wù),下面我們看下正常的解析是什么樣子的薄霜,見下圖:
這時某抓,我們再看圖2纸兔,僅返回了一個 ipv4 的地址, 試問誰家CDN這么簡陋否副,這不是劫持又是什么呢汉矿。
打開百度,驗證一下ip地址:111.29.3.240 發(fā)現(xiàn)地址是
至此备禀,可以把這些作為證據(jù)給SRE洲拇,協(xié)助解決問題。
類似的曲尸,在 iOS 下的工具名字叫做 iNetTools赋续,收集的步驟類似,不贅述另患。
紕漏之處纽乱,敬請指正。