轉自:https://blog.csdn.net/wwl012345/article/details/100058807
一、CDN介紹
1.CND簡介
CDN(Content Delivery Network 或 Content Distribution Network)即內容分發網絡,這種模式專注於通過全球分布式緩存架構為經常訪問的文件減少網絡訪問時的延遲。目標是加快交付應用程序內容給用戶。這些內容是任何可以存儲在一個文件中的東西,如圖像、 視頻和文檔。內容交付網絡(CSN)是一種全球分布式緩存的服務。CDN 在世界各地的許多地方保存了應用程序文件的副本。當用戶訪問時,會選擇離這些地方接近結點,用戶訪問的內容不需要通過很長距離的網絡來傳遞,所以它能訪問到達速度更快,以此來提高用戶體驗感。CDN 節點設在世界各地希望盡可以能接近的用戶。它有自己的 URL 負載平衡解析器,根據用戶不同地理位置,無論用戶在什么地方將用戶引向最近的節點。
2.為什么檢測CDN
因為在一般情況下,目標服務器可能只有一個服務器,那么如果通過這個域名來確定目標服務器的真實IP真的很重要。 比如,一個網站的服務器在北京,並且該網站存在很多CDN,此時,你在上海測試該網站,如果不考慮CDN,那么你可能測試的就不是目標服務器,而是距離你最近的CDN服務器,這樣就導致你無法直接得到目標主機的真實IP段范圍
二、CDN工作原理
傳統網站請求響應過程
(1):用戶在自己的瀏覽器中輸入要訪問的網站域名
(2):瀏覽器向本地DNS服務器請求對該域名的解析
(3):本地DNS服務器中的緩存中如果有這個域名的解析結果,則直接響應用戶的解析請求
(4):本地DNS服務器中如果沒有關於這個域名的解析結果,則以迭代方式向整個DNS系統請求解析,獲得應答后將結果反饋給瀏覽器。
(5):瀏覽器獲得域名解析結果,就是該域名相應設備的IP地址
(6):瀏覽器獲取IP地址之后,通過標准的TCP握手流程,建立TCP連接
(7):瀏覽器向服務器發起HTTP請求
(8):服務器將用戶請求內容傳給瀏覽器
(9):傳輸完成后,經過標准的TCP揮手流程,斷開TCP連接
引入CDN之后的網站請求響應過程
(1):當用戶點擊網站頁面上的內容URL,先經過本地DNS解析,如果本地DNS系統沒有相應域名的緩存,則本地DNS系統會將域名解析權交給CNAME指向的CDN專用DNS服務器
(2):CDN的DNS服務器將CDN的全局負載均衡設備的IP地址返回給用戶
(3):用戶向CDN的全局負載均衡設備發起URL訪問請求
(4):CDN全局負載均衡設備根據用戶IP地址,以及用戶請求的URL,選擇一台用戶所屬區域的區域負載均衡設備,並將請求轉發到此設備上
(5):基於以下這些條件的綜合分析之后,區域負載均衡設備會選擇一個最優的緩存服務器節點,並從緩存服務器節點處獲得緩存服務器的IP地址,最終將得到的IP地址返回給全局負載均衡設備
(6):區域負載均衡設備根據用戶IP地址,判斷哪一個邊緣節點距用戶最近
(7):區域負載均衡設備根據用戶所請求的URL中攜帶的內容名稱,判斷哪一個節點上有用戶所需內容
(8):區域負載均衡設備查詢邊緣節點當前的負載情況,判斷哪一個邊緣節點尚有能力
(9):全局負載均衡設備把服務器的IP地址返回給用戶
(10):用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需的內容傳到用戶終端。如果這台緩存服務器上並沒有用戶需要的內容,那么這台服務器就要向上一級緩存服務器請求內容,直至找到需要的內容為止
三、判斷目標是否使用CDN
1.使用ping命令
像上述這樣的就存在CDN,因為沒有使用真正的域名進行解析。
2.使用在線網站
可以使用17CE(http://www.17ce.com)進行全國各地區的ping操作,然后對比每個地區出來的IP結構,查看這些IP是否一致,如果一致則表明可能沒有CDN,否則可能存在CDN。
上圖中不同地區查詢的IP不同,說明可能存在CDN
四、繞過CDN查找真實IP
1.內部郵箱源
一般的郵件系統都在內部,沒有經過CDN的解析,通過目標網站用戶注冊或者RSS訂閱功能,查看郵件、尋找郵件頭中的服務器域名IP,ping這個郵件服務器的域名,就可以獲取到目標的真實IP(必須是目標服務器自己的郵件服務器,第三方或者公共郵件服務器是沒有用的)
2.掃描網站測試文件
通過掃描網站測試文件,如phpinfo、test等,從而找到目標的真實IP
3.分站域名
很多網站的主站訪問量會很大,所以主站都是掛CDN的,但是分站可能沒有掛CDN,可以通過ping二級域名獲取分組IP,可能會出現分站和不是同一個IP但在同一個C段下面的情況,從而能判斷出目標的真實IP段
4.國外訪問
國內的CDN往往只對國內的用戶的訪問加速,而國外的CDN就不一定了,因此可以通過代理網站App Synthetic Monitor(https://asm.ca.com/en/ping.php)訪問,得到真實的IP
5.查詢域名解析記錄
有時候可能目標主機才剛開始使用CDN,因此可以通過查看域名IP歷史記錄來判斷目標主機的真實IP
6.通過抓包進行分析
如果目標主機有自己的App,可以通過Fiddler或Burp Suite抓取App的請求,從里面找到真實的IP
7.繞過CloudFlare CDN查找真實IP
現在很多網站使用CloudFlare提供的CDN服務,在確定了網站使用了CDN后,可以通過在線網站CloudFlareWatch對CloudFlare客戶網站進行真實IP查詢