CDN、DDoS到底是個什麼鬼?建一個網站需要考慮哪些因素呢?

建一個菠菜網站需要考慮哪些因素呢,或者我們最擔心什麼? 怕被攻擊,時不時的DDOS攻擊夠你喝一壺的;怕性能不夠,會員一多,訪問連接數太多,網站頂不住;怕網站響應慢,延時太大,網頁半天打不開。也許解決上述問題,有一堆的解決方案,但有沒有一個簡單粗暴的,特別有效的產品或方案對應呢?


CDN、DDoS到底是個什麼鬼?建一個網站需要考慮哪些因素呢?

有,那就是CDN。但,為什麼它就能解決上述問題呢?

網上有很多介紹關於CDN的文章,要麼太簡單,就介紹有什麼功能,要麼就太玄奧,雲裡霧裡,就是讓你看不明白。好今天就帶大家瞧瞧CDN的廬山真面目

談CDN之前我們先談談菠菜公司網站的服務器架構。

下圖是一般公司的服務器架構(low) ,網站一般由WEB服務器和數據庫服務器構成。這個是最最最簡單,沒有任何優化的設計。服務器搭建好之後,就要去申請域名了,賣域名的網站很多,國內很多,上網搜一搜,國外比較有名的是godaddy。

用戶訪問網站流程圖

CDN、DDoS到底是個什麼鬼?建一個網站需要考慮哪些因素呢?

服務器搭建完成後,申請好域名配置好公網IP,在第三方域名解析商或自建DNS服務器上解析完後,用戶就可以訪問了。

如圖所示:

Ø 搭建服務器,申請域名及配置公網IP地址

Ø 選擇第三方域名解析商解析

Ø 用戶配置DNS 如8.8.8.8 或114.114.114.114或運營商DNS服務器

Ø 用戶瀏覽器輸入WWW.XXX.COM

Ø 用戶到自己配置的DNS地址的服務器上查找WWW.XXX.COM的解析記錄獲取IP地址

Ø 用戶DNS服務器通過遞歸查找最後查到為WWW.XXX.COM域名解析的服務器如cloudflare 的DNS服務器。從cloudflare 獲取網址對應WEB服務器的公網IP 並返回給用戶終端(PC和手機)

Ø 用戶終端獲取WEB服務器公網IP後,通過路由訪問1.1.1.1:80的服務即WEB服務。

通過分析網站的服務器架構及用戶訪問網站的過程,不難看出這個WEB服務的很多節點都是非常脆弱且及容易被攻擊的。

傳統WEB服務器架構的弱點總結:WEB服務器數量較少,一臺或幾臺,當用戶數一大,性能不夠,連接數不夠,默認一臺WEB服務器的連接數只有3W多個。

WEB服務器的真實公網IP通過域名解析被獲取後,可以非常簡單的被防火牆訪問禁止。服務器真實IP暴露後,可以對WEB服務器展開流量攻擊(DDOS),CC攻擊針對連接數。

針對以上弱點,有些公司會採用以下解決方案

改進型WEB服務器及安全架構

CDN、DDoS到底是個什麼鬼?建一個網站需要考慮哪些因素呢?

圖中的改進最明顯的是服務器的角色及服務器數量大大增加,LVS負載均衡的加入,使得改服務器架構中可支持多臺服務器同時提供服務,反向代理服務器可以過濾一部分基於連接的攻擊,避免後端真實服務器的直接面對攻擊。並通過多臺WEB服務器極大提高系統的併發能力,支持更多的玩家會員。緩存服務器的加入,可以讓動態頁面和靜態頁面分離開來,加快用戶的訪問體驗。但這種仍然沒辦法面對流量型攻擊。

沒錯圖中數據中心加入了重量級的安全設備,假定該數據中心帶寬為40G(非常大帶寬的數據中心了),並具備40G的流量清洗能力。但仍然不足以保障網站系統的安全。因為分佈式的流量攻擊,爆發於一點。衝擊力非常強大。超過40G的流量攻擊並不難組織起來,這個世界的僵死主機實在太多了。並且開啟40G的流量防禦服務代價非常高昂,而且一般攻擊流量達到該數據中心出口帶寬40G的時候,流量清洗已經沒有用了,這個時候數據中心往往是關閉該網站對外的網絡服務來保全整個數據中心。

即便流量在5-10G左右,如果攻擊者不定時攻擊,仍然會影響網站的對外服務,影響用戶體驗,運維人員除了觀察並被磨鍊心志外,並沒有什麼可以做的。

