この記事では、DNSルックアップについて、その概要、仕組み、およびオンラインプライバシーや検閲に与える影響について解説します。

DNSルックアップとは、ブラウザのアドレスバーにお客様が入力したURL(人間が読めるドメイン名)を、対応するIPアドレスと照合するプロセスのことです。

インターネットに直接接続するすべてのデバイスは、IPアドレスと呼ばれる数値ラベルによって識別されます。私たち人間が理解しやすくするために、このアドレスは読みやすく覚えやすいドメイン名を使用して識別することもできます。Domain Name System(DNS)は、これらのドメイン名を対応するIPアドレスにマッピングします。

IPアドレスについてより詳しく

例えば、Proton VPNのウェブサイトではドメイン名としてprotonvpn.comを使用しており、これはIPアドレス「185.159.159.140」に対応しています。お客様がブラウザのURLバーにwww.protonvpn.comを入力すると、コンピューターが理解できるように、ドメイン名が対応するIPアドレスに変換される必要があります。

この変換はDNSを使用して行われます。そのため、お客様がprotonvpn.comと入力すると、DNSがドメイン名をIPアドレス「185.159.159.140」に変換します。これにより、お客様のブラウザは正しいウェブサイトを特定して接続することができます。

ドメイン名は純粋に人間の利便性のために存在しており、インターネットが機能するために必須のものではありません。お客様がIPアドレスを覚えることができれば、それを直接入力することも可能です。実際に試してみるには、ブラウザのURLバーに「185.159.159.140」と入力するだけで、Proton VPNのウェブサイトに移動します。

DNSルックアップの仕組み

DNSはしばしば、ドメイン名と対応するIPアドレスを照合する電話帳に例えられます。これはDNSの役割を理解する上で便利な比喩ですが、実際の仕組みはより複雑です。

DNSリゾルバー

お客様がブラウザのURLバーにドメイン名を入力すると、DNSリゾルバー(DNSリカーサー、または単にDNSサーバーとも呼ばれる)と呼ばれる特別なサーバーにDNSクエリが送信されます。

その名の通り、DNSリゾルバーはドメインに対応するIPアドレスを取得してお客様のブラウザに送り返すことで、DNSクエリを「解決(リゾルブ)」します。アクセスしたいウェブサイトのIPアドレスが判明したことで、ブラウザはサイトに接続できるようになります。

ここまでは簡単です。しかし、DNSリゾルバーはどのようにしてドメインの正しいDNSアドレスを取得しているのでしょうか(新しいドメインが絶えず作成され、IPアドレスがドメインに動的に割り当てられて頻繁に変更されることを考えると、このプロセスは複雑になります)。

DNSを使用してドメインが解決される仕組み

トップレベルドメイン(新しいウィンドウ)(TLD)のDNSルックアップは、通常以下の手順で行われます。

1. お客様がブラウザ of URLバーにprotonvpn.comを入力します。ブラウザはインターネット経由でこのクエリをDNSリゾルバーに送信します。

2. DNSリゾルバーは、DNSルートネームサーバーにクエリを送信します。これは、TLD(.comや.netなど、あるいは.chや.ukなどの国コードTLD)に関する情報を保持するサーバーです。今回のクエリ(protonvpn.com)の場合、DNSルートネームサーバーは「.com」のTLDネームサーバーを指し示します。

3. この情報を得たDNSリゾルバーは、すべての.comドメインのリストを管理している.com TLDネームサーバーにクエリを送信します。TLDネームサーバーは、そのドメインの権威ネームサーバー(Authoritative name server)のIPアドレスを返します。

4. DNSリゾルバーは、そのドメインの権威ネームサーバーにクエリを送信できるようになります。これは通常、GoDaddyやNamecheapなど、ドメイン名のリースや管理を行うドメイン名登録業者(レジストラ)(新しいウィンドウ)によって運営されています。権威ネームサーバーはドメインに関する最終的な情報源であり、IPアドレスをDNSリゾルバーに返すことができます (今回のケースでは「185.159.159.140」となります)。

5. DNSリゾルバーは正しいIPアドレスをお客様のブラウザに送信し、ブラウザは185.159.159.140に接続できるようになります。

DNSの仕組み

実際には、状況はもう少し複雑です。例えば、多くのドメインは複数のIPアドレス(IPv4アドレスとIPv6アドレスの両方を含む)に関連付けられており、サブドメイン(blog.protonvpn.comなど)にアクセスする場合は、追加の手順が発生します。

また、プロセス全体を通じて、お客様のブラウザ、DNSリゾルバー、各種ネームサーバーなど、すべての段階で情報が日常的にキャッシュ(ローカルに保存)されます。必要な情報がキャッシュ内に見つかった場合はリクエストが送信されないため、一部の手順が省略されます。

しかし、本質的には、これが標準的なウェブサイト訪問におけるDNSの仕組みです。

DNS、検閲、政府による監視

デフォルトでは、お客様のブラウザはDNSクエリを、お客様のインターネットサービスプロバイダ(ISP)が運営するDNSリゾルバーに送信します。ISPはさまざまな方法でお客様のインターネット上での活動を把握できますが、最も簡単で安価な方法は、単にお客様のDNSクエリを監視することです。

ほとんどの政府による大量監視プログラムは、ISPに対して顧客のブラウジング履歴のログを保存することを義務付けています。アンド、それが簡単かつ安価であるため、ほとんどのISPはDNSログのみを保存することでこの法的義務を果たしています。

同様に、政府が社会的、宗教的、政治的、あるいは「道徳的」な理由でインターネットコンテンツを検閲しようとする場合、国内のISPにそれらのブロックの実行を求めます。そして、これを行う最も簡単な方法は、指定されたウェブサイトやアプリへのDNSクエリをブロックすることです。

サードパーティDNSサービス

このような検閲や監視の少なくとも一部を回避する一つの方法は、Cloudflare「1.1.1.1」やOpenNICなどのサードパーティDNSリゾルバーを使用することです。

これらのサービスの一部は優れたプライバシーポリシーを掲げている場合がありますが、DNSリゾルバーサーバーへの接続がDNS over TLS(DoT)またはDNS over HTTPS(DoH)を使用して暗号化されていない限り、お客様のISPが調べようと思えば、プレーンテキスト(平文)でリクエストを見ることができます。

DNSクエリを暗号化すると、ISPがお客様のブラウジング履歴を監視することが難しく(その結果、コストが高く)なりますが、ISPが望めば、接続しているウェブサイトやアプリを追跡することは依然として比較的容易です。

Proton VPNを入手!

DNSとVPN

VPN(Proton VPNなど)を使用している場合、VPNサーバーへの接続は暗号化されます。お客様のISPは、少し調べればお客様がVPNサーバーに属するIPアドレスに接続したことは確認できますが、それ以上のことはわかりません。

DNSクエリはVPNトンネルを介して送信され、独自のDNSリゾルバーを運営している、あるいはサードパーティのVPNリゾルバーを使用しているVPNプロバイダーによって解決されます。DNSクエリはVPNユーザーからではなく、VPNサーバーから発信されているように見えるため、プライバシー上の問題はありません。

VPNの仕組みについて詳しく見る

いずれにせよすべてのDNSクエリは暗号化されたVPNトンネルを介して送信されるため、VPNの使用中に暗号化されたDNSは不要であることに留意する価値があります。

また、サードパーティのDNSリゾルバーをVPNと併用することはお勧めしません。このようにシステムを設定すると、DNSクエリがVPNトンネルの外を通ってサードパーティのDNSリゾルバーに送信される可能性があります。

DNS漏洩防止についてより詳しく

NetShield Ad-blocker

Proton VPNは、すべてのアプリでNetShield Ad-blockerを提供しています。これは、広告会社、オンライントラッカー、およびマルウェアに属することが知られているドメインへのDNSクエリをブロックするDNSフィルタリング機能です。この機能(および他の同様のDNSフィルタリングサービス)は、ブロックリストに登録されたドメインへのDNSクエリの解決を単に拒否することによって、DNSリゾルバーレベルで動作します。

NetShield広告ブロッカーについてより詳しく学ぶ

技術的には、これはDNS漏洩(以下を参照)に該当します。DNSクエリが暗号化済みであり、お客様がそのDNSリゾルバーを信頼している場合、これは大きな問題ではないかもしれませんが、不要なサードパーティを介することになり(したがって、潜在的な弱点となる可能性があります)、状況を複雑にします。

DNS漏洩

VPNを使用する場合、すべてのDNSクエリはVPNトンネルを経由して送信され、VPNプロバイダーによって解決される必要があります。何らかの理由でDNSクエリがVPNトンネルの外側にあるサードパーティのDNSリゾルバーに送信された場合、DNS漏洩が発生したことになります。IPv6のDNSリクエストをVPNトンネル経由で正しくルーティングできないことは、DNS漏洩の一般的な原因です。

このサードパーティはお客様のISPである可能性が高いため、DNS漏洩は深刻なプライバシー上の懸念事項となります。言うまでもなく、すべてのProton VPNアプリには強力なDNS漏洩防止機能が組み込まれています。

一般的なDNSレコードの種類

検索可能な主なDNSレコードの種類は以下の通りです:

  • A(アドレス)レコード:ドメイン名をIPv4アドレスにマッピングします。例:example.com → 192.0.2.1
  • AAAA(クアッドA)レコード:ドメイン名をIPv6アドレスにマッピングします。例:example.com → 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • CNAME(正規名)レコード:ドメイン名を別のドメイン名にマッピングし、実質的に一方の名前をもう一方の別名にします。例:www.example.com → example.com
  • MX(メールエクスチェンジ)レコード:ドメインに代わってメールを受信する役割を担うメールサーバーを指定します。例:example.com → mail.example.com(優先度10 — 優先度の数値は優先設定を示し、値が低いリクエストが優先されます)。
  • PTR(ポインター)レコード:IPアドレスをドメイン名にマッピングし、主に逆引きDNS検索に使用されます。例:192.0.2.1 → example.com
  • NS(ネームサーバー)レコード:ドメインの権威ネームサーバーを指定します。例:example.com → ns1.example.com、ns2.example.com
  • SOA(Start of Authority)レコード:プライマリーネームサーバー、ドメイン管理者のメール、ドメインのシリアル番号(複数のDNSサーバー間でDNSデータを管理および同期するのに役立ちます)、再読み込み、再試行、有効期限切れタイマーなど、ドメインに関する重要な情報を提供します(例:example.com → ns1.example.com、admin.example.com、2024041501)
  • TXT(テキスト)レコード:任意のテキストデータを保持し、多くの場合、メール検証(SPFやDKIMなど)やその他の検証目的で使用されます。例:example.com → “v=spf1 include:example.com ~all”
  • SRV(サービス)レコード:SIP(新しいウィンドウ)インターネット電話プロトコルや、XMPP(新しいウィンドウ)メッセージングプロトコルなど、特定のサービスのサーバーの位置を指定します。例:_sip._tcp.example.com → 0 5 5060 sipserver.example.com
  • CAA(送信ドメイン認証認証局制限)レコード:ドメインに対してどの認証局(CA)が証明書を発行することを許可されているかを指定します。例:example.com → 0 issue “letsencrypt.org”
  • NAPTR(Naming Authority Pointer)レコード:URL解決や、VoIPなどのさまざまなサービスのリライトルールの定義に使用されます。例:example.com → 100 50 “s” “SIP+D2U” “” _sip._udp.example.com
  • DNSKEY:DNSSEC(DNSにセキュリティレイヤーを追加するために設計された仕様群)で使用される公開署名鍵が含まれます。
  • 。例:example.com → 256 3 13 …
  • DS(Delegation Signer)レコード:DNSSECにおける委任を保護するため、DNSKEYレコードのハッシュを保持します。例:example.com → 12345 13 2 …
  • SPF(Sender Policy Framework)レコード:ドメインに代わってメールを送信することを許可されているIPアドレスを定義するために使用されます。例:example.com → “v=spf1 ip4:192.0.2.0/24 -all”

