なぜ OpenWrt + Clash TUN なのか
スマートフォンや PC ごとに Clash クライアントを入れる運用は、端末数が増えるほど管理コストが上がります。ゲーム機、スマート TV、IoT 機器はそもそもプロキシ設定に非対応なことも多く、ルーター側で一度だけ透明プロキシを構築する方が現実的です。
OpenWrt はルーター向け Linux ディストリビューションで、OpenClash はその上で動く Clash(Mihomo 内核)管理パネルです。TUN モードを有効にすると、ルーター内に仮想 NIC が作られ、LAN からの TCP/UDP が Clash のルールエンジンを通過します。端末は通常どおり DHCP で IP を取得するだけで、ゲートウェイが自動的に最適なノードへ分流してくれます。
ハードウェア要件と事前準備
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 パッケージを直接導入
- OpenClash GitHub Releases から、自分の OpenWrt アーキテクチャに合った
luci-app-openclash_*.ipkをダウンロードする。 - LuCI → システム → ソフトウェア → 「アップロード」で ipk をインストールする。または SSH で
opkg install /tmp/luci-app-openclash_*.ipkを実行。 - 依存関係エラーが出た場合は、同リリースに含まれる依存 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 等)と整合させてください。
サブスクリプションとコア設定
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 漏洩を防ぐうえで重要です。
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 に分離し、プロキシ対象外にする構成も安全です。
動作確認手順
- スマートフォンの Wi-Fi 詳細で、ゲートウェイと DNS がルーター IP か確認
- ブラウザで海外サイトと国内サイトの両方を開く
- OpenClash「运行日志」で、接続が意図したポリシーグループ経由か確認
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 系ルーター構成が依然として有力です。