導航: 這里將一個案例事項按照流程進行了整合,這樣查看起來比較清晰。部分資料來自於Cloudflare 1.DDoS介紹 2.常用DDoS攻擊 |
背景信息 |
本案例場景為給XX項目Login服務器以及Game服務器增加 DDOS防護,使用Cloudflare。 環境架構由 Client → Login/Game服務器 (客戶端的流量直接連接Login/Game服務器) 升級為 Client → CloudFlare → Login/Game服務器 (客戶端流量發送給CloudFlare,在由CloudFlare反向代理至Login/Game服務器)
注意:圖中敏感信息已打碼;另所有域名信息使用www.baidu.com代替,IP端口為虛假信息。
|
1.流程圖
1.1 登錄服
XX項目版Login服務器不增加DDOS防護時,玩家直接通過DNS服務器解析到Login服務器的真實IP地址連接Login服務器的80端口,並獲取區服列表
具體流程見下圖;
在加入DDOS防護后,DNS域名會將映射解析到 Cloudflare的邊緣防護IP上,然后Cloud Flare會將請求反向代理到Login的真實IP上.
2.1 游戲服
XX項目版Game服務器不增加DDOS防護時,由於Game沒有域名配置,玩家直接通過Login服務器獲取Game的IP地址,然后連接Game服的8000-8001端口,連接Game服務器;由於XX項目 Game服為滾服架構,那么每個Game區服都會開放8000-8001端口.
具體流程見下圖.
加入DDOS防護后,由於DDOS邊緣防護IP數量有限(根據溝通,CloudFlare邊緣IP上限為10個),並且,一個邊緣IP只能開放一個相同端口;所以,邊緣IP以及Game服的對外IP依次遞增對外端口來滿足配置需求.
2.配置案例
XX項目環境信息如下
角色 |
域名 |
邊緣IP |
服務器對外真實IP |
服務器對外端口 |
Login服務器 |
www.baidu.com |
2.2.2.2 |
1.1.1.1 |
80 |
Game1 |
無 |
2.2.2.2 |
10.10.10.10 |
8000,8001 |
Game2 |
無 |
2.2.2.2 |
10.10.10.11 |
8002,8003 |
由於login服務器和game服務器端口不沖突,所以這里只用一個邊緣ip:2.2.2.2。所有對外端口依次遞增。
在XX項目環境中,需要配置的模塊有3個,分別為以下:
CloudFlare
配置至真實游戲服(登錄服)的反向代理目的地址,並獲取CloudFlare的邊緣IP。
DNS
由於DNS在沒有DDOS防護前,直接將映射解析至Login的服務上,在加入DDOS防護后,需要將解析更改至CloudFlare的邊緣IP上。
游戲服(登錄服)
為了節約成本以及IP資源的節省,對外端口由8000-8001遞增的方式添加。
2.1 CloudFlare
1.登錄CloudFlare
網址: https://dash.cloudflare.com/login
2.點擊項目的域名
XX項目使用的是baidu.com
3.DNS以及Spectrum
(由於配置多余的域名可能會導致額外費用,這里只展示配置過程截圖)
主要是在以下2個配置項(根據實際需求選擇)里面配置反向代理的服務器IP,並獲取CloudFlare邊緣IP
DNS:DNS配置項可以配置標准端口,如80和443,一般是7層協議。
Spectrum:Spectrum配置項可以隨意配置有效范圍端口,比如不是標准的80和443卻也是http協議。可以配置協議比較多。
- DNS配置項
如端口為80及443,配置見以下
配置完成后點擊保存.
- Spectrum配置項
如果后端真實服務器對外端口為非80和443,那么就需要使用Spectrum配置項.
點擊Spectrum→點擊創建應用程序
配置Spectrum(這里假設配置2個游戲服,端口號8000-8003)
Game1(端口8000-8001)
Game1第二個端口
Game2(端口8002-8003)
Game2第二個端口
注意:不管是DNS配置項還是Spectrum配置項,域名地址配置部分,一定最好保持一致,只有域名地址相同,分配的邊緣IP地址才會相同。(Cloudflare還是要按照實際情況決定)
4.頁面規則
如果是配置DDoS防護,可以不用配置默認規則,但是這里還是顯示的配置一下更為清晰。
5.獲取CloudFlare的邊緣IP地址
獲取CloudFlare的邊緣IP地址,通過dig命令加上CloudFlare的CNAME別名來獲取。
比如XX項目只有一個主機名,那么直接 dig www.baidu.com.cdn.cloudflare.net
注意:配置2個主機名或者1個主機名,按照實際條件選擇,cloudflare按照邊緣IP收費。
2.2 DNS
只有有域名配置的服務器才需要配置DNS,比如Login服務器(這里XX項目login服務器功能是獲取區服列表,所以配置了域名)。
目前環境配置海外項目使用AWS route53服務來配置域名
1.登錄AWS,找到ROUTE 53服務→托管區域→找到baidu.com域名
2.將原主機域名A記錄改為CNAME記錄,指向CloudFlare的CNAME域名
2.3 Login服-Game服
內部項目信息,敏感信息這里不做公開。只需要將原來的外網地址改成cloudflare的邊緣IP地址和剛才配置的端口即可。
3. 頁面規則
至於頁面規則,在初期使用cloudflare的時候,配置DNS項,總會在頁面規則里面增加一個頁面規則:緩存級別-繞過。后面發現,如果作為DDOS防護產品來用,可以不需要這個配置。以下是和cloudflare技術支持人員討論的截圖。
一般情況下,作為DDoS高防配置cloudflare,是不需要配置頁面規則的。但是在以下情況下,還是要配置頁面規則,否則配置DDoS高防后,無法正常使用。
1.DNS項配置DDoS高防。
2.源站僅開啟443端口。
因為在使用DNS項配置DDoS高防時,無法指定源站的端口是什么,cloudflare訪問源站默認策略為靈活(也就是默認80)訪問。若源站僅開啟443端口,那么將無法訪問網站。
由於以上截圖針對整個域名的全局配置,不能修改以上配置,需要針對域名開啟單獨的ssl配置。
點擊域名下規則→頁面規則→創建頁面規則,輸入要配置的域名以及ssl為完全即可。