FakeDNS とは?Xray カーネルによる仮想 IP 解決の仕組みと有効化すべきケース

FakeDNS は 198.18.0.0/15 の予約済みレンジから仮想 IP を一時的に返し、実際の名前解決をアウトバウンド段階まで遅延させます。本記事では、介入する位置、設定の書き方、クライアントでの有効化手順、そして有効化すべきでない 4 つのケースを解説します。

この記事の要点

FakeDNS が仮想 IP で実際の名前解決を置き換える仕組みと設定方法を解説します。TUN 透過プロキシを設定中で、ドメインルールによる振り分けを維持したい方に最適です。読了後には、自分の環境で有効化すべきかの判断と、有効化後の確認手順が身につきます。

1 回のリクエストの全体像:FakeDNS はどこで介入するのか

アプリがリクエストを送信DNS クエリが傍受される仮想 IP が返される仮想 IP へ接続ドメインを逆引きしてルールに照合プロキシ経由で送信し解決

FakeDNS を無効にしている場合、アプリはまずシステムの DNS サーバーへドメインの実 IP を問い合わせ、取得後に接続を確立します。TUN モードではカーネルは IP パケットしか見えないため、その IP がどのルールにも一致しなければドメイン情報は失われ、振り分けは IP ルールで補うしかありません。

FakeDNS を有効にすると、DNS クエリは Xray の DNS モジュールが受け取ります。上流の DNS サーバーへ実アドレスを問い合わせる代わりに、198.18.0.0/15 レンジから空き IP を 1 つ選んで返し、メモリ上のマッピングテーブルに「ドメイン → 仮想 IP」を記録します。

アプリが接続するのはこの仮想 IP です。トラフィックが TUN インターフェースに入ると、ルーティングエンジンは宛先が FakeDNS レンジに含まれることを検知し、マッピングテーブルから元のドメインを逆引きします。geosite や domain などのルールはそのまま一致し、対応するアウトバウンドへ振り分けられます。

実際の DNS 解決はアウトバウンド段階まで遅延され、プロキシサーバーがリモート側で行います。プロキシ経由のトラフィックでは、ローカルでの DNS 往復が 1 回減り、接続確立も速くなります。

FakeDNS の本質は「DNS クエリをプロキシへ転送する」ことではなく、「ローカルでは解決せず、アウトバウンド時に解決する」ことです。削減される 1 回の往復は、仮想 IP によってアプリが即座に接続を開始できることに由来します。

仮想 IP プール:198.18.0.0/15 はどこから来て、なぜ衝突しないのか

198.18.0.0/15
デフォルトの仮想 IP プール
131072
プール内の利用可能アドレス
1 回
削減されるローカル DNS 往復

198.18.0.0/15 は 198.18.0.0 から 198.19.255.255 まで、合計 131072 アドレスをカバーします。このレンジは RFC 2544 でネットワーク機器の性能テスト用に予約されており、パブリックサービスが配置されることはないため、仮想アドレスとして使っても実在のサイトと衝突しません。

マッピングテーブルはメモリ上に常駐し、接続終了後はエントリが回収されます。デフォルトのプールで日常利用には十分です。Xray ではルートレベルの fakedns の pool フィールドでレンジを変更することもできますが、通常はデフォルトのままで問題ありません。

設定の書き方:fake サーバーエントリとルートレベルの fakedns フィールド

{
  "dns": {
    "servers": [
      "https://1.1.1.1/dns-query",
      {
        "address": "fake",
        "domains": ["geosite:geolocation-!cn"]
      }
    ]
  }
}

1 つ目は通常の DoH サーバーで実際の名前解決を担当し、2 つ目の address が fake のエントリが仮想 IP を配布します。domains フィルタでどのドメインを fake に通すかが決まります。上記の書き方では海外ドメインだけが仮想 IP を受け取り、中国国内のドメインは 1.1.1.1 で通常どおり解決されます。

servers 配列を手動で編集したくない場合、Xray 1.8.0 以降ではルートレベルの fakedns フィールドを直接書けます。これは fake サーバーエントリを自動的に注入するのと同等で、設定を細かくいじらずオン・オフだけ切り替えたいユーザーに向いています。

