routing.json
マッチ順にトラフィックの出口を設定する
まずプライベートアドレスとローカルドメインをダイレクトのアウトバウンドへ送り、残りの宛先をプロキシのアウトバウンドへ振り分けます。ルーティングルールは上から順に評価され、最初に一致した時点で処理が終わるため、対象範囲が限定されたルールを前に置きます。v2rayNの「中国本土をバイパス」はプリセットのルールセットであり、システムプロキシのスイッチではありません。システムプロキシがアプリの通信をクライアントへ送り、ルーティングモジュールが実際の出口を決めます。変更後は設定を保存してコアを再起動し、古いルールがプロセス内に残らないようにします。
{
"domainStrategy": "IPIfNonMatch",
"rules": [
{ "ip": ["geoip:private"], "outboundTag": "direct" },
{ "domain": ["geosite:cn"], "outboundTag": "direct" },
{ "domain": ["geosite:geolocation-!cn"], "outboundTag": "proxy" }
]
}
subscription.profile
更新対象を現在のグループに限定する
まず各サブスクリプションに識別しやすいメモを付けてから、グループ更新を実行します。複数のサブスクリプションを併用する場合、設定名だけで出所を判断せず、仕事用、テスト用、日常用を固定グループに分け、それぞれにフィルターを設定します。更新後も設定数が変わらない場合は、現在のグループ、包含キーワード、除外キーワード、サブスクリプションアドレスを順番に確認します。古い設定を削除する前に新しい項目の解析が完了していることを確認し、更新後に選択中の項目が対応する記録を失わないようにします。
group.name = "daily"
subscription.update = true
filter.include = "VLESS|VMess|Trojan"
filter.exclude = "expired|test"
profile.keep_selected = true
dns.json
DNSの問い合わせ経路をルーティングルールに合わせる
ドメインをローカルで解決するか、指定サーバーへ問い合わせるかを先に決め、その後で問い合わせ戦略を設定します。サーバーアドレスを置き換えるだけでは、解決経路の不整合は解消できないことがあります。ドメインの解決結果が誤ったルートへ送られる場合は、domainStrategy、DNSサーバーのマッチドメイン、アウトバウンドタグも確認します。FakeDNSを有効にする前に、アプリの通信がTUNで処理されていることを確認してください。通常のシステムプロキシ環境では設定をシンプルに保ち、システムキャッシュ、ブラウザのセキュアDNS、クライアントDNSが同時に関与する状態を避けます。
{
"queryStrategy": "UseIP",
"servers": [
{ "address": "localhost", "domains": ["geosite:cn"] },
{ "address": "https+local://1.1.1.1/dns-query" }
]
}
tun.settings
システムプロキシを読み取らないアプリを取り込む
TUNモードは、システムプロキシ設定に従わないネットワーク通信を受け取るために使用します。有効にする前に他の仮想ネットワークアダプターを終了し、管理者権限でクライアントを起動して、自動ルーティングと厳密なルーティングの設定を確認します。LAN内の機器にアクセスできない場合、すぐにグローバルモードへ切り替えず、プライベートネットワークがダイレクトルールに残っているか確認します。ドメインは解決できるのに接続できない場合は、MTU、IPv6経路、DNSの取り込み範囲を確認します。切り分け中は一度に一つの項目だけ変更し、ログから変化の原因を特定しやすくします。
tun.enabled = true
tun.auto_route = true
tun.strict_route = false
tun.mtu = 1500
route.private_network = direct
inbound.sniffing
接続からドメインを復元してルーティングに利用する
トラフィックスニッフィングは、HTTPやTLSなどの接続から宛先ドメインを抽出し、もともとIPしか含まないリクエストにもgeositeルールを適用できるようにします。まずスニッフィングを有効にし、対象を必要なプロトコル範囲に限定してください。汎用的なコンテンツ分析機能と考えるべきではありません。有効化後に特定のアプリの接続動作が不安定になった場合は、そのアプリの通信を一時的にダイレクトへ送って比較し、ドメインまたはプロセスルールで対象範囲を絞ります。スニッフィングが解決するのはルーティング識別の問題であり、DNS設定やシステムプロキシ設定の代わりにはなりません。
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"],
"routeOnly": true
}
outbounds.json
安定したタグでルーティングと出口をつなぐ
カスタムアウトバウンドを設定する際は、まず一意のタグを決め、そのタグをルーティングルールから参照させます。基本構成はプロキシ、ダイレクト、ブロックの3つの出口です。複雑な構成ではチェーンプロキシや指定インターフェースを追加できますが、既存のタグ名を何度も変更しないでください。タグを変更した場合、それを参照するすべてのルールも同時に更新する必要があります。設定を起動できないときは、まずコアログにあるフィールドのパスを確認し、プロトコル設定、トランスポート層のパラメーター、タグ参照を重点的に確認します。ノードを連続して切り替えて構造上の誤りを隠さないようにしてください。
"outbounds": [
{ "protocol": "freedom", "tag": "direct" },
{ "protocol": "blackhole", "tag": "block" },
{ "protocol": "vless", "tag": "proxy" }
]