Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

DNS over Tor

最終更新 Markdown で表示Agent セットアップ

通常の DNS クエリを送ると、ISP と DNS リゾルバーの両方に、あなたの IP アドレスと照会したドメインが見えます。Cloudflare の Tor Onion サービスは、DNS クエリを Tor ネットワーク経由で送るため、直接リクエストするより匿名性が大きく高まります。リゾルバーはあなたの IP アドレスを見ることがなく、ISP もドメイン名の解決を試みたことを特定できません。

このサービスの詳細は、ブログ記事を参照してください。

Tor クライアントのセットアップ

トラフィックを IP アドレスへ直接送る通常の DNS モードとは異なり、Tor ネットワークは IP アドレスを露出させずにトラフィックをルーティングします。そのため、隠しリゾルバーへの接続はすべて Tor クライアント経由にする必要があります。

始める前に、Tor Project のサイトから Tor クライアントをダウンロードしてインストールしてください。Tor Browser を使う場合は、127.0.0.1:9150SOCKS プロキシが自動的に起動します。

コマンドラインから Tor を使う場合は、次の設定ファイルを作成します。

SOCKSPort 9150

次のコマンドで Tor を起動できます。

tor -f tor.conf

また、Tor Browser を使っている場合は、リゾルバーのアドレスを開くと、いつもの 1.1.1.1 のページが表示されます。

https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/

1.1.1.1 のアドレスを忘れた場合は、cURL で取得できます。

curl -sI https://tor.cloudflare-dns.com | grep -i alt-svc
alt-svc: h2="dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion:443"; ma=315360000; persist=1

socat でローカル DNS プロキシをセットアップする

すべての DNS クライアントが Tor ネットワークへ直接接続できるわけではありません。socat は、ローカルポートを Tor プロキシ経由で転送し、DNS 対応ソフトから隠しリゾルバーへ到達できるようにします。

DNS over TCP、TLS、HTTPS

隠しリゾルバーは TCP ポート 53(DNS over TCP)とポート 853(DNS over TLS)で待ち受けます。Tor プロキシを用意したあと、特権ユーザーで次の socat コマンドを実行します。プロトコルに応じて PORT を 53 または 853 に設定してください。

PORT=853; socat TCP4-LISTEN:${PORT},reuseaddr,fork SOCKS4A:127.0.0.1:dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion:${PORT},socksport=9150

以降は、1.1.1.1 のセットアップの通常手順に従えます。ただし、常に 1.1.1.1 ではなく 127.0.0.1 を使ってください。別のデバイスからプロキシへアクセスする場合は、socat コマンド内の 127.0.0.1 をローカル IP アドレスに置き換えます。

DNS over HTTPS

ブログ記事で説明しているとおり、推奨する方法は DNS over HTTPS(DoH)です。DNS クエリ全体を HTTPS 接続内で暗号化します。セットアップ手順は次のとおりです。

  1. DNS over HTTPS クライアントで 1.1.1.1 に接続するの手順に従って cloudflared をダウンロードします。

  2. Tor SOCKS プロキシを起動し、socat で TCP:443 を localhost へ転送します。

socat TCP4-LISTEN:443,reuseaddr,fork SOCKS4A:127.0.0.1:dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion:443,socksport=9150
  1. マシンで .onion アドレスを localhost として扱うようにします。
cat << EOF >> /etc/hosts
127.0.0.1 dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion
EOF

このコマンドを複数回実行した場合は、競合を避けるため /etc/hosts の重複エントリを削除してください。

  1. 最後に、ローカルの DNS over UDP デーモンを起動します。
cloudflared proxy-dns --upstream "https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/dns-query"
INFO[0000] Adding DNS upstream                           url="https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/dns-query"
INFO[0000] Starting DNS over HTTPS proxy server          addr="dns://localhost:53"
INFO[0000] Starting metrics server                       addr="127.0.0.1:35659"

役に立ちましたか?