なぜ OpenWrt + Clash TUN なのか

スマートフォンや PC ごとに Clash クライアントを入れる運用は、端末数が増えるほど管理コストが上がります。ゲーム機、スマート TV、IoT 機器はそもそもプロキシ設定に非対応なことも多く、ルーター側で一度だけ透明プロキシを構築する方が現実的です。

OpenWrt はルーター向け Linux ディストリビューションで、OpenClash はその上で動く Clash(Mihomo 内核)管理パネルです。TUN モードを有効にすると、ルーター内に仮想 NIC が作られ、LAN からの TCP/UDP が Clash のルールエンジンを通過します。端末は通常どおり DHCP で IP を取得するだけで、ゲートウェイが自動的に最適なノードへ分流してくれます。

用語整理:本記事の「グローバル透明プロキシ」は、LAN 内の全端末(または指定 VLAN)の通信を、ルーター上の Clash が意識させずに中継することを指します。各端末にプロキシポートを設定する必要はありません。

ハードウェア要件と事前準備

OpenClash + TUN はルーターの CPU・メモリに負荷がかかります。安定運用の目安は次のとおりです。

  • RAM:512 MB 以上(1 GB 以上推奨)
  • フラッシュ:128 MB 以上(パッケージとログ用)
  • CPU:デュアルコア 1 GHz 級以上、または x86 軟ルーター
  • ファームウェア:OpenWrt 23.05 以降、または ImmortalWrt 等の互換派生

代表的な対応機種には GL.iNet(MT6000 等)、FriendlyElec NanoPi R4S/R5S、x86 軟ルーター(2 GB RAM 以上)があります。128 MB RAM の旧型ルーターでは TUN を避け、Redir-Host のみに留めるか、専用の軟ルーターへ移行することをおすすめします。

作業前に以下を用意してください。

  • ルーター管理画面(LuCI)または SSH へのログイン情報
  • 有効な Clash 形式サブスクリプション URL(または設定ファイル)
  • PC からルーター LAN 口へ有線接続(初期設定時の切断防止)
  • 設定バックアップ(sysupgrade -b または LuCI のバックアップ機能)
フラッシュ書き込みやパーティション変更はブリックのリスクがあります。必ず公式手順に従い、電源断のない環境で作業してください。

OpenClash のインストール

OpenClash は LuCI アプリとして提供されています。インストール方法は大きく二つあります。

方法 A:Release パッケージを直接導入

  1. OpenClash GitHub Releases から、自分の OpenWrt アーキテクチャに合った luci-app-openclash_*.ipk をダウンロードする。
  2. LuCI → システム → ソフトウェア → 「アップロード」で ipk をインストールする。または SSH で opkg install /tmp/luci-app-openclash_*.ipk を実行。
  3. 依存関係エラーが出た場合は、同リリースに含まれる依存 ipk を先にインストールする。

方法 B:カスタム software feed を追加

作者が提供する software feed を /etc/opkg/customfeeds.conf に追記し、opkg update の後 opkg install luci-app-openclash で導入する方法もあります。アーキテクチャ(aarch64、x86_64 等)が feed と一致していることを確認してください。

インストール後、LuCI メニューに「サービス → OpenClash」が表示されます。初回起動ウィザードで Mihomo(Meta)内核 を選択し、コアのダウンロードが完了するまで待ちます。内核バージョンはサブスクリプションの仕様(VLESS、REALITY 等)と整合させてください。

デスクトップ向けの基本操作はClash 完全ガイドで解説しています。ルーター設定の前に、PC 上でサブスクリプションが正常か確認しておくとトラブルが減ります。

サブスクリプションとコア設定

OpenClash の「設定管理 → 配置文件订阅」でサブスクリプション URL を追加します。

  • 更新間隔:12〜24 時間(過度な自動更新はフラッシュを消費します)
  • ダウンロード後、ノード数が 0 でないか LuCI のノード一覧で確認
  • カスタムルールを使う場合は「规则附加」または上書き用の custom.yaml を用意

実行設定の要点は次のとおりです。

# OpenClash LuCI 上の推奨項目(概念)
运行模式: 混合模式 / TUN 模式
内核: Mihomo (Meta)
启用 IPv6: 按需(双栈环境なら DNS も IPv6 対応)
日志级别: info(障害時は debug に一時変更)

ポリシーグループ名はサブスクリプション提供者によって異なります。ログ画面で実際のグループ名(例:🚀 节点选择PROXY)を確認し、後述のルールで同じ名前を参照してください。ゲーム向けの低遅延選定についてはClash ゲーム加速 TUN 設定も参照できます。

TUN 透明プロキシの有効化

OpenClash では「运行模式」で透明プロキシの方式を選びます。

モード 概要 向いている環境
TUN モード 仮想 NIC で全トラフィックをキャプチャ UDP 多用・プロキシ非対応端末が多い全屋
混合モード(Mix) TUN + Redir の併用(OpenClash 推奨のことが多い) 互換性と性能のバランス
Redir-Host iptables/nftables リダイレクト 低スペック機・TUN 非対応時

TUN を有効にする際の LuCI 設定例です。

  • 启用 Tun 模式:オン
  • DNS 端口劫持 / 启用 DNS 劫持:オン(透明プロキシとセット)
  • 绕过中国大陆 IP:国内向け DIRECT を有効にする場合はオン
  • 自动设置防火墙:オン(手動 nftables を書く場合はオフ)

設定 YAML 側では Mihomo の tun ブロックが生成されます。参考例:

tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
  mtu: 9000