但是方案中通過引入LVS(負載均衡)、反向代理、緩存服務器後對系統的安全、性能、擴展性是巨大的進步,值得鼓勵及肯定。並且離我們的CDN的最終解決方案越來越近了。

怎麼搞定該死的分佈式DDOS攻擊呢,分析DDOS攻擊的過程及原理不難找到答案。DDOS攻擊的原理是把分佈式的萬千殭屍主機的涓涓細流匯聚成狂暴的河流來攻擊一點。我們是不是可以把狂暴的河流化成萬千的涓涓細流呢。

他強任他強,明月照山崗。

CDN的核心或者魔鬼的細節就在DNS解析原理上。稍微解析下DNS解析的原理。

域名解析記錄有好幾種,最著名且實用的有兩種:A記錄,CNAME(別名)其實翻譯成改變名字更好理解,英文原意其實也是(change name)。

訪問一個網站,首先拿到的是它的域名,因為域名比較好記,針對人類的,但機器並不喜歡,訪問網站對於人類來說是基於名字(域名),對於機器來說是通過互聯網,是基於路由,基於IP地址。所以域名解析的生意就來了,需要把域名解析成IP地址。雖然第三方域名解析商都是免費做這個事情。

CNAME 顧名思意,改變名字,對於域名就是改變域名,並不是真的改變,對於人類是不知道的。在域名解析的過程中把域名改成另一個域名。

前文說過對付分佈式攻擊流量,就要把聚集的流量化成分佈式的,或者使其不能聚集一點。通過CNAME 可以實現把流量引向別處,暫時的,最終還是需要回來的。光引向別處還不行,還需要把流量分散開來。

好了,CDN就是這麼個作用,把流量引向別處,並讓流量分散開來。

CDN 架構

如架構圖所示,CDN服務商會在多個地點的多個數據中心中部署服務器,起到分流的作用,及用戶就近訪問的作用。

CDN怎麼起作用呢?比如購買了圖中CDN的服務商的CDN服務,首先把菠菜網站的域名解析到這個CDN提供商,通過別名的形式,轉移流量。

比如www.xxx.com Cname www.cdn.com

上述解析一般是在第三方域名解析商完成,一般是免費的。考慮行業的敏感性建議採用國外域名解析商cloudflare ,註冊賬號非常簡單快捷,不用提供任何個人信息。

一般CDN提供商都會向用戶提供域名管理界面,這個界面上填寫要被保護的域名及源站公網IP地址(別名其實也可以)

這一步的主要作用是完成了引流。流量到了CDN了。

接下來就要把流量化成涓涓細流了,CDN一般自建有DNS服務器,根據客戶的域名及訪問的源IP地址,把流量分到就近的數據中心,比如這個客戶指定用香港的線路,即把該客戶網站的流量指向香港的各個數據中心。這個導流其實也是依賴於DNS功能,因為CDN DNS服務器上保留有這些節點的服務器(LVS 負載均衡服務器 或反向代理服務器)的公網IP地址。當終端用戶完成DNS查詢獲取到節點服務器的公網地址後,用戶直接通過路由訪問CDN 節點數據中心的LVS服務器,並通過LVS調用客戶源站WEB服務器及數據庫服務器。對於網站靜態頁面直接通過緩存服務器訪問。從而極大的提高了訪問速度,並增強了併發能力。

數據流是這樣的:

1) DNS查詢

最終用戶------www.xxx.com------CNAME WWW.cdn.com-----A記錄 Y.Y.Y.(1-100)

2) 數據訪問 最終用戶 ----------------y.y.y.(1-100):80

發現了什麼了嗎,源站的公網IP地址被隱藏起來了,用戶只能查詢到CDN的公網IP地址。

會發現第一次訪問往往比不用CDN服務還要慢,因為需要CDN DNS查詢及調度。一旦完成DNS查詢,後續就又快又穩。

由於CDN提供商往往在一個地方租用多個數據中心。所以完全不用擔心流量型DDOS攻擊了。道理很明顯,40G 流量分到10個數據中心就是4G了,分到100個呢?並且最多影響部分地區的,其實根本不會影響。

由於CDN提供商在某個數據中心都啟用了反向代理服務器所以也不用擔心CC攻擊了。如果數據中心有IPS等設備,技術型的漏洞攻擊的威脅也大大降低。

好了,你明白CDN是什麼鬼了嗎?

CDN網絡架構

CDN、DDoS到底是個什麼鬼?建一個網站需要考慮哪些因素呢?


分享到:


相關文章: