なぜゲームだけ挙動が読みにくいのか

Steam クライアントやゲーム本体は、ブラウザほど「HTTP プロキシ前提」の振る舞いをしません。ストア表示や一部の更新は TCP 中心でも、ボイスチャット・マッチメイキング・P2P 系の通信では UDP が前面に出ます。ここで「ルールは書いたのにゲームだけ通らない」「ping が跳ねる」といった違和感が生じやすいのは、レイヤー(システムプロキシだけ/TUN で全域)とプロトコル(TCP/UDP)の両方を同時に見ないと判断が難しいからです。

本稿のゴールは、万能プリセットを提示することではなく、UDPTUNルールセットをどの順で疑うと現場の切り分けが速くなるかを整理することです。クライアント選定の比較軸は クライアントの選び方 に譲り、ここではゲーム特有の論点に絞ります。

前提:TUN の仕組みや DNS・fake-ip との関係は TUN モードの詳解 がベースになります。ルールの書き方全般は ルール分流のベストプラクティス とセットで読むと、本稿の「どこにルールセットを挿すか」が腹落ちしやすくなります。

UDP が Steam・オンライン対戦で重要な理由

UDP は「届いたかどうかを厳密に再送する」よりも、低遅延を優先する用途向けです。ボイスや一部の同期信号、マッチング補助の問い合わせなど、ゲーム実装ごとに使われ方は異なりますが、共通しているのはプロキシやルールが UDP を正しく中継できないと、症状が「黙って失敗」に見えやすい点です。TCP のページ読み込みのように、ブラウザの開発者ツールだけでは追いにくいことが多いです。

Clash 側では、利用するノードのプロトコル(例:Shadowsocks、VMess、Trojan など)とコアの設定が、UDP を許容・中継する前提になっている必要があります。ここが曖昧なまま「ルールだけ増やす」と、表層のドメインは合っているのに実パケットが別経路になる、というズレが残ります。

TUN がゲーム向けに効く理由

システムプロキシは、対応アプリ・対応 API に限定され、ゲーム実行ファイルがそもそもプロキシ設定を読まないケースがあります。一方 TUN モードは、OS の仮想インターフェース側でトラフィックをコアへ寄せる発想なので、「ゲームがプロキシを知らない」問題を経路の外側から補いやすくなります。オンライン協力・対戦で取りこぼしを減らしたいときは、まず TUN が実際に有効か(アダプタ・権限・他 VPN との競合)を確認するのが実務的です。

ただし TUN は強力な分、すべてのフローがルールに乗る前提になります。だからこそ次節のルールセットで、Steam や CDN、更新ドメインを先に束ねておくと、「ゲームは直結・ストアだけプロキシ」といった意図がブレにくくなります。

YAML reference (core version may differ)
tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true

stack の選択は環境差が大きいです。コアのドキュメントと手元の体感(遅延・CPU)を見ながら調整してください。GUI が config.yaml を生成する場合、エディタ直編集と二重管理にならないよう注意が必要です。

ルールセットで Steam 名前空間を束ねる

ルールセット(rule-providers)は、巨大なドメインリストを RULE-SET として参照する仕組みです。Steam まわりは steampowered.comsteamcommunity.comsteamstatic.com、CDN 系のサフィックスなど、一括で DOMAIN-SUFFIX に載せたい名前空間が複数あります。手書きでも可能ですが、メンテ性と抜け漏れ防止の観点では、信頼できるコミュニティ集合体を rule-providers として取り込み、rules: の上位に RULE-SET を置くパターンが現場では扱いやすいです。

重要なのはルールの順序です。Clash は上からマッチした時点で確定するため、LAN やローカル明示的に直結させたい帯域を先に置き、そのあとに RULE-SET、最後に GEOIPMATCH という形が一般的です。詳細な書き方は ルール分流のベストプラクティス の「順序」の節を参照してください。

Conceptual snippet (placeholders)
rule-providers:
  steam:
    type: http
    behavior: domain
    url: "https://example.com/rules/steam.yaml"
    path: ./ruleset/steam.yaml
    interval: 86400

rules:
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - RULE-SET,steam,SteamPolicy
  - GEOIP,JP,DIRECT
  - MATCH,Final

