最近用AX 64位ADC產品做了一個DNS服務器的解決方案,共享給大家參考。DNS服務器是做什么用的這里就不啰嗦了,大家應該還記得2009年國內出現了一次大規模的DNS服務器中斷服務的狀況吧,那次故障讓很多網管人員和決策者意識到了DNS服務在整個Internet接入服務過程中的重要性,也充分體會到了UDP Flooding攻擊,尤其是DNS flooding攻擊的危害性!本人最近利用AX產品所提供的DNS Cache、PBSLB(Policy based Server Load Banlance)功能,結合IP anycast做了一個提高DNS可用性和安全性的解決方案,簡單描述我的方案思路:
1、 利用AX產品基于DNS應用層的健康監測機制,對DNS服務器提供最準確的應用可用性探測;
2、 利用AX產品對DNS服務器群提供高效的負載分擔算法,保障每臺服務器的訪問壓力比較均衡,任何一臺服務器出現故障都不會影響整個DNS系統的可用性;
3、 利用AX產品極高的QPS處理能力,無論在訪問高峰期還是在發生異常DNS攻擊時,都能夠最大限度的保障DNS應答的時效性和抵御攻擊的能力;
4、 利用AX產品提供的DNS Cache功能,通過在AX系統內存中緩存DNS服務器的應答數據,可以極大的降低DNS服務器的訪問壓力;同時,還可按照靈活的策略緩存或不緩存指定域名,提供不同的緩存策略;
5、 利用AX產品提供的DNS應用策略,實現非法DNS請求的過濾、速率限制、連接數限制等安全策略,例如可基于源IP地址、基于DNS域名等實現連接數和連接速率限制等;
根據以上五點思路,簡單闡述一下我為什么選擇這五個功能,和其它IP anycast方案相比有什么優勢:
1、要充分利用ADC產品提供的應用層健康檢查機制,不僅定期檢查網絡層可達性,還能通過探測DNS服務器是否應答DNS請求來判斷DNS應用的可用性,當出現問題時,AX產品會主動在OSPF域中停止廣播有問題的DNS IP路由,徹底避免當DNS進程出現問題或者應用掛死時,仍然向有問題的DNS服務器發送DNS請求。通常在服務器或網絡層設備上啟用IP anycast是無法做到應用層的健康監測的,只要網絡層可達,IP anycast的OSPF路由就有效,這樣就會出現當DNS進程或應用層出現問題時,依然會有DNS請求被分配到這些有問題的服務器上,造成客戶端的DNS請求服務無法應答。
2、ADC產品本身具有多種不同的負載分擔算法,利用這些算法可以有效的在服務器群中實現負載的均衡分擔;網絡層設備只能基于源IP地址hash的方式來給DNS服務器分配流量,算法過于單一,且容易出現負載不均衡的情況。
3、通常無論是DNS緩存服務器,還是授權DNS服務器,都無法提供高性能的QPS處理能力,根據經驗,一般一臺DNS服務器只能提供20萬~30萬左右的QPS處理能力,這樣就會造成出現大量DNS請求或者攻擊時,這些服務器會成為性能瓶頸,影響整個DNS服務系統的性能,且容易在服務器間出現故障的雪崩效應;而AX產品可以提供至少百萬級的QPS處理能力,這一點相對于服務器來說,性能優勢比較明顯。
4、在AX產品上啟用DNS Cache,除了有效降低DNS服務器的訪問壓力,減少DNS服務器的遞歸查詢外,由于AX產品自身具備高性能的QPS處理能力,因此,能夠更大限度的保障DSN系統的整體處理能力,提升系統的安全性,解決方案更加簡單,集成度更高。
5、啟用DNS應用安全策略,可以有效的防范非法DNS查詢請求,對于大量偽裝成合法DNS遞歸查詢的攻擊,除了采用DNS Cache+高性能QPS應答外,還可以根據攻擊源IP地址或者攻擊的域名進行速率限制,或啟用黑白名單等,充分保障其它合法用戶的DNS服務請求。