まず方針を選ぶ:GUI クライアントか、mihomo カーネルか
Linux における Clash エコシステムは 2 層に分かれます。下層はカーネルで、設定の解析とトラフィックの振り分けを担当し、現在活発にメンテナンスされているカーネルは mihomo(旧 Clash Meta)です。上層は GUI クライアントで、カーネルをウィンドウアプリに包み、サブスクリプション管理、ノード切り替え、システムプロキシのオン/オフを提供します。2 つの方針はそれぞれ次の環境に対応します:
- デスクトップディストリ(Ubuntu、Debian、Fedora など、GUI あり):GUI クライアントをインストールします。Clash Verge Rev は deb と rpm パッケージを、FlClash は deb パッケージを提供しており、インストールしてすぐ使えます。
- サーバー、WSL、最小構成のコンテナ(GUI なし):mihomo カーネルを直接導入し、設定ファイルと systemd で管理し、Web パネルで状態を確認します。
どちらの方針も同じ YAML 設定構文を共有し、サブスクリプション URL も共通です。後で方針を変えても設定を作り直す必要はありません。以下、それぞれの完全な手順を示します。
デスクトップディストリ:GUI クライアントをインストール
Debian / Ubuntu 系(deb パッケージ)
ダウンロードページから対応するアーキテクチャの deb パッケージを取得したら、ターミナルで実行します:
sudo dpkg -i clash-verge_*_amd64.deb
sudo apt-get -f install # dpkg が依存関係エラーを出した場合のみ実行
インストール後、アプリメニューから起動し、サブスクリプションページにサブスクリプション URL を貼り付け、更新してノードを選び、「システムプロキシ」スイッチをオンにするだけです。GNOME と KDE のシステムプロキシはクライアントが自動で書き込み、ブラウザやほとんどのデスクトップアプリがすぐにプロキシ経由になります。
Fedora / RHEL 系(rpm パッケージ)
sudo dnf install ./clash-verge-*.x86_64.rpm
dnf が依存関係を自動で補完します。インストール後のサブスクリプションの取り込みとスイッチの手順は deb と同じです。
ダウンロード前にアーキテクチャを確認してください:ほとんどのデスクトップやノート PC は x86_64(amd64)で、ARM デバイスは arm64 を選びます。ターミナルで uname -m を実行すれば、現在のマシンのアーキテクチャを確認できます。
一部のアプリはシステムプロキシ設定を読みません(一部のコマンドラインツールや、独自のネットワークスタックを持つデスクトップアプリ)。その場合はクライアントの TUN モードを有効にし、カーネルにシステム層で全 TCP/UDP トラフィックを引き受けさせます。TUN は仮想ネットワークインターフェースの作成が必要なため、クライアントが管理者権限を求めます。
コマンドライン環境:mihomo カーネルを導入
サーバーや WSL にはウィンドウがないため、カーネルを直接実行します。手順は全部で 4 ステップです:
-
バイナリを取得
ダウンロードページのカーネルセクションから mihomo の Linux ビルドを取得します。アーキテクチャに応じて linux-amd64 または linux-arm64 を選び、展開すると単一の実行ファイルになり、他の依存はありません。
-
システムパスにインストール
sudo install -m 0755 mihomo /usr/local/bin/mihomoを実行し、ファイルを標準パスに配置して実行権限を付与します。 -
設定ディレクトリを準備
慣例的なディレクトリは
/etc/mihomoで、その中に config.yaml を置きます。サブスクリプション URL の生の内容はそのまま設定として使えず、proxies、proxy-groups、rules の 3 セクションに書く必要があります。より手軽な方法は proxy-providers でサブスクリプション URL を直接参照する書き方で、カーネルが自動で取得し定期的に更新します。 -
フォアグラウンドで試運転
まず
mihomo -d /etc/mihomoをフォアグラウンドで一度実行し、設定にエラーがなくポートが正常にリッスンしていることを確認してから、systemd に管理を任せます。
最小限の動作設定は次のとおりです:
mixed-port: 7890
allow-lan: false
external-controller: 127.0.0.1:9090
proxy-providers:
airport:
type: http
url: "https://example.com/subscribe"
interval: 86400
path: ./providers/airport.yaml
mixed-port は HTTP と SOCKS5 の両方のリクエストを受け付けます。external-controller はカーネルの REST インターフェースで、Web パネルがこれを通じて稼働状態を読み書きします。ローカルのループバックアドレスのみでリッスンすれば十分です。
systemd による管理と自動起動
ユニットファイル /etc/systemd/system/mihomo.service を新規作成します:
[Unit]
Description=mihomo kernel
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
続いて登録して起動します:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
journalctl -u mihomo -f # 実行ログを追跡
enable --now の 1 コマンドで自動起動の登録と即時起動を同時に行えます。以降、設定を変更するたびに sudo systemctl restart mihomo を実行して反映させます。
TUN モードの権限
TUN は仮想ネットワークインターフェースの作成が必要で、一般ユーザーにはデフォルトでこの権限がありません。方法は 2 つあります:1 つは上記のユニットファイルのとおり root で直接実行する方法、もう 1 つはバイナリにネットワーク管理ケイパビリティを付与して一般ユーザーとして実行する方法です:
sudo setcap 'cap_net_admin,cap_net_bind_service=+ep' /usr/local/bin/mihomo
一部のコンテナ環境(OpenVZ、権限が付与されていない LXC)には /dev/net/tun デバイスがなく、TUN は使えません。その場合は mixed-port とアプリケーションレベルのプロキシに戻すしかありません。systemd で root 以外のユーザーとして実行する場合は、ユニットファイルに AmbientCapabilities=CAP_NET_ADMIN を追加する必要があります。
プロキシが有効かどうかを確認
最も手軽な方法は、プロキシパラメータ付きでリクエストを一度送ることです:
curl -x http://127.0.0.1:7890 https://api.ip.sb
返された出口 IP が選択したノードの地域と一致していれば、経路は通っています。プロキシをシェル環境に書き込み、後続のコマンドをまとめてプロキシ経由にすることもできます:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
GUI が欲しい場合は Web パネルを載せられます:metacubexd、zashboard、yacd などの静的パネルファイルを設定ディレクトリの ui サブディレクトリに置き、ブラウザで http://127.0.0.1:9090/ui にアクセスすれば、アクティブな接続の確認、ノード切り替え、遅延テストができます。パネルはカーネル API のフロントエンドにすぎず、ページを閉じてもプロキシの動作には影響しません。
WSL とサーバーの 2 つの相違点
WSL2
デフォルトの NAT ネットワークでは、WSL と Windows はそれぞれ独立したループバックアドレスを持ちます。プロキシを WSL 内で動かしている場合、Windows 側から接続するには、設定で allow-lan: true を指定し、WSL の IP でアクセスする必要があります。より手軽なのは、クライアントを Windows 側にインストールし、WSL 内で export するプロキシを Windows ホストの IP に向ける方法です――/etc/resolv.conf の nameserver がホストのアドレスです。WSL の mirrored ネットワークモードを有効にすれば、両側で localhost を共有でき、上記の回り道はすべて不要になります。
サーバー
サーバーにはローカルブラウザがないため、パネルには SSH ポートフォワーディングでアクセスします:
ssh -L 9090:127.0.0.1:9090 user@your-server
そのセッションを維持したまま、ローカルのブラウザで 9090 番ポートの ui パスにアクセスすれば OK です。
external-controller を 0.0.0.0 でリッスンして公网に公開しないでください。リモート管理がどうしても必要な場合は、設定に secret フィールドでアクセスパスワードを設け、ファイアウォールで接続元 IP を制限してください。
よくある問題の早見表
- ポートが占有されている:
ss -ltnp | grep 7890で占有しているプロセスを特定するか、設定で mixed-port を別のポートに変更します。 - 設定エラー:YAML はスペースインデントのみ有効で、Tab は使えません。journalctl のログにエラー行番号が出るので、その行を修正します。
- サブスクリプションが更新されない:proxy-providers の interval フィールドが自動更新間隔(秒単位)を制御します。サービスを再起動すれば即時取得を強制できます。
- DNS の異常:config.yaml の dns セクションでカーネル DNS を有効にして fake-ip をオンにし、TUN モードと組み合わせるか、システム DNS をカーネルのリッスンアドレスに向けます。
- ルールにマッチしない:動作モードが direct や global ではなく rule であることを確認してください。Web パネルで各接続が実際にマッチしたルールチェーンを確認できます。
設定フィールドの完全な書き方はサイト内の YAML マニュアルを参照してください。GUI クライアントのサブスクリプション取り込みの詳細は Windows、macOS とほぼ同じで、使用ドキュメントに対応する章があります。