まずmacOSの権限を3種類に分けて考える
macOS版FlClashでは、Gatekeeper、管理者認証、VPNまたはネットワーク拡張の許可を求められることがあります。これらは別々のシステム機能に関わるため、同じパスワードダイアログとして一括りにはできません。システムプロキシだけを使う場合は、通常アプリの起動とプロキシ設定だけで済みます。TUNモードを有効にすると、仮想ネットワークインターフェース、ルーティング、DNSの制御も必要になります。
| 通知の種類 | 表示されるタイミング | 設定する場所 |
|---|---|---|
| 開発元を確認できない/開けない | アプリの初回起動時 | 「システム設定」→「プライバシーとセキュリティ」 |
| 管理者名とパスワード | 補助コンポーネントのインストールまたはTUNの有効化 | macOSのシステム認証ダイアログ |
| VPN構成またはネットワーク拡張の追加 | TUNを初めて有効にするとき | 「システム設定」→「ネットワーク」→「VPN」または拡張機能の管理画面 |
| キーチェーン内の項目へのアクセス | 保存済みの認証情報の読み取り、またはコンポーネントの識別情報が変わったとき | 「キーチェーンアクセス」アプリ |
インストール前の確認:チップ、保存場所、旧バージョンの状態
AppleシリコンかIntelかを確認する
「Appleメニュー」→「このMacについて」を開きます。チップ欄にApple M1、M2、M3、M4などのAppleシリコンが表示される場合はarm64版を選びます。プロセッサ欄にIntelと表示される場合はx64またはamd64版を選択してください。アーキテクチャを間違えると、アプリが起動しない、起動直後に終了する、Rosettaによる変換が必要になるといった症状が出ます。
アプリを「アプリケーション」に移動する
- ダウンロードしたDMG、または解凍したフォルダーを開きます。
- FlClashをFinderのサイドバーにある「アプリケーション」へドラッグします。
- 「アプリケーション」フォルダーから起動し、DMG、ダウンロードフォルダー、外付けディスクから常用しないでください。
- 旧バージョンが起動中なら、先にメニューバーから終了してからアプリを置き換えます。
インストール先を固定することは重要です。macOSは、キーチェーンのアクセス制御、コード署名の識別情報、アプリのパスを組み合わせて認証を判断します。毎回異なる場所から起動すると、同じキーチェーン項目へのアクセス許可を何度も尋ねられることがあります。
アップデート前にプロキシを無効にする
システムプロキシが旧プロセスを指したままだと、アプリを直接上書きした際に使えないローカルプロキシアドレスが残ることがあります。FlClashでシステムプロキシとTUNを無効にしてから、アプリを終了するのがおすすめです。一般的な待ち受けアドレスは127.0.0.1:7890ですが、実際のポートは現在の設定にあるmixed-portを確認してください。
「開発元を確認できない」「アプリが壊れている」と表示された場合の正しい対処
初回起動がブロックされたら、まずFinderの「アプリケーション」でFlClashを探し、Controlキーを押しながらアプリアイコンをクリックして「開く」を選択します。それでもGatekeeperに止められる場合は、「システム設定」→「プライバシーとセキュリティ」を開き、下部にある直前にブロックされたアプリの記録から「このまま開く」をクリックし、ログインパスワードまたはTouch IDで認証します。
- FlClashを手動で起動した直後にだけ、このブロック記録を処理してください。
- ダイアログに表示されたアプリ名が、Finder上のファイル名と一致するか確認します。
- 一度許可したら、「アプリケーション」から改めて起動します。
- 何度も別のフォルダーへ解凍しないでください。システムが新しいアプリのコピーとして扱う可能性があります。
「プライバシーとセキュリティ」に「このまま開く」が表示されない場合は、Finderからもう一度起動して該当記録を作成します。企業管理下のMacではMDMポリシーによってボタンが非表示または無効になることもあります。その場合は本体の一般ユーザー設定を変更せず、デバイス管理者にアプリの承認を依頼してください。
ネットワーク拡張の許可:システムプロキシからTUNまで
システムプロキシモードの範囲
システムプロキシモードでは、macOSのHTTP、HTTPS、SOCKSプロキシをローカルの待ち受けポートへ向けます。一般的な設定は127.0.0.1:7890、コントロールインターフェースは127.0.0.1:9090です。コントロールインターフェースはクライアントとmihomoカーネルの通信に使うもので、Webプロキシのポートとして入力しないでください。
mixed-port: 7890
mode: rule
allow-lan: false
external-controller: 127.0.0.1:9090
この設定では、Safari、Chrome、システムプロキシを参照するアプリがルール分岐の対象になります。ターミナルのcurl、パッケージマネージャー、一部のゲームはシステムプロキシを参照しないことがあるため、「ブラウザーは使えるのにターミナルは直結する」状態が必ずしも故障とは限りません。
TUNを初めて有効にするときの許可手順
FlClashの「設定」→「ネットワーク設定」を開き、TUNモードを有効にします。macOSのバージョンによっては、管理者認証、VPN構成の追加、ネットワーク拡張の許可が順番に表示されます。ダイアログが表示されたらFlClashを起動したままにし、複数の許可リクエストを同時に作らないようスイッチを連打しないでください。
- 管理者認証画面で、現在のMac管理者アカウントのパスワードを入力します。
- VPN構成の追加を許可するか尋ねられたら、「許可」を選択します。
- macOS 15以降では、「システム設定」→「一般」→「ログイン項目と機能拡張」→「ネットワーク機能拡張」で状態を確認できます。
- macOS 13、14で許可通知が表示された場合は、「システム設定」→「プライバシーとセキュリティ」を開いて許可します。
- 「システム設定」→「ネットワーク」→「VPN」に戻り、同名の項目が接続と切断を繰り返していないか確認します。
- FlClashに戻り、カーネルが起動してから接続をテストします。
許可が完了すると、通常はutun仮想インターフェースが作成されます。番号は固定ではなく、utun3、utun7などになることがあります。番号が変わっても異常ではありません。確認すべきなのは、デフォルトルート、DNSリクエスト、FlClashカーネルが連動して稼働しているかどうかです。
mihomo TUN設定で重要なフィールド
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
dns:
enable: true
listen: 127.0.0.1:1053
enhanced-mode: fake-ip
auto-routeはルートを自動設定し、auto-detect-interfaceは現在の出口インターフェースを検出し、dns-hijackは指定したDNS通信をカーネルに処理させます。FlClashは画面の設定から実行用設定を生成することがあるため、サブスクリプションファイルと画面上で競合するTUN項目を二重に管理しないでください。
キーチェーンが繰り返しパスワードを求める場合:要求元を特定する
キーチェーンのダイアログでは、まず「どのプロセスがどの項目を要求しているか」を確認します。正規のシステムダイアログには、項目名とアクセスを要求するアプリが表示されます。FlClashを起動していないのに表示される場合は、ログイン項目、旧バージョンの補助コンポーネント、他のネットワークツールを確認し、現在のアプリが原因だと決めつけないでください。
まず一度だけ「許可」を試す
初回は「許可」を選択して現在のmacOSログインパスワードを入力し、同じ操作で再び表示されるか確認します。アプリが固定された/Applicationsにあり、要求対象が明確で継続的なアクセスが必要だと確認できた場合に限り、「常に許可」を検討してください。アプリを置き換えたり移動したり、署名の識別情報が変わったりすると、キーチェーンで再確認を求められることがあります。
「ログイン」キーチェーンがロックされていないか確認する
- 「アプリケーション」→「ユーティリティ」→「キーチェーンアクセス」を開きます。
- 左側で「ログイン」キーチェーンを選択します。
- ロック表示がある場合は、右クリックしてロックを解除し、現在のログインパスワードを入力します。
- ダイアログに表示された項目名で検索し、推測で証明書やパスワードをまとめて削除しないでください。
- 対象項目をダブルクリックし、「アクセス制御」に古いアプリのパスが残っていないか確認します。
Macのログインパスワードを変更した後も、ログインキーチェーンのパスワードが古いままの場合があります。新しいパスワードでシステムにはログインできるのに、複数のアプリが古いキーチェーンパスワードを求め続けるのが典型例です。この場合はまず「ログイン」キーチェーンのパスワードを変更し、現在のアカウントパスワードと一致させてください。デフォルトキーチェーンのリセットは、ブラウザーのパスワード、Wi-Fi認証情報、他のアプリの保存データに影響するため、最後の手段とし、実行前に利用可能なバックアップを確認します。
繰り返し発生を招く3つの条件を避ける
- 別々のフォルダーにある複数のFlClash.appを残し、交互に起動しないでください。
- アップデート時は旧プロセスを終了してから、「アプリケーション」にある既存バージョンを上書きします。
- キーチェーン項目を削除した後は、アプリも再起動してください。古いプロセスに無効な参照を保持させないことが重要です。
許可後に行う4つの確認
ローカルの待ち受けポートを確認する
FlClashでカーネルが稼働中であることを確認してから、ターミナルで次のコマンドを実行します。7890以外のポートを使っている場合は、実際のmixed-portに置き換えてください。
lsof -nP -iTCP:7890 -sTCP:LISTEN
curl -I -x http://127.0.0.1:7890 https://example.com
1つ目のコマンドでは該当するカーネルプロセスが待ち受け中であることを確認でき、2つ目ではHTTPレスポンスヘッダーが返ります。ポートが待ち受けていなければカーネルの起動ログを確認し、待ち受けているのにタイムアウトする場合は、サブスクリプションのノード、プロキシグループの選択、ルールのマッチ結果を確認します。
システムプロキシが残っていないか確認する
「システム設定」→「ネットワーク」→現在使用中のWi-FiまたはEthernet→「詳細」→「プロキシ」を開きます。FlClashでシステムプロキシを有効にすると、ここにローカルアドレスとポートが表示されることがあります。アプリ終了後も127.0.0.1:7890が残っていると、システムプロキシを参照するすべてのプログラムが停止済みのポートへ接続しようとします。
ネットワーク拡張とVPNの状態を確認する
systemextensionsctl list
scutil --nc list
ifconfig | grep utun
systemextensionsctl listでは登録済みのシステム拡張を確認でき、scutil --nc listではネットワーク接続サービスを一覧表示できます。最後のコマンドはutunインターフェースの有無を確認するためだけに使います。macOS本体や他のVPNもutunを作成するため、インターフェースが存在するだけではFlClashのものとは判断できません。
IPだけでなくルールを確認する
ルールモードを選択し、直結されるはずのサイトとプロキシ経由になるはずのサイトへそれぞれアクセスします。その後、FlClashの接続ログでルール名、プロキシグループ、出口ノードを確認してください。出口IPだけではルールの誤マッチを発見できません。たとえばDIRECTルールの優先度が高すぎると、TUNとネットワーク拡張が正常でも対象ドメインは直結されます。
よくあるトラブルと対処法
ネットワーク拡張を許可してもTUNを起動できない
- 他のVPN、旧Clashクライアント、企業プロキシを終了してから再試行します。
- TUNを無効にし、FlClashを終了して10秒待ってから再起動します。
- アプリがDMGのマウントボリュームではなく、「アプリケーション」フォルダーにあることを確認します。
- 設定内でDNSの待ち受けポートが重複していないか確認します。
127.0.0.1:1053が他のプロセスに使用されている場合は、DNSの待ち受け設定を変更するか、競合しているプロセスを停止します。
有効にするとLAN内のデバイスにアクセスできない
TUNの自動ルーティングによって、LAN通信のマッチ方法が変わることがあります。設定には、たとえばIP-CIDR,192.168.0.0/16,DIRECT,no-resolve、IP-CIDR,10.0.0.0/8,DIRECT,no-resolve、IP-CIDR,172.16.0.0/12,DIRECT,no-resolveのようなプライベートアドレスの直結ルールを残してください。プリンターやNASでLAN内のドメイン名を使う場合は、ローカルドメインをDNSで解決できるかも確認します。
スリープ復帰後は接続済みなのにアクセスできない
Wi-Fiの切り替え、テザリング先の変更、スリープ復帰後は、以前のデフォルトインターフェースが無効になっていることがあります。TUNをいったん無効にしてから再度有効にし、auto-detect-interfaceで出口を再検出させます。有線からWi-Fiへ切り替えた後だけ発生する場合は、アプリを終了して再起動し、ルートとDNSの状態を再構築します。
システムプロキシを無効にしてもプロキシ経由になる
TUNがまだ有効になっていないか、ブラウザーに独立したプロキシ拡張機能が設定されていないか確認します。システムプロキシ、アプリ内プロキシ、TUNはそれぞれ別の経路です。1つを無効にしても、残り2つが停止するわけではありません。ターミナルではHTTP_PROXY、HTTPS_PROXY、ALL_PROXY環境変数がローカルポートを指していないかも確認してください。
アンインストールと再インストール:VPN、拡張機能、プロキシの残存設定を整理する
FlClash.appをそのままゴミ箱へドラッグしても、アプリ本体しか削除されません。TUNやシステムプロキシを使っていた場合は、先にネットワーク設定を元に戻してからアプリを削除します。再インストール前に無効なローカルポート、VPN項目、古い補助コンポーネントの許可が残るのを防げます。
- FlClashでシステムプロキシを無効にします。
- TUNモードを無効にし、状態の切り替えが完了するまで待ちます。
- FlClashを終了し、メニューバーのアイコンと関連プロセスが終了したことを確認します。
- 「システム設定」→「ネットワーク」→「VPN」を開き、旧インストールに属することを確認した項目を削除します。
- macOS 15以降では、「一般」→「ログイン項目と機能拡張」→「ネットワーク機能拡張」を開き、古い項目の状態を確認します。
- 現在のネットワークの「詳細」→「プロキシ」を開き、
127.0.0.1の古いポートを指している設定を削除します。 - 最後に「アプリケーション」にあるFlClash.appを削除し、Macを再起動します。
企業管理端末には構成プロファイルがインストールされている場合もあります。「システム設定」→「一般」→「デバイス管理」で確認できます。構成プロファイルの提供元と用途が明確な場合だけ削除してください。会社や学校が配布したネットワーク設定は管理者に任せ、証明書、Wi-Fi、その他のセキュリティポリシーまで同時に影響させないようにします。
profiles list
scutil --proxy
ps aux | grep -i clash
profiles listは構成プロファイルの確認に、scutil --proxyは現在のシステムプロキシ状態の確認に使います。最後のコマンドは名前にClashを含むプロセスが残っていないか確認するためのものです。結果には他のクライアントや過去のコンポーネントが含まれることがあるため、削除前に必ずパスを確認してください。
安定してインストールするおすすめの順序
- チップのアーキテクチャに合ったインストーラーをダウンロードします。
- FlClashを「アプリケーション」に移動し、固定した場所から起動します。
- Gatekeeperの許可を完了し、サブスクリプションを追加します。
- まずシステムプロキシを使って、ノード、DNS、ルールを確認します。
127.0.0.1:7890など、実際の待ち受けポートが正常に動作することを確認します。- 通信を完全に制御する必要がある場合に限り、TUNを有効にしてネットワーク拡張を許可します。
- 画面のスイッチだけでなく、接続ログでルールのマッチ結果を確認します。
この順序では、アプリの起動、サブスクリプションの利用可否、システムプロキシ、TUNを4段階に分けて確認します。どこかで失敗しても該当する層を特定でき、アプリを何度も削除したりネットワーク設定をすべてリセットしたりする必要がありません。