DNS検索コマンド

DNSコマンドは、DNSサーバーやレコードのクエリ、テスト、トラブルシューティングに使用されます。これらのコマンドは、DNSがドメイン名をIPアドレスに解決するために不可欠であるため、ネットワーク管理者がDNSサービスが正しく機能していることを確認するために欠かせません。

以下は、よく使用されるDNSコマンドの一部です。これらのコマンドは、ターミナルウィンドウ(Linux)、ターミナル(macOS)、コマンドプロンプト(cmd)またはPowerShell(Windows)、あるいはモバイルデバイス上のターミナルエミュレーターアプリで実行できます。すべてのコマンドが最初からプラットフォームで利用できるわけではありませんが、ほとんどの場合、簡単にインストールできます。

nslookup

nslookupコマンドは、DNSにクエリを実行してドメイン名またはIPアドレスのマッピングを取得するためのツールです。また、使用する特定のDNSサーバーを指定したり、逆引きDNS検索を実行したりすることもできます。

nslookup

dig

dig(Domain Information Groper)コマンドは、nslookupよりも強力で柔軟なDNS IP検索ツールです。詳細な出力と高度なオプションがあるため、ネットワーク管理者に好まれることがよくあります。

dig

digを使用すると、特定のDNSレコードタイプへのクエリ、特定のDNSサーバーへのクエリ、および逆引きDNS検索の実行も可能です。

host

hostコマンドは、DNS検索を実行するためのもう1つのツールです。digよりもシンプルですが、特定のDNSサーバーへのクエリや 逆引きDNS検索を含む、基本的なタスクに十分な情報を提供します。

host

ping

pingコマンドは主にIPネットワーク上でのホストの到達可能性を確認するために使用されますが、その動作の一部としてDNS解決も実行します。

ping

traceroute / tracert

traceroute(LinuxおよびmacOSの場合)およびtracert(Windowsの場合)コマンドは、送信元から送信先までのパケットのパスを追跡するために使用されます。ドメイン名をIPアドレスに解決し、目的地までの途中の各ホップを表示します。

traceroute

ipconfig / ifconfig

ifconfig(LinuxおよびmacOSの場合)およびipconfig(Windowsの場合)コマンドは、システムが使用しているDNSサーバーを含むネットワーク構成を表示するために使用できます。単独で使用すると、アクティブなインターフェースのみが表示されます。Windowsで構成の全インターフェースを表示するには、ipconfig /allを使用します。

ipconfig

DNS検索ツール

上記で説明したようなコマンドラインツールのほかに、グラフィカルユーザーインターフェース(GUI)でDNSを照会できるオンラインDNS検索ツールが数多く存在します。好例として、通常のDNS検索、MX検索、NS検索、CNAME検索、およびTXT検索を実行できる、当社の無料の安全なIPスキャナーがあります。

DNS検索

また、逆引きDNS検索(IP検索)を実行することもできます。

逆引きDNS検索

最終的な考え

本来、DNSは複雑で自動化された電話帳にすぎません。人間がインターネットを使えるようにするものですが、政府によって市民を監視し、閲覧内容を検閲するために悪用される(そして実際に悪用されている)可能性があります。このようなDNSの悪用を回避する最善の方法は、Proton VPNなどのVPNサービスを使用することです。

VPNサービスはお客様のISPの代わりにDNSクエリを安全に解決し、ほとんどの信頼できるVPNサービスは、お客様のプライバシーを保護することを義務としています。

もちろん、VPNには、アクセスするウェブサイトから実際のIPアドレスを隠すことや、ISPがインターネットアクティビティを監視・検閲するのを防ぐ保護機能の強化、旅行中にお気に入りのコンテンツをストリーム再生できることなど、他にも多くのメリットがあります。

VPNを使用するメリットについてより詳しく