FakeDNS が仮想 IP で実際の名前解決を置き換える仕組みと設定方法を解説します。TUN 透過プロキシを設定中で、ドメインルールによる振り分けを維持したい方に最適です。読了後には、自分の環境で有効化すべきかの判断と、有効化後の確認手順が身につきます。
1 回のリクエストの全体像:FakeDNS はどこで介入するのか
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 は 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 のままで構いません。
- ドメイン解決ポリシーは AsIs を維持:FakeDNS がクエリを引き取った後は、ルーティングはドメインで照合するため、ローカルで先に IP へ解決する必要がありません。
- IPOnDemand には変更しない:変更するとカーネルが照合段階で実際の名前解決を開始してしまい、FakeDNS による往復削減の効果が失われます。
- ルーティングルールには geosite:cn の直接接続を残す:中国国内ドメインは fake リストに入れず、直接接続のトラフィックに影響を与えません。
v2rayN と v2rayNG での有効化手順
v2rayN デスクトップ版
- メニューの場所
- 設定 → パラメータ設定
- グループ
- ルーティング設定
- スイッチ
- FakeDNS を有効化
- カーネルの要件
- Xray カーネル
- 反映方法
- コアを再起動
ドメイン解決ポリシーは AsIs を維持し、IPOnDemand に変更しないでください。
v2rayNG Android 版
- メニューの場所
- 設定 → DNS 設定
- スイッチ
- FakeDNS を有効化
- カーネルの要件
- Xray カーネル
- 反映方法
- 戻ったらアプリを再起動
v2fly カーネルも address が fake の DNS エントリを認識します。v2flyNG ユーザーはカスタム設定で有効化できます。
どちらのクライアントでも、このスイッチはカーネルが生成する設定にのみ作用します。変更後は必ずコアまたはアプリを再起動してください。再起動しないと DNS モジュールは以前の状態のまま動作します。
有効化後に最初に行うべきは、中国国内のサイトへアクセスして、直接接続され fake に引き取られていないことを確認することです。この手順で domains フィルタの書き間違いを早期に発見でき、海外サイトを直接試すよりも効果的です。
FakeDNS を有効化すべきでない 4 つのケース
- システムプロキシモード:アプリはすでにドメインをプロキシへ渡しており、ルーティングはもともとドメインで照合できます。FakeDNS は仮想 IP への変換が増えるだけで、メリットはありません。
- 社内・ローカルネットワークの名前解決:NAS、プリンター、社内ドメインの解決結果がルーティング不能な仮想 IP に置き換えられ、フォールバック解決に依存するため、そのまま失敗することも少なくありません。
- ローカル DNS ツール:AdGuard Home や自前の DoH などによる広告ブロックやローカルネットワークの名前解決が fake に迂回され、フィルタリングルールが効かなくなります。
- IP ルール主体の設定:仮想 IP は CIDR や IP ルールに一致しないため、振り分け結果が期待と異なります。
判断基準はただ 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 透過プロキシのシナリオだけなので、システムプロキシモードではオフのままで構いません。