dns-hijack により、LAN 端末がルーター以外の DNS(8.8.8.8 直叩き等)を使おうとしても、Clash の DNS モジュールへ誘導できます。これが DNS 漏洩を防ぐうえで重要です。

TUN 有効化後にルーターが高負荷になる場合、ハードウェア Offload(SFE、Flow Offload)を LuCI で無効にしてください。パケットがハードウェア経路を通ると Clash が見えなくなることがあります。

DNS 設定と分流ルール

ルーター透明プロキシで最も多い失敗原因は DNS の誤設定 です。国内サイトが遅い・開けない場合、まず DNS を疑ってください。

dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://dns.google/dns-query
    - tls://1.1.1.1:853
  fallback-filter:
    geoip: true
    geoip-code: CN

OpenClash の「绕过配置」や「自定义 DNS」で上記に近い構成を選べます。分流ルールの基本形は次のとおりです。

rules:
  - DOMAIN-SUFFIX,google.com,🚀 节点选择
  - DOMAIN-SUFFIX,youtube.com,🚀 节点选择
  - DOMAIN-SUFFIX,netflix.com,🚀 节点选择
  - GEOIP,CN,DIRECT
  - MATCH,🚀 节点选择

DOMAIN / GEOIP / MATCH の優先順位や記法の詳細はClash ルール構文ガイドを参照してください。ルールの順序を入れ替えると、意図しないノードや DIRECT 振り分けが発生します。

ゲートウェイ配信と LAN 設定

全屋端末を透明プロキシ下に置くには、クライアントがルーターをデフォルトゲートウェイ兼 DNS サーバーとして使う必要があります。

標準 DHCP 配下(推奨)

  • LuCI → ネットワーク → DHCP で、LAN のゲートウェイがルーター自身であることを確認
  • DHCP Option 6(DNS サーバー)をルーター LAN IP(例:192.168.1.1)に設定
  • 「仅代理常用端口」をオフにし、全屋キャプチャを有効にする(OpenClash の該当オプション名はバージョンで異なる場合あり)

特定端末だけプロキシしたい場合

OpenClash の「访问控制」で MAC アドレスや IP 範囲を指定し、対象端末のみプロキシ、それ以外は DIRECT にする運用が可能です。ゲスト Wi-Fi を別 VLAN に分離し、プロキシ対象外にする構成も安全です。

動作確認手順

  1. スマートフォンの Wi-Fi 詳細で、ゲートウェイと DNS がルーター IP か確認
  2. ブラウザで海外サイトと国内サイトの両方を開く
  3. OpenClash「运行日志」で、接続が意図したポリシーグループ経由か確認
  4. nslookup google.com 192.168.1.1(ルーター IP)で DNS がルーター経由か検証

トラブルシューティング

症状 想定原因 対処
インターネット完全不通 ファイアウォールルール競合、内核クラッシュ OpenClash を停止し、/etc/init.d/openclash stop で復旧。設定を段階的に再有効化
海外のみ不通 ノード失効、サブスクリプション期限切れ サブスクリプション手動更新、別ノードでテスト
国内サイトが遅い GEOIP ルール不足、DNS が海外向け GEOIP,CN,DIRECT を確認、国内 DNS を nameserver 先頭に
一部アプリのみ失敗 UDP 未キャプチャ、QUIC 問題 TUN/Mix モードへ変更、アプリ側で「プロキシ無効」QUIC をオフ
ルーター再起動後に無効 サービス未自動起動 LuCI で OpenClash の「开机自启」を有効化

ログが読みにくい場合は、一時的に debug レベルに上げ、問題のドメインや IP を特定してから DOMAIN / IP-CIDR ルールを追加します。ループや DNS ポイズニングが疑われるときは、PC 上の Clash Verge で同じサブスクリプションを試し、ルーター固有の問題か切り分けてください(クライアント比較記事も参考になります)。

よくある質問

OpenWrt ルーターに最低どのくらいのスペックが必要ですか?

OpenClash と TUN モードを安定稼働させるには、RAM 512 MB 以上・フラッシュ 128 MB 以上が目安です。x86 軟ルーターや RAM 1 GB 級の ARM ルーターが推奨されます。128 MB RAM の旧型では TUN を避け、Redir-Host のみの運用を検討してください。

TUN モードと Redir-Host、どちらを選べばよいですか?

TUN(または Mix)は UDP を含む全トラフィックを仮想 NIC で処理でき、ゲーム機・スマート TV などプロキシ非対応端末にも有効です。Redir-Host はリソース消費がやや少ない一方、一部プロトコルで相性問題が出ることがあります。全屋・多様な端末なら TUN を優先してください。

設定後に国内サイトが開けなくなるのはなぜですか?

DNS が海外サーバーに固定されている、または GEOIP,CN,DIRECT ルールが欠けている場合に発生します。国内 DNS を優先し、fake-ip と fallback を正しく組み合わせてください。

各端末にプロキシアプリを入れなくても使えますか?

はい。ルーターがゲートウェイ兼 DNS として TUN 透明プロキシを提供すれば、LAN 内の端末は通常の DHCP のまま利用できます。これが全屋構成の最大の利点です。

単一デバイス向けの商用 VPN アプリは設定が簡単ですが、分流ルールやノード単位の制御はほぼできません。OpenWrt + Clash(Mihomo)なら、DOMAIN / GEOIP ベースの精密分流、複数プロトコル(Shadowsocks、Trojan、VLESS 等)、url-test による自動ノード選択をルーター一台で実現できます。初期構築の手間はありますが、家族全員の端末を一元管理できる点で、上級ユーザーには Clash 系ルーター構成が依然として有力です。

すべてのプラットフォームで Clash を無料ダウンロード →