上記の SteamPolicy は、利用者の購読に合わせたプロキシグループ名に置き換えてください。実際の URL やファイル名は、利用するルール配布元のポリシーと更新頻度に従います。

設定の順番(実務向けチェックリスト)

現場で迷子になりにくい順番を、短いチェックリストにまとめます。

  1. クライアントとコアを揃える:Mihomo 系であること、GUI が参照している config.yaml が一つに定まっていることを確認する。
  2. モードは Rule を既定に:まずはルールベースで、意図しない全体プロキシ化を避ける。
  3. TUN を有効化し、実際にアダプタが立つか確認する:権限・他 VPN・ルート競合は よくある質問 の接続性の項も参照。
  4. Steam 系の名前空間をルールセットまたは DOMAIN-SUFFIX で束ねる:ストア・コミュニティ・CDN の取りこぼしを減らす。
  5. ライブ接続で UDP がコアに載っているか観測する:「ルールに見えているが実フローが別」というケースを潰す。
  6. 対戦が不安定なら、一旦ゲームを DIRECT に寄せて比較する:ノード起因か、ローカル NAT・ルール順の問題かを切り分ける。

直結とプロキシ:どちらを選ぶか

「Steam ストアの閲覧だけ海外ノード、ゲームの対戦は国内直結」はよくある方針です。ポイントは意図をルールに忠実に写すことです。ストアとゲーム本体で宛先が分かれる場合、ドメインだけで片付けられないトラフィックは IP ルールGEOIP に流れます。ここで DNS が海外側の IP を返すと、意図せずプロキシ側へ寄ることがあるため、名前解決とルールの整合FAQ と併せて確認してください。

一方で、地域制限のあるタイトルや、特定のフレンド機能だけ別経路にしたい場合は、プロキシ側の特性(遅延・UDP の扱い・ピーク時の混雑)が勝負になります。ルールが正しくても、ノードが UDP に不向きだと体感は改善しません。

遅延と切断を減らすための微調整

体感の遅延は、単一パラメータでは説明できません。次を変数として扱うと整理しやすいです。物理距離と混雑(ノード)、プロトコル(UDP 対応と実装)、TUN の stackDNS の返答ルールの順序。一度に全部いじらず、ログで「どの接続がどのルールに落ちたか」を見ながら一つずつ変えるのが安全です。

また、家庭内の 二重 NAT やルーターのゲーム向けオプション、OS のファイアウォールが、Clash 以前の段階で詰まっていることもあります。クライアント側の設定だけが原因とは限らない点に留意してください。

よくある症状とログの見方

マッチングは成立しない/ロビーに入れない:UDP がコアに届いていない、または意図しない DIRECTREJECT に落ちている可能性があります。ライブ接続でプロセス名・プロトコル・マッチしたルールを確認してください。

ping は良いのにボイスだけ劣化:別ポート・別ホストに UDP が分かれているケースがあります。ルールセットの網羅性と DNS の返答を疑います。

TLS や timeout ばかりがログに出る:ゲーム以前に確立できていない可能性があるため、timeout と TLS のログ解説 の切り分けを流用し、まず基礎接続を安定させます。

コンプライアンス:オンラインゲームの利用規約やネットワークポリシーでプロキシやトンネルが禁止されている場合があります。本稿は許可された環境での技術整理であり、規約違反を助長する意図はありません。

まとめ

Clash Steam 連携で検索しがちな論点は、UDP がゲームの体感に直結すること、TUN で実行ファイルのプロキシ非対応を補えること、そして ルールセット で Steam 系の名前空間を先に束ねて順序事故を減らすこと、の三つに集約できます。個々のプリセットよりも、観測→順序→ノード特性のループを回せるかどうかが、遅延と切断対策の鍵になります。

同じ Mihomo 系でも UI の見え方はクライアントで異なります。長期運用では、ログの読みやすさとルール編集のしやすさが効いてきます。比較の観点は クライアント比較 を参照してください。

Clash を無料ダウンロードし、TUN とルールセットを同じ文脈で扱えるクライアントから、負担の少ない切り分けを始めましょう。