{
  "fakedns": {
    "pool": "198.18.0.0/15",
    "skipFallback": false
  }
}

skipFallback はフォールバック動作を制御します。false の場合、fake エントリが引き取らなかったドメインはリスト内の他の DNS サーバーへ引き継がれます。true の場合は即座に失敗を返します。日常ではデフォルトの false のままで構いません。

v2rayN と v2rayNG での有効化手順

v2rayN デスクトップ版

メニューの場所
設定 → パラメータ設定
グループ
ルーティング設定
スイッチ
FakeDNS を有効化
カーネルの要件
Xray カーネル
反映方法
コアを再起動

ドメイン解決ポリシーは AsIs を維持し、IPOnDemand に変更しないでください。

v2rayNG Android 版

メニューの場所
設定 → DNS 設定
スイッチ
FakeDNS を有効化
カーネルの要件
Xray カーネル
反映方法
戻ったらアプリを再起動

v2fly カーネルも address が fake の DNS エントリを認識します。v2flyNG ユーザーはカスタム設定で有効化できます。

どちらのクライアントでも、このスイッチはカーネルが生成する設定にのみ作用します。変更後は必ずコアまたはアプリを再起動してください。再起動しないと DNS モジュールは以前の状態のまま動作します。

有効化後に最初に行うべきは、中国国内のサイトへアクセスして、直接接続され fake に引き取られていないことを確認することです。この手順で domains フィルタの書き間違いを早期に発見でき、海外サイトを直接試すよりも効果的です。

FakeDNS を有効化すべきでない 4 つのケース

判断基準はただ 1 つです。トラフィックが TUN インターフェースを経由し、かつ振り分けがドメインルール主体であること。この 2 つの条件のどちらかが欠けると、FakeDNS のメリットはごく小さく、副作用で接続できなくなる可能性があります。

有効化する前に、現在のドメイン解決ポリシーと DNS サーバー一覧をメモしておきましょう。FakeDNS の問題は DNS 設定に起因することがほとんどなので、控えを残しておけば素早く復元できます。

有効化後の確認方法とよくある問題

FakeDNS が機能しているか確認するには、コアのログを見るのが最も直接的です。有効化後に海外サイトへアクセスすると、ログに次のような記録が現れるはずです。

2026/07/24 10:32:11 [Info] [TCP] dialing to target:198.18.0.7:443 via proxy

宛先アドレスが 198.18.x.x であれば、この接続が実際に仮想 IP を使っていることを示します。さらにルーティングログで逆引きされたドメインを確認すれば、FakeDNS とドメインルールの両方が正常に動作していると判断できます。

FakeDNS を有効にしたら、中国国内の直接接続サイトがかえって遅くなった?

中国国内ドメインも fake に引き取られている可能性があります。fake エントリの domains を海外ドメインの集合(例:geosite:geolocation-!cn)に絞り、中国国内ドメインは通常の DNS サーバーで解決するようにしてから、コアを再起動して確認してください。

TUN モードで特定のアプリに接続できない?

そのようなアプリは通常、宛先 IP を検証したり、カスタム UDP を使用したりしています。そのアプリ専用の直接接続ルールを追加するか、プロセス単位で除外して、そのアプリのトラフィックを TUN 経由にしないようにしてください。FakeDNS を全体で無効化する必要はありません。

FakeDNS を無効にするとすべて正常になる場合、原因はどこにある?

多くの場合、DNS サーバーの順序か domains フィルタの書き間違いです。まず DNS 設定をデフォルトに戻し、そのうえで「海外ドメインは fake、中国国内ドメインはローカル解決」の順に 1 つずつ追加し直してください。変更は一度に 1 箇所だけ行います。

システムプロキシモードで有効化する必要はある?

必要ありません。システムプロキシではアプリはすでにドメインを v2rayN に渡しており、ルーティングはドメインのまま照合されます。FakeDNS のメリットが成立するのは TUN 透過プロキシのシナリオだけなので、システムプロキシモードではオフのままで構いません。

v2rayN ダウンロード