Comments
Description
Transcript
PDF 277KB
Practical Cache Server Operation ~量と質、様々なQueryに対応するには~ Internet Week 2004 NTTコミュニケーションズ(OCN) 大島 治彦 2004/12/03 1 Today’s Topic インターネットの普及によりCache Serverは常に忙しい。 「異常/正常」どちらのQueryも増え続ける。 どうする? 様々なタイプの大量Query Authorative Serverとの関係 Cache Serverのスケーラビリティ 2004/12/03 2 1 大量Query(1) 2004/12/03 3 同一SrcIPからの大量Query DoS、不正アクセス、ユーザの設定ミス (ServFail、NXDomain、PrivateIP逆引き・・・) Webサーバのログ解析ツール (大量の逆引き) 2004/12/03 4 2 検知と対処 CPU使用率、Queryレート(qps)、nslookup遅延 の閾値 QueryログやF/WでのSrcIPの特定 BINDのBlackholeやF/Wでアクセス拒否 5 2004/12/03 大量Query(2) 2004/12/03 6 3 大量のSrcIPからの特定のQuery Wormが特定のサイトをアタック (MS Blast、Mydoom、Netsky、Antinny…) DDoS(FQDNを引くもの) アタックトラフィックで被攻撃サイトとネットワークが輻輳 クライアントがNXDomainをキャッシュせず、連続 QueryでCache Serverが高負荷 7 2004/12/03 対処 Forwardersと偽ゾーンサーバでの代理応答 高負荷 高負荷 から救われる から救われる 被攻撃サイト 偽zone管理用 偽zone管理用 DNSサーバ DNSサーバ DDoS攻撃 DDoS攻撃 から救われる から救われる forwarders設定 網内で廃棄 Wormに感染した エンドユーザ ③DDoS攻撃 ③DDoS攻撃 ②網内廃棄用の ②網内廃棄用の IPアドレスを返す IPアドレスを返す 2004/12/03 Cache Cache Server Server ①被攻撃サイトの ①被攻撃サイトの 名前解決要求 名前解決要求 8 4 Authoritative Serverとの関係 9 2004/12/03 原因不明のCache Server高負荷 Query数は正常、でもCache Serverは高負荷 何故かTCPのSYN_SENTの数と連動 140 120 CPU Utilization of Named(%) 100 Numbers of SYN_SENT for DNS 80 60 40 20 0 6/8 0:00 2004/12/03 6/8 6:00 6/8 12:00 6/8 18:00 6/9 0:00 6/9 6:00 10 5 TCP Connectionが何故増える? TC(Truncated)ビットが立ったパケット数と連動 600 600 500 500 400 400 300 300 200 200 100 100 0 6/5 0 6/6 6/7 6/8 Number of TCP packets sent to authoritative servers (per 5 min.) 6/5 6/6 6/7 6/8 Number of truncated answers from authoritative servers (per 5 min.) 11 2004/12/03 SYN_SENT発生のメカニズム Authorative Serverが大きなRR Setを登録 しかも、EDNS0に対応せずTCPもフィルタ User query Authoritative Authoritative server server Cache Cache server server (1) query(UDP) (2) Response with TC bit(UDP) (3) Resend query(TCP) (3) Retry (4) Try another connection No response No response No response Timeout ServFail (結果は 結果はキャッシュしない キャッシュしない) しない) 注) 注) 高負荷が発生するのはBIND8。BIND9では発生しない。 高負荷が発生するのはBIND8。BIND9では発生しない。 2004/12/03 12 6 対処は? Authoritative Serverの管理者への依頼 RR Setのサイズを小さく TCPでのアクセスを許可 EDNS0への対応 BINDのBlackhole設定で該当ユーザからの Queryを拒否 Forwarders設定と偽ゾーンサーバでの代理応 答 13 2004/12/03 EDNS0とTCPフィルタの関係 Cache Server Authoritative Server EDNS0 対応 EDNS0 対応 TCP 対応 (RFCでは必須) ○ ○ × ○ × × × ○ × × × × 2004/12/03 TCPを開ければ 問題なし。 TCPが開けられ ないとEDNS0が 必須。 TCPをフィルタすると TCPをフィルタすると 512オクテット超で 512オクテット超で SYN_SENTが発生 SYN_SENTが発生 ないのはここだけ ないのはここだけ 14 7 512オクテット以下が基本だが... AAAAでTCPへのfallbackが増加へ 現在のAAAAのQuery比率⇒約2% EDNS0も直ぐには対応できない セキュリティ面、性能面でもTCPは開けたくない そもそもAuthoritative Server依存の対策は辛い 2004/12/03 15 Cache Serverの自律的な回避 Cache Serverが自分で身を守る(実装変更) TCビットが立ったパケットが帰ってきてもTCPに fallbackしない(RFC違反) 一度TCPにfallbackしても応答の無いRRはTTL の間Cacheし、再帰問合せをせずにServFailを 返す(Internet Draft) 2004/12/03 16 8 Cache Serverのスケーラビリティ 17 2004/12/03 規制できないQuery数の増加 ブロードバンド化と利用動向の変化 慢性的に存在するウィルス、ワームの影響 Query数 Netsky クエリー数(主にMX) の絶対量を大幅 に底上げ現在も そのまま 11月 12月 1月 2月 3月 4月 5月 2004/12/03 18 9 Cache Serverの負荷分散 Pri Sec Cache Cache ユーザ 地域毎、サービス毎に利用す るCacheを分散し、Primary とSecondaryで運用 分散数を増やし、Cache1台 当たりのqpsは低めで運用 qpsが上がり負荷が厳しくな れば、再分散 or 設備更改 2004/12/03 19 Pri/Secでの構成の限界 Cache1台あたりは数千qps程度。 ⇒スケールしない。 ユーザが設定するのはPriとSecの2つ ⇒PrimaryとSecondaryの切り替えが遅い 高信頼性&大容量のCacheサーバが有効 2004/12/03 20 10 負荷分散装置&複数台Cache Pri Sec LB LB ユーザ 負荷分散装置をフロント、 裏側に複数のCache配 置でQueryを分散 ユーザは負荷分散装置の VIPを利用 Cache故障時は負荷分 散装置が自動切り離し 21 2004/12/03 Cacheの台数の最適値? 1.4 闇雲に台数を増や せばキャッシュが有効 に機能しない 実際のトラフィックを分 析すると10台程度 までが最適台数 1.2 20 1 15 0.8 10 キャッシュミス率 一台あたりの負荷 5 0.6 0.4 0.2 0 0 0 10 20 30 40 50 60 70 80 90 100 負荷分散サーバ台数 2004/12/03 1台 あ た り の 負 荷 キ ャ ッ シ ュ ミ ス 率 (%) 25 (注)OCNの実トラフィックの場合 22 11 まとめ Authoritative Serverが注目されがちだが、 Cache Serverも非常に大切 Cache Serverは自分で自分の身を守る Queryの中身にも敏感に 2004/12/03 23 12