web-dev-qa-db-ja.com

Cloudflareが直接IPアドレスアクセスを無効にできるのは何ですか?

CloudflareがインストールされているWebサイトにIPアドレスを使用してアクセスすると、次のメッセージが表示されます。

Error 1003
Direct IP access not allowed


What happened?

You've requested an IP address that is part of the Cloudflare network.
A valid Host header must be supplied to reach the desired website.

私は学生です。

  1. CloudflareがIPアドレスへの直接アクセスをブロックできるのは何ですか?
  2. DNSはIPアドレスの上の層ではありませんか?はいの場合、CloudflareはDNSサービスですが、CloudflareにIPアドレスをブロックする機能があるのはなぜですか?
8
alexandre1985

Cloudflareのセットアップに特別なものはありません。これは単なるHTTPのプロパティです。

クライアントがURLを開く場合、3つの重要なステップがあります。

  1. 必要に応じて、ホスト名をIPアドレスに変換するDNS(または他の解決方法)を作成します。 URLがホストのIPアドレスを指定している場合は、それを使用します。
  2. 既知のポート番号でIPアドレスに接続します(通常、URLでオーバーライドされている場合を除きます)。
  3. サーバーにページを要求し、希望するホスト名を含めます。

古典的な例は次のようになります:

GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org

多くのWebサイトが存在する大規模なホストについて考えてみます。簡単にするために、単一のIPアドレスがあるとします。何百ものドメイン名がこのアドレスに解決されます。サーバーはどのページを配信するかをどのように決定しますか?これは、HTTPリクエストでクライアントから提供されたホストの詳細を使用します。持っていない、または提供したくないものを要求すると、エラー応答が返されます。

あなたの場合、リクエストにはホスト指定子のIPアドレスが含まれています。

GET /whatever HTTP/1.1
Host: a.b.c.d

ホストがIPアドレスで指定されている場合、非常に多くのホストがページを提供しないことを決定します。ここでCloudflareについて特別なことは何もありません。また、DNSとは関係ありません。これは、サーバーがIPアドレスで指定されたホストへの要求に応答する方法に関するものであり、このエラーメッセージでA valid Host header must be supplied

このようにサーバーを構成する方法を説明する答えは次のとおりです: https://serverfault.com/a/607222

この種の動作は、Telnetを使用してサーバーに接続し、HTTP要求を手動で発行することで簡単に確認できます。

PS。同じ一般的な回答がHTTP[〜#〜] s [〜#〜]リクエストに適用されますが、 サーバー名表示 を使用します=セットアップで。 HostがHTTP 1.1(1997)に付属していることは注目に値します。それ以前は、ここで説明するメカニズムは存在せず、サーバーは、クライアントが正当にIPアドレスに解決する名前を要求したのか、またはIPアドレスで直接ホストを要求したのかを確実に判断する方法がありませんでした。これはWebサイトの爆発的な成長のための重要な開発であったため、多くの古いクライアントがHostを送信するように更新されました。 [詳細を入手してくれたコメント投稿者に感謝します。]

20
jonathanjo

接続しようとしているシステムのhttpd構成に複数のサイトがリストされています。

HTTPサーバーがホストしているさまざまなサイトを区別できる唯一の方法は、直接URLを使用することです。

それらのサイトはCloudFlareのハードウェアでホストされているため、希望するエラーを提供できます。 CDN(コンテンツ配信ネットワーク)は、いくつかの要因に基づいて、ネットワーク全体で最も近いキャッシュされたコピーに接続をシフトします。

CloudFlareがサービスとして提供するものを見ると、セットアッププロセスの一部として、ドメインのDNSレコードをDNSサーバーに再ポイントし、DNSサーバーがCDNシステムのみを利用することを確認できます。開発者として、CDNを使用している場合でも、実際のホストがどこにあるかがわかっていて、それらに直接連絡できるため、顧客はそのアクセス権を失います。

これは、ホストをDDos攻撃から隔離するのにも役立ちます。インフラストラクチャ全体がCDNネットワーク内でホストされていない限り、CDNは引き続きコンテンツをホストに接続します。

1
Rowan Hawkins