v2rayNでWebサイトを開くと、国内サイトだけ名前解決が遅い、海外サイトが時々開けない、またはルール分流を設定したのに想定と違うDNSサーバーが表示されることがあります。これはノードへの接続失敗ではなく、ドメイン名をIPアドレスへ変換するDNSリクエストが、どの経路から送信されているかによって起こります。v2rayNのDNS設定では、国内ドメインをローカルまたは国内DNSへ送り、海外ドメインをリモートDNSへ送る構成を作れます。ただし、名前解決の経路と、実際のWeb通信の経路は別々に確認する必要があります。
この記事では、v2rayN 7.xとXrayコアを基準に、国内DNSとリモートDNSを使い分ける考え方、設定画面の確認項目、ルーティングルールの順序、設定後の検証方法を整理します。画面名はマイナーバージョンや日本語化の状態によって多少異なるため、「設定」→「パラメーター設定」→「DNS」または「ルーティング設定」に相当する項目を探してください。
国内サイトは応答の近い国内DNS、海外サイトやプロキシ対象ドメインはノード経由のリモートDNSへ振り分ける方法を説明します。DNSサーバーの登録だけで終わらせず、ルールの順序、システムプロキシ、ブラウザーのセキュアDNS、ログとコマンドによる確認まで順番にチェックします。
v2rayNのDNS設定で変わる名前解決の経路
ブラウザーがURLを開くと、まずドメイン名をDNSリゾルバーへ問い合わせます。応答としてIPv4のAレコードやIPv6のAAAAレコードを受け取った後、ブラウザーは対象アドレスへTCPまたはUDP接続を開始します。v2rayNでプロキシを有効にしていても、DNS問い合わせが必ずノード経由になるとは限りません。アプリがOSの名前解決機能を直接使用している場合、ルーターやネットワーク事業者が提供するDNSへ問い合わせが送られることがあります。
システムプロキシは主にHTTPまたはSOCKS接続をクライアントへ渡す仕組みです。一方、DNSはUDP 53番、TCP 53番、DoTの853番、DoHの443番など、別の通信として処理されます。TUNモードを使う場合はDNSパケットも取り込めますが、DNSルールとアウトバウンドの指定が適切でなければ、取り込んだ後に直接接続される可能性があります。
国内DNSを使う目的は、国内サービスの名前解決を近いリゾルバーで処理し、応答遅延や地域判定の不一致を減らすことです。リモートDNSは、プロキシ対象のドメインをノードと同じ側のネットワークから解決したい場合に使用します。どちらが常に高速とは限らないため、DNS応答時間だけでなく、接続先の到達性、返されるIPアドレス、実際のページ読み込みも確認してください。
国内DNSとリモートDNSを使い分ける基準
最初から多数のルールを登録すると、どの設定が結果に影響したのか分からなくなります。まずは国内ドメイン、プロキシ対象ドメイン、LANやローカルホストという3つのグループに分けると管理しやすくなります。国内サイトは国内DNS、海外サイトやプロキシ経由にしたいサイトはリモートDNS、ルーターやプリンターなどのローカル宛先はローカル解決という考え方です。
| 対象 | DNSの選択 | 通信の選択 | 確認するポイント |
|---|---|---|---|
| 国内サイト | 国内DNS | 直接接続 | 応答遅延と地域向けIP |
| 海外サイト | リモートDNS | プロキシ | ノード側から解決できるか |
| LAN機器 | システムDNS | 直接接続 | 192.168.x.xなどの到達性 |
| 広告・不要ドメイン | ブロック用DNSまたは拒否 | ブロック | アプリのログに拒否記録があるか |
国内向けDNS
- 用途
- 国内サイトと国内サービス
- 経路
- 直接接続またはローカル
- 優先確認
- 応答速度と地域判定
- 注意点
- 海外ドメインを混在させない
国内通信を直接接続する構成では、DNSだけでなくルーティングの出口も国内側になっているか確認します。
リモートDNS
- 用途
- 海外サイトとプロキシ対象
- 経路
- ノード経由
- 優先確認
- DNS問い合わせの到達性
- 注意点
- DNS自体の直通を許可しない
リモートDNSを登録しただけでは不十分です。DNSタグとプロキシ用アウトバウンドが実際に関連付けられている必要があります。
v2rayNでDNS分割を設定する手順
設定を始める前に、動作確認済みのノードを1つ選び、通常のシステムプロキシでWebアクセスできる状態にします。最初からTUN、FakeDNS、ブラウザーのセキュアDNSを同時に変更すると、障害の原因を特定しにくくなります。以下では、まずv2rayNのDNS設定を確認し、その後に必要な場合だけTUNやブラウザー側の設定を調整します。
-
コアを確認する
v2rayNを開き、「設定」→「パラメーター設定」またはコア関連の画面で、使用中のコアがXrayであることを確認します。Xrayのバージョン、現在のルーティングモード、システムプロキシのHTTPポートとSOCKSポートも記録します。
-
DNS画面を開く
「設定」→「パラメーター設定」→「DNS」または「ルーティング設定」内のDNS項目を開きます。既存のDNSをすぐ削除せず、現在のサーバー、アドレス、タグ、モードを先に控えてください。
-
2系統を登録する
国内向けのDNSとリモートDNSを別々のエントリーとして登録します。リモートDNSはクライアントやコアが対応するDoH、DoT、またはノード経由のDNSを使用し、同じ名前や同じタグを重複させないようにします。
-
ルールを割り当てる
国内ドメインのルールには国内DNS、プロキシ対象ドメインのルールにはリモートDNSを指定します。ルールの上位に広すぎる「すべてを国内DNS」の条件があると、後続の海外ドメインルールへ到達しません。
-
保存して再起動する
設定を保存し、必要に応じてXrayコアを再起動します。ブラウザーのDNSキャッシュも残るため、既存タブを閉じて新しいウィンドウで確認してください。TUNを使う場合は、仮想アダプターが正常に作成されたこともログで確認します。
v2rayNの画面によっては、DNSサーバーの登録とドメイン別のDNSルールが別の場所に表示されます。登録画面でサーバーを追加しただけでは、すべての問い合わせが自動的に分割されるとは限りません。サーバーを識別するタグ、ルールの対象、DNSを実行するアウトバウンドの3点がつながっているかを確認してください。
設定後にDNS経路を確認する
確認では、同じブラウザー、同じネットワーク、同じノードを使い、設定前と設定後の結果を比較します。まず国内ドメインを数件、次にプロキシ対象の海外ドメインを数件開きます。DNS検査サイトの表示だけで判断せず、v2rayNのログ、Windowsの名前解決結果、ページの出口アドレスを組み合わせて見ます。
nslookup example.jp
nslookup example.com
ipconfig /displaydns
nslookupはシステムDNSの確認には役立ちますが、v2rayNのXrayコアが内部DNSを使用している場合、その結果がコア内部の問い合わせ先と一致しないことがあります。したがって、コマンドの結果だけでリモートDNSが使われていないと決めつけないでください。コアのログレベルを一時的に上げ、DNS問い合わせ、ルール一致、選択されたアウトバウンドを確認する方が確実です。
結論:DNSの表示地域だけで成功判定しない
設定の成功条件は、国内ドメインと海外ドメインが意図したDNSへ送られ、さらに後続の通信も指定した直接接続またはプロキシ経路へ進むことです。DNS検査ページの地域表示が変わらなくても、ルール一致とログの出口が正しければ設定目的を達成している場合があります。
- 国内サイトだけ失敗する:国内DNSが応答しない、国内ドメインがリモートDNSへ送られている、または直接接続ルールが誤っている可能性があります。
- 海外サイトだけ失敗する:リモートDNSが直通で遮断されている、DNSタグが未指定、またはプロキシ用アウトバウンドが選ばれていない可能性があります。
- 設定後も以前の結果が表示される:ブラウザー、OS、コアのDNSキャッシュを疑います。コアを再起動し、ブラウザーを完全終了してから再検査します。
- 一部アプリだけ挙動が違う:そのアプリがシステムプロキシやTUNを利用していない、または独自のDoHを使っている可能性があります。
よくある失敗と安全な戻し方
DNS分割では、ルールの順序が最も多い原因です。「すべてのドメインを国内DNSへ送る」条件を上位に置くと、海外サイト用の条件は評価されません。逆に、海外向けの広い条件を上位に置くと、国内サービスまでリモートDNSで解決されます。最初は対象を少数のドメインに限定し、ログで期待どおりに一致した後にグループを広げてください。
国内DNSはどのアドレスを使えばよいですか?
利用中のネットワークで安定して応答する国内リゾルバーを選びます。公開DNSを複数登録する場合も、最初は2つ程度に絞り、応答時間と誤った地域判定がないかを比較してください。
リモートDNSに変えてもDNS検査結果が変わりません
ブラウザーのセキュアDNSが独自のDoHを使っていないか確認します。さらに、v2rayNのDNS設定が実際のコア設定へ反映されているか、コア再起動後のログでDNSルールを確認してください。
DNS設定後に国内サイトが遅くなりました
国内ドメインがリモートDNSへ送られていないか、リモートDNSの応答待ちが発生していないかを調べます。変更前の設定へ戻し、国内DNSだけの構成で比較すると原因を切り分けやすくなります。
TUNを使わないとDNS分割はできませんか?
システムプロキシに対応したアプリであれば、TUNなしでもコアのDNS設定を利用できます。ただし、アプリが独自DNSを使う場合や、システムプロキシを無視する場合は、TUNによる取り込みが必要になることがあります。
設定を元に戻す場合は、まずDNS分割ルールを無効にし、標準のDNSエントリーを1つだけ残します。その後、コアを再起動して国内サイトと海外サイトを1件ずつ確認し、最後にブラウザーのセキュアDNSやTUNを元の状態へ戻します。複数の設定を同時に変更せず、変更単位ごとに動作を確認することが、v2rayNのDNSトラブルを短時間で解決する近道です。