最終更新日:2022-04-12 13:36:16
ドメイン名の通常リゾリューションはDNSプロトコルに基づいており、ローカルのDNSサーバーがドメインをリアルサーバーのアドレスに解析します。リゾリューションはローカルDNSサーバーに依存しており、ISPやアタッカーによって乗っ取られやすいのです。スケジューリングに関しては、CDNプロバイダーはローカルDNSのIPに基づいて、位置とISPを特定しますが、これは実際のユーザーIPではない上に、精度も低いのです。
このような状況に対し、CDNetworksはローカルのDNSサーバーの代わりに、CDNetworksのHTTPDNSクラスターからドメイン解析するためのHTTPDNSを展開し、DNS乗っ取りを効果的に防止しています。スケジューリングはリアルユーザーのIPに基づいているため、精度がより高くなります。
乗っ取り防止やスケジューリングの精度が求められるシーンに適用できます。
HTTPDNSは、従来のDNSプロトコルの代わりに、HTTPで解析結果を送るため、DNSレイヤーの乗っ取りや誤動作を効果的に回避することができます。クライアントがCDNetworks HTTPDNSクラスターに「DNSクエリ」のリクエストを送ると、CDNetworks HTTPDNSクラスターは、リクエストに含まれるドメインとIP情報をもとに、CDN内部のスケジューリングシステム(Global System Load Balancing)でDNS結果を検索します。そして、クライアントにベストのPOP IPアドレスを返答します。クライアントがベストのPoP IPアドレスを取得すると、ベストのPoP IPアドレスにHTTPリクエストを送ります。
図1 HTTPDNSのワークフロー
HTTPDNSサービスは、ターミナルをお持ちのお客様のみが利用可能です。DNSリクエストを置き換えるため、HTTPDNS SDKをユーザーのターミナルにインストールする必要があります。HTTP DNS機能は、2つの方法によって実現できます。
リクエストURLには:クエリする加速ドメイン+エンドユーザーIPアドレス
URLの形式:
curl “http://server ip/v1/httpdns/clouddns?ws_domain= www.example.com &ws_ret_type=json&ws_cli_IP=1.1.1.1 "
サーバーIP:CDNetworks HTTPDNSクラスターのIPアドレスで、海外で使用されるanycast IP:220.242.54.8。
ws_domain: エンドユーザーがリクエストするドメイン。
ws_cli_IP: クライアントのIPアドレスは空欄にして構いません。(空欄の場合、HTTPDNSは自動的にクライアントIPとなる接続IPを取得します)
ws_ret_type: リターンパケットの形式。パラメータ値がjsonの場合、リターンパケットはjson形式となります。パラメータを持たないリクエストの場合、リターンパケットは従来のIP TTL形式となります。
URLの形式:
curl –H “host: edge.wshttpdns.com” “https://[server IP/server domain name]/v1/httpdns/ws_domain=www.example.com& ws_ret_type=json&ws_cli_IP=1.1.1.1” –k
ホスト:お客様は、ホストを当社のサーバーアドレスに繋ぐ必要があります。“edge.wshttpdns.com”
サーバーIP:CDNetworks HTTPDNSクラスターのIPアドレスで、海外で使用されるanycast IP:220.242.54.8。
ws_domain: エンドユーザーがリクエストするドメイン。
ws_cli_IP: クライアントのIPアドレスは空欄にして構いません。(空欄の場合、HTTPDNSは自動的にクライアントIPとなる接続IPを取得します)
ws_ret_type: リターンパケットの形式。パラメータ値がjsonの場合、リターンパケットはjson形式となります。パラメータを持たないリクエストの場合、リターンパケットは従来のIP TTL形式となります。
また、CDNetworks HTTPDNSはマルチドメインクエリーに対応しており、同じHTTPDNSリクエストを通じて、複数のドメインリクエストを送信できるのです(リクエストされたドメインはセミコロンで区切られる)。また、その応答はこれらのドメインの記録Aとなります。HTTPリクエストのURL形式:http://service IP/?ws_domain=www. example1.com;www. example2.com&ws_ret_type=json