Fedora に Clash Verge を導入:SELinux と firewalld で止まらない実測手順(2026)
Fedora で「Linux 版 Clash」を安定運用するときの論点
Fedora Workstation のように常に新しめのカーネルとデスクトップスタックが揃う環境では、GUI の Clash Verge(多くの場合 Clash Verge Rev 系ビルド)を入れてすぐに試せる反面、SELinux と firewalld という二枚看板が、Debian/Ubuntu 系とは違う形で足止めを作ることがあります。典型例は「設定画面上はポートが開いているはずなのに 127.0.0.1 ですら繋がらない」「Allow LAN を有効にしたのに同一 Wi-Fi の端末から届かない」「TUN モードをオンにした瞬間だけ挙動がおかしい」といった症状です。
本記事の目的は、特定のプロバイダーや購読 URL に依存しない OS 側の切り分け順を示すことです。インストール形式の違い(RPM/AppImage など)と、拒否ログの見方、ゾーンとポート開放、局域网プロキシ(LAN 共有)の確認手順を一続きにまとめます。購読の取り込みやログイン後の自動起動については、既稿の Ubuntu 向け Clash Verge・systemd ガイドと併せて読むと流れが掴みやすいです。ルールや DNS の考え方は チュートリアル・ドキュメントも参照してください。
オープンソースについて:上流のソースやリリースは clash-verge-rev リポジトリで確認できます。インストール用アーカイブの入手は、表記ゆれや改ざんリスクを避けるため 当サイトのダウンロードページを優先するのが無難です。
インストール:RPM と AppImage の実務的な選び方
Fedora では .rpm を dnf install ./package.rpm で入れる方法と、単一ファイルの AppImage をホーム配下に置く方法が一般的です。RPM はメニューエントリや依存解決が楽になり、パスが /usr/bin/ 付近に揃いやすい点が長所です。一方 AppImage は権限さえ付ければ持ち運びやすい反面、更新のたびにファイル名が変わると後述の systemd ユニットやショートカットの修正が必要になるので、運用ポリシーを決めておくとよいでしょう。
どちらの場合も、初回はターミナルから実行して標準エラーを確認してください。GUI からだと黙って終了し、実際には共有ライブラリ不足や SELinux による実行拒否が起きているケースがあります。ldd やリポジトリの依存リストに沿って dnf install し、足りないランタイム(WebKit 系など)を補います。
導入直後に確認したいこと
- アーキテクチャ: 一般的な PC は
x86_64、ARM 機器はaarch64向けビルドが必要です。 - 実行ファイルの場所: 後でユーザーサービス化するなら
which clash-vergeや AppImage の絶対パスを控えます。 - Wayland とトレイ: GNOME のバージョンによってはトレイ連携が制限され、ウィンドウが見えにくいことがあります。まずは表示の有無とプロセス生存を分けて確認します。
SELinux:まず「拒否されているか」を見る
SELinux が Enforcing のとき、ポリシーに無いポート待受やファイルアクセスは黙って失敗することがあります。感覚としては「ファイアウォール以前に、カーネルのセキュリティモジュールがブロックしている」イメージです。最初に getenforce でモードを確認し、問題が出た直後に拒否ログを拾います。
# Mode: Enforcing / Permissive / Disabled
getenforce
# Recent AVC denials (example)
sudo ausearch -m avc -ts recent 2>/dev/null | tail -n 50
sudo journalctl -t setroubleshoot --since "10 min ago"
ausearch や journalctl に denied や comm="clash-verge" のような行が出ていれば、SELinux が第一容疑者です。メッセージに semanage port やコンテキストのキーワードが出る場合は、**そのポート型にリスニングを許可する**必要があることがあります。具体的な型名はビルドや配置場所で変わるため、ログに出た要求に合わせて調整してください。
注意:安易に setenforce 0 で全体を Permissive にするのは切り分け用の一時手段にとどめ、常時運用は避けてください。ホーム直下に置いた AppImage に実行コンテキストが付いていない場合は restorecon や配置場所の見直しも検討します。
拒否内容が「カスタム TCP ポートのバインド」であれば、ポリシー上そのポート番号が許可されていない可能性があります。ディストリビューションのドキュメントに沿って semanage port で型とポートの対応を追加する例がありますが、開放する番号は自分のプロファイルで実際に使う値(mixed-port、HTTP ポートなど)に合わせる必要があります。変更後は関連プロセスを再起動し、再度 AVC が出ないかを確認します。
firewalld:ゾーンと「永続化」を取り違えない
Fedora 既定の firewalld は、インターフェースごとに ゾーン(例:public)を割り当て、そこに紐づく許可だけが有効になります。「コマンドを打ったつもりなのに再起動で戻る」は --permanent を付け忘れたパターン、「同じ PC 内からは通るのに LAN からだけ不通」はループバックは許可されているが外部インターフェース向けの受信が閉じているパターンが多いです。
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=public --list-all
# Example: open TCP port (replace 7890 with your mixed/http port)
sudo firewall-cmd --permanent --add-port=7890/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports
複数ポート(HTTP/SOCKS/mixed など)を使う場合は、実際に待ち受けている番号すべてに対して許可が必要です。Clash 系ではポートの役割を取り違えると「ブラウザ拡張だけ通らない」など部分不通が起きるため、設定画面と ss -lntp の実測を突き合わせます。
局域网(同一 LAN)からだけ許可したい場合
セキュリティを締めたい場合は、グローバルにポートを開かず、自宅サブネットからの到着だけ許可する rich rule を検討します。サブネットは ip -br a やルーター表示と突き合わせて決め、誤った /24 指定だと結局届かないままになります。
# Example only: replace 192.168.1.0/24 and 7890
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="7890" protocol="tcp" accept'
sudo firewall-cmd --reload
Wi-Fi のゲスト VLAN や AP 隔離が有効だと、OS のファイアウォール以前にパケットが届きません。OS 間の比較や mixed-port の整理は、関連する Allow LAN・ファイアウォールのチェックリストも参照してください。
待受アドレスと Allow LAN:確認順序
ファイアウォールと SELinux を通過しても、127.0.0.1 のみにバインドしていると LAN からは決して繋がりません。Clash Verge 側で Allow LAN をオンにし、必要なら設定ファイルの bind-address を * または 0.0.0.0 に近い形へ揃えます(UI の表記は版によります)。そのうえで ss -lntp で 0.0.0.0:ポート になっているかを見ます。
ここまで来て初めて「LAN の別端末からプロキシ指定で疎通」というテストが意味を持ちます。順序を逆にすると、SELinux も firewalld も関係ない段階で時間を溶かしがちです。
TUN モードと権限:Fedora で増えやすい論点
TUN モードはトラフィック取りこぼしを減らす一方、仮想インターフェースの作成やルーティング変更へ権限が絡みます。Fedora では PolicyKit のダイアログや、初回のみ失敗して二度目で通る、といった挙動が報告されることがあります。まずはシステムプロキシのみで主要ブラウザの疎通を確認し、問題がなければ TUN を有効化して差分を見ます。
カーネルモジュールや既存 VPN クライアントと競合すると「一部ドメインだけ開かない」症状が出るため、ルール順や DNS(fake-ip など)も合わせて ドキュメントの説明と照合してください。
長期運用:systemd ユーザーユニットのメモ
ログインのたびに手起動を避けたい場合は、~/.config/systemd/user/ にユニットを置き systemctl --user enable --now する方法が実用的です。Wayland 下では DISPLAY や WAYLAND_DISPLAY の継承が論点になることがありますが、基本形は Ubuntu 向け記事の例と同様です。失敗時は journalctl --user -u ユニット名 -e を必ず確認してください。
systemctl --user daemon-reload
systemctl --user enable --now clash-verge.service
systemctl --user status clash-verge.service
よくあるつまずきと切り分け表
ローカルですら繋がらない
まずプロセスが生きているか、次に curl で 127.0.0.1:ポート へ到達するか。ダメならポート番号の取り違えか、SELinux/ソケット権限を疑います。
LAN だけ不通
バインド先、firewalld、ルーター隔離の順に見ます。同一セグメントかどうかを ip neigh や ping で確認すると早いです。
TUN をオンにすると不安定
他 VPN との競合、DNS、ルール順が典型です。いったん TUN をオフにして再現性を比較してください。
まとめ
Fedora/RHEL 系で Clash Verge を快適に使うコツは、「Debian 系の手順をそのまま当てはめず」、SELinux の拒否ログと firewalld のゾーンと永続化を先に疑うことです。インストール形式を選び、待受ポートを実測し、必要ならポート型の調整と受信許可を順に通す。局域网プロキシを使うならバインドと mixed/HTTP の役割まで含めて確認します。この流れを押さえれば、「グラフィカルでわかりやすい Clash クライアント」を Fedora 上でも長期運用しやすくなります。
クライアントの種類や OS ごとの入手経路を一覧したい場合は、環境に合わせてビルドを選べる ダウンロードページも併せてご利用ください。数分でプロファイルの更新と接続確認まで進められます。→ Clash を無料でダウンロードし、快適な接続を試す