検索結果にオリジンではなくCDNが表示される理由
訪問者
ドメインを検索
CDNエッジ
104.21.x.x
DNSが返すのはこれ
オリジンサーバー
実際のIPは非公開
CDNがオリジンIPを隠す理由と、その意図
有名なウェブサイトを検索して、サーバーのアドレスが返ってくると期待したのに、CloudflareやFastly、Akamaiに属するアドレスが返ってきた。そんなとき、何も問題は起きていません。ドメインが公開している内容をそのまま見ているのであり、本当のサーバーのアドレスは、そもそもDNSに載っていなかったのです。
検索結果にオリジンではなくCDNが表示される理由
訪問者
ドメインを検索
CDNエッジ
104.21.x.x
DNSが返すのはこれ
オリジンサーバー
実際のIPは非公開
CDNが実際に行っていること
コンテンツ配信ネットワーク(CDN)は、世界中に分散配置されたサーバー群です。すべての訪問者が1台のオリジンサーバーに接続する代わりに、最も近いCDNのノードに接続します。ノードは、キャッシュ済みのコンテンツを直接配信し、持っていないものはオリジンから取得します。
パフォーマンス面の理屈は単純です。シンガポールの訪問者がバージニアのサーバーに接続すると、すべてのリクエストで往復約200ミリ秒の遅延が生じます。シンガポールのエッジノードなら、キャッシュ済みのコンテンツについては、これを数ミリ秒に短縮できます。
これを機能させるには、ドメインがオリジンではなくCDNに解決される必要があります。これは副作用ではなく、仕組みそのものです。DNSがオリジンのアドレスを返してしまえば、訪問者はそこに直接接続し、CDNはまったく関与しなくなります。
CDNのアドレスを見分ける方法
- 逆引きでプロバイダー名が分かる。アドレスが
*.cloudflare.com、*.fastly.net、*.cloudfront.netのような名前に解決されます。詳しくは 逆引きDNS をご覧ください。 - 同じアドレスが、無関係な多数のサイトを提供している。エッジノードは、設計上、共有インフラです。
- 場所によって答えが異なる。ジオルーティングによって最も近いノードに誘導されるため、問い合わせる場所によってアドレスが変わります。
CNAMEがプロバイダーのホスト名を指している。www.example.com CNAME example.com.cdn.cloudflare.netのようなレコードは、疑う余地がありません。
dig +short example.com
dig +short -x 104.21.32.472つ目のコマンドは逆引き検索です。プロバイダーのホスト名が返れば、答えが分かります。
オリジンが意図的に隠されている理由
隠すことは、副産物ではありません。対価を払ってでも手に入れる、セキュリティ上の特性です。
| 脅威 | オリジンを隠すことで得られる効果 |
|---|---|
| DDoS攻撃 | 攻撃トラフィックは、単一のサーバーではなく、CDNの処理能力に向かいます。大規模なサイトがCDNを使う最大の理由です。 |
| 直接的な攻撃 | 攻撃者は、見つけない限りオリジンに到達できないため、スキャンや探査はエッジに向かいます。 |
| WAFの迂回 | オリジンに直接到達できてしまうと、エッジのファイアウォールルールは、すべて単純に飛ばされてしまいます。 |
| レート制限の回避 | エッジで適用されるレート制限は、その背後に接続されると回避できてしまいます。 |
検索結果が意味すること
変わるのは、答えの読み方であって、答えが正しいかどうかではありません。
重要なポイント
検索で分かるのは、このドメインのトラフィックが、現時点でどこに向けられているかです。CDNを前段に置いたサイトでは、それがエッジであり、それこそが、正しく、役に立つ、唯一の公開された答えです。
実際の影響は、次のとおりです。
- ジオロケーションは意味を持たない。エッジノードの都市が示すのは、あなたがどこにルーティングされたかであり、事業者やそのデータがどこにあるかではありません。
- 逆引きIP検索はノイズになる。無関係な数千のドメインが、正当に1つのエッジアドレスを共有しています。
- アドレスは安定しない。CDNはエッジのアドレスを絶えず割り当て直します。ハードコードしたり、それを前提にファイアウォールのルールを作ったりしないでください。
- ブロックすると全員をブロックする。共有されたエッジアドレスをブロックすると、そのノードの背後にあるすべてのサイトに影響します。
それでもオリジンを探そうとすることについて
オリジンサーバーの正体を暴く手法を解説した記事は存在します。過去のDNSアーカイブ、証明書の透明性ログ、CDNの背後に移し忘れたサブドメイン、オリジンから送信されたメールのヘッダーなどです。
これらはすべて、対象が犯したミスを突くもので、CDNを打ち破るものではありません。そして、誰かがオリジンを隠した理由は、たいてい攻撃を受けているからです。ほかの組織のインフラを調べて、その組織が意図的に導入した保護を破ろうとすることは、中立的な行為ではありません。多くの法域では、合法でもありません。
検索ツール では、任意のドメインの公開レコードセット全体を CNAME の連鎖も含めて確認できます。サイトがそもそもCDNを前段に置いているかどうかを確かめる、たいてい最も手早い方法です。
ドメインの公開DNSアドレスを調べたい場合は、Domain IP Lookupツールをお試しください。
よくある質問
関連記事
1つのホスト名に複数のAレコード
1つ目の回答
93.184.216.34
2つ目の回答
93.184.216.35
3つ目の回答
93.184.216.36
リゾルバーはすべてのレコードを返し、通常は順序をローテーションする
1つのドメインに複数のIPアドレスがある理由
1つの名前に複数のアドレスを生む仕組みは4種類あります。それぞれの違いが分かれば、自分の結果が他の人と異なる理由も説明できます。
解決したアドレスの背後にある実体
共有IP
1アドレスに多数のサイト、Hostヘッダーで判別
専用IP
自分専用。逆引きDNSを管理できる
CDNエッジ
オリジンではない。エッジが接続を終端
共有IPと専用IPアドレス:どちらが必要?
正直な答えは、ほとんどのウェブサイトに専用IPは不要です。本当に重要になるのはどんなときか、そしてうたわれているメリットのうち、どれが誤解なのかを解説します。
再帰的なDNS検索を1ホップずつ見る
ブラウザー
example.comを要求
リゾルバー
ISP / 1.1.1.1
ルート + TLD
.comの管理元は?
権威サーバー
正式な回答
この連鎖の各ホップはそれ自体がDNS検索で、結果はその後キャッシュされます
ウェブサイトのIPアドレスを調べる5つの方法
オンラインツール、ping、nslookup、dig、開発者ツール。ドメインを解決する5つの方法を、Windows、macOS、Linux向けの正確なコマンドとともに紹介します。