UbuntuでClash!はじめての導入とおすすめ設定 〜完全ガイドとトラブルシューティング〜
はじめに:なぜUbuntuでClashを使うのか?
インターネットの自由とセキュリティは、現代においてますます重要になっています。国境を越えた情報アクセス、プライバシーの保護、そして特定のサービスへの安定した接続は、多くのユーザーにとって不可欠な要素です。VPN(Virtual Private Network)はそのための一般的なツールですが、Clashはより柔軟かつ高度なプロキシ管理を提供し、特に技術に精通したユーザーや、特定のニーズを持つユーザーにとって強力な選択肢となり得ます。
Clashとは何か?
Clashは、Go言語で書かれたクロスプラットフォームのプロキシクライアントです。一般的なVPNとは異なり、ルールベースのルーティングに特化しており、ユーザーは接続元IPアドレスやドメイン、さらにはコンテンツの種類に基づいて、異なるプロキシサーバーを経由させるか、直接接続するかを細かく制御できます。これにより、特定のウェブサイトはプロキシ経由でアクセスし、他のウェブサイトやローカルネットワークへのアクセスは直接接続するといった柔軟な運用が可能です。
Clashの主な特徴は以下の通りです:
- ルールベースのルーティング: IPアドレス、ドメイン、プロセス名などに基づいてトラフィックを自動的にルーティングします。
- 複数のプロキシプロトコル対応: Shadowsocks、VMess、Trojan、Socks5、HTTPなど、多様なプロトコルをサポートします。
- プロキシグループ: 複数のプロキシサーバーをグループ化し、自動選択(URLテストによる遅延テスト)、フォールバック、ロードバランシングなどの機能を提供します。
- DNS強化モード: DNS over HTTPS (DoH) や DNS over TLS (DoT) をサポートし、DNS漏洩を防ぎ、セキュリティを強化します。
- TUNモード(仮想ネットワークアダプタ): システム全体のトラフィックを透過的にプロキシできます。
- 柔軟な設定: YAML形式のシンプルな設定ファイルで、詳細なカスタマイズが可能です。
- クロスプラットフォーム: Windows, macOS, Linux, Android, iOSなど、様々なOSで利用できます。
UbuntuでClashを使うメリット
Ubuntuは、その安定性、高いカスタマイズ性、そして広範なコミュニティサポートにより、多くの開発者やパワーユーザーに愛用されています。UbuntuでClashを利用することには、以下のようなメリットがあります。
- システムリソースの効率的な利用: Clashは比較的軽量であり、Ubuntu上でリソースをあまり消費せずに動作します。
- CLIとGUIの選択肢: CLI(コマンドラインインターフェース)での高度な設定と、GUI(グラフィカルユーザーインターフェース)での簡単な操作の両方が可能です。特にUbuntuユーザーはCLI操作に慣れていることが多く、Clash Core(CLI版)の細かな設定を直接編集することに抵抗がないでしょう。
- 自動化とスクリプトとの連携: Ubuntuのシェルスクリプトやsystemdサービスと連携させることで、Clashの起動、停止、設定の更新などを自動化できます。
- 開発環境との親和性: 開発作業において、特定の地域からのアクセスをシミュレートしたり、ネットワークトラフィックを制御したりする際にClashは非常に有用です。
- カスタマイズの自由度: Ubuntuの柔軟性とClashの強力なルールベースルーティングを組み合わせることで、特定のワークフローやセキュリティ要件に合わせた最適なネットワーク環境を構築できます。
注意点と免責事項
- プロキシサービスの選定: Clash自体はプロキシクライアントであり、プロキシサーバーは別途用意する必要があります。信頼できるプロキシサービスプロバイダーを選びましょう。無料のプロキシサービスはセキュリティリスクが高く、速度や安定性にも問題がある場合があります。
- 法的な側面: インターネットの利用に関する法的規制は国や地域によって異なります。Clashの使用は、お住まいの地域の法律に準拠していることを確認してください。
- セキュリティ: プロキシサーバーはすべてのインターネットトラフィックを中継します。信頼できないプロキシサービスを利用すると、個人情報が漏洩するリスクがあります。
- トラブルシューティング: 本記事は詳細な導入ガイドを提供しますが、個々の環境やプロキシサービスによっては予期せぬ問題が発生する可能性があります。問題解決のためには、公式ドキュメントやコミュニティフォーラムを参照することも重要です。
- 自己責任: 本記事の内容は情報提供のみを目的としており、Clashの使用によって生じるいかなる損害についても、筆者は責任を負いません。
それでは、UbuntuでClashを導入し、最大限に活用するためのステップバイステップガイドを始めましょう。
導入前の準備
Clashを導入する前に、いくつかの準備が必要です。
システム要件
- OS: Ubuntu 20.04 LTS 以降 (その他のLinuxディストリビューションでも同様の手順で導入可能ですが、本ガイドではUbuntuに焦点を当てます)。
- アーキテクチャ: x86_64 (64ビット) が一般的です。ARM64版も存在します。
- 必要な空き容量: 数百MB程度。
- インターネット接続: Clashのダウンロードおよびプロキシサービスへの接続に必要です。
必要なツール
ほとんどのUbuntu環境には以下のツールがプリインストールされていますが、念のため確認し、不足していればインストールしておきましょう。
curl
またはwget
: ウェブからファイルをダウンロードするために使います。
bash
sudo apt update
sudo apt install -y curl wget unzipunzip
: ダウンロードしたZIPファイルを解凍するために使います。tar
:.gz
ファイルを解凍するために使います(CLI版のClash Coreの場合)。git
(オプション): 一部のツールやリポジトリをクローンする場合に必要です。
bash
sudo apt install -y git
プロキシの基本概念
Clashを理解するためには、プロキシの基本的な概念を知っておくと役立ちます。
- プロキシ(Proxy): インターネットに接続する際、直接目的のサーバーにアクセスするのではなく、一度別のサーバー(プロキシサーバー)を経由してアクセスする仕組みです。これにより、実際のIPアドレスを隠蔽したり、アクセス元を変更したりできます。
- HTTPプロキシ: ウェブブラウザのHTTP/HTTPSトラフィックを中継します。
- SOCKS5プロキシ: HTTPプロキシよりも汎用的で、TCP/UDP通信全般を中継できます。Clashは通常、HTTP/SOCKS5の両方に対応した「Mixed Port」を提供します。
- VPNとの違い: VPNはネットワーク層で動作し、デバイスからのすべてのトラフィックを暗号化してトンネリングします。Clashのようなプロキシは通常アプリケーション層で動作し、特定のアプリケーションや設定されたルールに基づいてトラフィックをルーティングします。ClashのTUNモードはVPNに近い機能を提供しますが、基本的にはプロキシクライアントです。
Clash for Windows/Linux (Clash Premium) の導入(GUI版)
Clash for Windows/Linuxは、Clash Coreをベースにしたグラフィカルユーザーインターフェース(GUI)を備えたクライアントです。初めてClashを使う方には、直感的で操作しやすいGUI版がおすすめです。
ダウンロードとインストール
Clash for Windows/Linuxは、公式には提供されていませんが、多くの開発者がフォーク版やコミュニティ版を提供しています。本記事では、かつて非常に人気があったClash for Windows
のLinux版(非公式またはフォーク版)の一般的な導入方法に焦点を当てます。現在ではClash Verge
など、より活発に開発されている代替GUIクライアントも存在しますが、基本的な概念は共通です。
ここでは、GitHubのReleasesページから直接ダウンロードする方法を説明します。
-
GitHub Releasesページにアクセス:
Clash for WindowsのLinux版は、Clash Vergeのように特定の公式リポジトリを持つわけではないですが、非公式のビルドやフォーク版が存在します。最も一般的なのは、GitHubの検索でClash.for.Windows-X.X.X-x64-linux.zip
のようなファイルを探す方法です。
代替として、現在最も推奨されるGUIクライアントはClash Vergeです。Clash VergeはClash Metaをコアとしており、機能が豊富でメンテナンスも活発です。ここではClash Vergeの導入方法を説明します。Clash Verge GitHub Releases: https://github.com/MetaCubeX/Clash.for.Windows/releases
(注意: 上記リンクはClash.for.Windowsのレガシーなリポジトリです。最新のClash VergeはMetaCubeX/clash-verge
のリポジトリを参照してください。)Clash Verge GitHub Releases (推奨): https://github.com/MetaCubeX/clash-verge/releases
-
適切なファイルをダウンロード:
Releasesページで、最新バージョンを展開し、Linux用のアーカイブファイルを探します。通常は以下のようなファイル名です。Clash.Verge_X.X.X_amd64.deb
(Debian/Ubuntuパッケージ)Clash.Verge_X.X.X_x64_linux.zip
または.tar.gz
(ポータブル版)Clash.Verge_X.X.X_x64.AppImage
(AppImage形式)
初心者には
.deb
パッケージが最も簡単です。なければ.AppImage
、それがなければ.zip
または.tar.gz
を選びましょう。例:
.deb
パッケージを使用する場合
ターミナルを開き、ダウンロードします(X.X.X
はバージョン番号に置き換えてください)。
bash
wget https://github.com/MetaCubeX/clash-verge/releases/download/vX.X.X/Clash.Verge_X.X.X_amd64.deb -
インストール:
-
.deb
パッケージの場合:
ダウンロードしたディレクトリで以下のコマンドを実行します。
bash
sudo dpkg -i Clash.Verge_X.X.X_amd64.deb
sudo apt install -f # 依存関係の解決
これでアプリケーションメニューにClash Vergeが追加されます。 -
.AppImage
の場合:
ダウンロードしたファイルを任意の場所(例:~/Applications
)に移動し、実行権限を付与して実行します。
bash
mkdir -p ~/Applications
mv Clash.Verge_X.X.X_x64.AppImage ~/Applications/
chmod +x ~/Applications/Clash.Verge_X.X.X_x64.AppImage
~/Applications/Clash.Verge_X.X.X_x64.AppImage -
.zip
または.tar.gz
の場合:
ダウンロードしたファイルを解凍し、任意のディレクトリ(例:~/Applications
)に配置します。
bash
mkdir -p ~/Applications/ClashVerge
unzip Clash.Verge_X.X.X_x64_linux.zip -d ~/Applications/ClashVerge/
# あるいは tar -zxvf Clash.Verge_X.X.X_x64_linux.tar.gz -C ~/Applications/ClashVerge/
解凍されたディレクトリ内の実行ファイル(例:Clash Verge
またはclash-verge
)に実行権限を付与し、実行します。
bash
chmod +x ~/Applications/ClashVerge/Clash\ Verge
~/Applications/ClashVerge/Clash\ Verge
-
これでClash Vergeが起動します。初回起動時には、ファイアウォールの許可を求められる場合があります。
初期設定とUIの概要
Clash Verge(または類似のGUIクライアント)が起動すると、メインウィンドウが表示されます。基本的なUIは以下のタブで構成されています。
- Home: 現在のClashの状態、ログ、システムプロキシの有効/無効、プロキシモードの選択などが表示されます。
- Profiles (プロファイル): サブスクリプションURLを追加し、複数のプロキシ設定(プロファイル)を管理します。
- Proxies (プロキシ): ロードされたプロキシサーバーの一覧と、それらをまとめたプロキシグループが表示されます。ここで手動でサーバーを選択することも可能です。
- Rules (ルール): トラフィックのルーティングルールが表示されます。
- Connections (接続): 現在Clashを経由しているTCP/UDP接続の一覧が表示されます。各接続の詳細や、ブロック/切断が可能です。
- Settings (設定): Clash Coreの動作に関する詳細設定(ポート、ログレベル、DNSなど)を行います。
- Log (ログ): Clashの動作ログが表示され、デバッグに役立ちます。
Dashboardの開き方:
通常、Clash Vergeは組み込みのDashboard UIを提供します。アプリケーション内で直接操作できます。また、ブラウザからもアクセス可能です。
Clash Vergeの場合、設定でExternal Controllerが有効になっている場合、http://127.0.0.1:9090/ui
(デフォルトポート) のようなURLでブラウザからアクセスできます。
Clash Core (CLI版) の導入と設定 (上級者向け)
GUI版は手軽ですが、CLI版のClash Coreはより軽量で、サーバー環境や自動化されたスクリプトでの利用に適しています。また、設定ファイルを直接編集するため、Clashの動作原理を深く理解するのに役立ちます。
Clash Coreのダウンロード
-
GitHub Releasesページにアクセス:
Clash Coreの公式リリースは以下のページで確認できます。
https://github.com/Dreamacro/clash/releases -
適切なファイルをダウンロード:
最新バージョンを展開し、Linux用のファイルを探します。通常は以下のようなファイル名です。clash-linux-amd64-vX.X.X.gz
(Intel/AMD 64bit用)clash-linux-arm64-vX.X.X.gz
(ARM 64bit用)
お使いのCPUアーキテクチャに合わせて選択してください。
ターミナルでダウンロードします(
X.X.X
はバージョン番号に、amd64
はあなたのアーキテクチャに置き換えてください)。
bash
wget https://github.com/Dreamacro/clash/releases/download/vX.X.X/clash-linux-amd64-vX.X.X.gz -
ファイルの展開と配置:
ダウンロードしたclash-linux-amd64-vX.X.X.gz
を解凍し、実行パスが通っているディレクトリ(例:/usr/local/bin
)に配置します。
bash
gzip -d clash-linux-amd64-vX.X.X.gz
sudo mv clash-linux-amd64-vX.X.X /usr/local/bin/clash
sudo chmod +x /usr/local/bin/clash
これでclash
コマンドが利用可能になります。
設定ファイルの作成と編集 (YAMLの基本)
Clash CoreはYAML形式の設定ファイル(通常config.yaml
という名前)を読み込んで動作します。このファイルがClashのすべての動作を定義します。
-
設定ディレクトリの作成:
Clashの設定ファイルは、ユーザーのホームディレクトリ内の隠しディレクトリに置くのが一般的です(例:~/.config/clash/
)。
bash
mkdir -p ~/.config/clash
cd ~/.config/clash -
config.yaml
の作成:
プロキシサービスプロバイダーから提供されるサブスクリプションリンクをClashのGUIクライアントにインポートすると、自動的にconfig.yaml
が生成されます。CLI版ではこれを手動で作成または編集する必要があります。基本的な
config.yaml
の構造は以下の通りです。
“`yamlGeneral Configuration
port: 7890 # HTTPプロキシポート
socks-port: 7891 # SOCKS5プロキシポート
mixed-port: 7890 # HTTPとSOCKS5の両方をサポートするポート (portとsocks-portを兼ねる)
allow-lan: false # LANからのアクセスを許可するか (trueにするとLAN内の他のデバイスも利用可能に)
mode: rule # プロキシモード (rule, global, direct)
log-level: info # ログレベル (silent, info, warning, error, debug)
external-controller: 127.0.0.1:9090 # ダッシュボードからのアクセスを許可するIPとポート
secret: “” # ダッシュボードへの認証パスワード (任意)DNS Settings
dns:
enable: true
listen: 0.0.0.0:53 # DNSリスニングポート (通常は53)
enhanced-mode: redir-host # DNS書き換えモード (redir-host, fake-ip)
# nameserver:
# – 114.114.114.114
# – 8.8.8.8
fallback:
– https://1.1.1.1/dns-query # DoH (DNS over HTTPS)
– tls://8.8.8.8 # DoT (DNS over TLS)
# fallback-filter:
# geoip: true
# ipcidr:
# – 0.0.0.0/8
# – 10.0.0.0/8
# – 100.64.0.0/10
# – 127.0.0.0/8
# – 169.254.0.0/16
# – 172.16.0.0/12
# – 192.0.0.0/24
# – 192.0.2.0/24
# – 192.88.99.0/24
# – 192.168.0.0/16
# – 198.18.0.0/15
# – 198.51.100.0/24
# – 203.0.113.0/24
# – 224.0.0.0/3TUN Mode (System-wide proxy, like VPN)
tun:
enable: false # TUNモードを有効にするか
stack: system # プロトコルスタック (system, gvisor)
auto-route: true # 自動ルーティング設定
auto-detect-interface: true # インターフェースの自動検出
# dns-hijack:
# – 0.0.0.0:53
# – “:53”Proxy Providers (サブスクリプションで取得するプロキシリスト)
プロキシサービスから提供されるURLをここに記述します。
proxy-providers:
my-provider:
type: http # または file, dash, ss, vmessなど
url: “YOUR_SUBSCRIPTION_URL_HERE” # ここにプロバイダーから提供されたサブスクリプションURLを貼り付けます
interval: 3600 # 3600秒 (1時間) ごとに更新
path: ./my-provider.yaml # ダウンロードしたプロファイルはここに保存される
healthcheck:
enable: true
url: “http://www.gstatic.com/generate_204” # 接続テストURL
interval: 300 # 300秒 (5分) ごとにテストProxies (手動で追加する場合)
proxy:
– name: “MyProxy-SSH”
type: ss
server: your.server.com
port: 443
cipher: aes-256-gcm
password: “yourpassword”
udp: true
Proxy Groups (プロキシのルーティングロジック)
proxy-groups:
– name: “Proxy” # メインのプロキシグループ
type: select # 手動選択
proxies:
– “DIRECT” # 直接接続オプション
– “my-provider” # 上で定義したプロバイダーのプロキシ全て
# – “MyProxy-SSH” # 手動定義したプロキシ
# – “Fallback” # 他のグループをネストすることも可能
– name: “Auto-Select” # 遅延テストで自動選択
type: url-test
url: “http://www.gstatic.com/generate_204”
interval: 300
tolerance: 50
proxies:
– “my-provider” # プロバイダーのプロキシ全て
– name: “Fallback” # 失敗時に次のプロキシに切り替える
type: fallback
url: “http://www.gstatic.com/generate_204”
interval: 300
proxies:
– “my-provider”
– name: “AdBlock” # 広告ブロック用グループ (空にするとDIRECTになる)
type: select
proxies:
– “DIRECT”Rule Providers (外部ルールセットの読み込み)
rule-providers:
private-rules:
type: http
behavior: classical # ipcidr, domain, classical
url: “https://example.com/clash-rules/private.yaml”
interval: 86400
path: ./private-rules.yaml
block-ads:
type: http
behavior: domain
url: “https://cdn.jsdelivr.net/gh/Loyalsen/clash-rules@release/rules/block/ads.yaml”
interval: 86400
path: ./block-ads.yaml
Rules (ルーティングルール)
rules:
# – RULE-PROVIDER,private-rules,Proxy # 外部ルールセットを読み込み
# – RULE-PROVIDER,block-ads,REJECT # 広告を拒否 (REJECTはClashの特別なプロキシ)
– DOMAIN-SUFFIX,google.com,Proxy # GoogleドメインはProxy経由
– DOMAIN-KEYWORD,youtube,Proxy # YouTubeはProxy経由
– IP-CIDR,10.0.0.0/8,DIRECT,no-resolve # プライベートIPは直接接続 (DNS解決しない)
– GEOIP,CN,Proxy # 中国IPはProxy経由
– MATCH,Proxy # 上記のルールにマッチしないすべてのトラフィックは”Proxy”グループを経由
“`YAMLファイルの編集:
vi
やnano
などのテキストエディタで~/.config/clash/config.yaml
を作成・編集します。
YAMLはインデントが重要です。スペース2つ(または4つ)で統一し、タブは使わないでください。
systemdサービスとしての起動
Clash Coreをバックグラウンドで永続的に動作させ、システム起動時に自動的に起動するようにするには、systemdサービスとして設定するのが最適です。
-
systemdサービスファイルの作成:
/etc/systemd/system/clash.service
というファイルを作成します。
bash
sudo nano /etc/systemd/system/clash.service
以下の内容を貼り付け、User=
とExecStart=
のパスはご自身の環境に合わせて修正してください。“`ini
[Unit]
Description=Clash Proxy Service
After=network.target[Service]
Type=simple
User=your_username # あなたのユーザー名に置き換える
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/clash -d /home/your_username/.config/clash # ここもあなたのユーザー名に置き換える[Install]
WantedBy=multi-user.target
``
User=your_username
*: Clashをどのユーザーで実行するか指定します。通常は現在ログインしているユーザー名でOKです。
ExecStart=/usr/local/bin/clash -d /home/your_username/.config/clash
*: Clashの実行ファイルのパスと、設定ファイルが置かれているディレクトリ(
-d`オプションで指定)を指定します。 -
systemdのリロードとサービス有効化/起動:
サービスファイルを保存したら、systemdをリロードし、Clashサービスを有効化して起動します。
bash
sudo systemctl daemon-reload
sudo systemctl enable clash # システム起動時に自動実行するよう設定
sudo systemctl start clash # サービスを今すぐ起動 -
状態の確認:
サービスが正常に動作しているか確認します。
bash
sudo systemctl status clash
出力がactive (running)
となっていれば成功です。
設定ファイルのテストとデバッグ
-
設定ファイルのチェック:
Clash Coreは、設定ファイルを読み込む際に構文エラーがないかチェックします。
bash
clash -t -d ~/.config/clash
エラーがなければConfiguration valid!
と表示されます。エラーがあれば、どこで問題が発生しているかメッセージが表示されるので、修正してください。 -
ログの確認:
Clashが期待通りに動作しない場合、ログを確認するのが最も重要です。
CLI版の場合、systemdサービスとして起動していれば、以下のコマンドでログを確認できます。
bash
sudo journalctl -u clash -f
-f
オプションはリアルタイムでログを追跡します。
サブスクリプションの追加と管理
ほとんどのプロキシサービスプロバイダーは、Clash用のサブスクリプションリンクを提供しています。これは、プロキシサーバーのリストと設定を自動的にClashにインポートするためのURLです。
サブスクリプションリンクの取得
契約しているプロキシサービスのウェブサイトにログインし、Clash(または汎用プロキシ)のサブスクリプションリンクを探します。通常、「My Subscriptions」「Dashboard」などのセクションにあります。形式はhttp://example.com/api/v1/client/subscribe?token=your_token
のようになっています。
Clashへの追加方法 (GUI版 – Clash Verge)
- Clash Vergeのメインウィンドウで「Profiles」タブをクリックします。
- 上部にある「Add Profile」または「New Profile」ボタンをクリックします。
- 表示された入力フィールドに、コピーしたサブスクリプションURLを貼り付けます。
- 「Import」または「Download」ボタンをクリックします。
- ClashがURLからプロファイルをダウンロードし、表示します。ダウンロードが完了したら、そのプロファイルを選択して適用します。通常、プロファイル名をクリックするとそのプロファイルがアクティブになります。
サブスクリプションの更新と切り替え (GUI版)
- プロファイルの更新:
「Profiles」タブで、現在使用しているプロファイルの名前をクリックし、表示される「Update」アイコン(通常は更新マークのボタン)をクリックします。Clashが新しいサーバーリストと設定をダウンロードします。プロキシサービスが定期的にサーバー情報を更新するため、定期的な更新をおすすめします。 - プロファイルの切り替え:
複数のプロファイルをインポートしている場合、単に切り替えたいプロファイルの名前をクリックするだけで、設定が即座に適用されます。
サブスクリプションの管理 (CLI版)
CLI版では、通常、プロキシサービスプロバイダーの提供するサブスクリプション管理スクリプトを使用するか、config.yaml
内のproxy-providers
セクションを手動で編集します。
config.yaml
の例で示したように、proxy-providers
セクションにサブスクリプションURLを記述します。
yaml
proxy-providers:
my-provider:
type: http
url: "YOUR_SUBSCRIPTION_URL_HERE" # ここにサブスクリプションURL
interval: 3600 # 1時間ごとに自動更新
path: ./my-provider.yaml # ダウンロードしたプロファイルはここに保存される
healthcheck:
enable: true
url: "http://www.gstatic.com/generate_204"
interval: 300
Clash Coreがこのconfig.yaml
を読み込むと、指定されたURLからプロキシリストを自動的にダウンロードし、path
に指定されたファイルに保存します。interval
で指定された時間ごとに自動で更新も行われます。
手動で更新したい場合は、Clash Coreを再起動するか、Dashboardから操作します。
プロキシモードの理解と設定
Clashの最も強力な機能の一つが、その柔軟なプロキシモードです。これにより、トラフィックがどのようにルーティングされるかを細かく制御できます。
GUIクライアントの「Home」タブまたは「Settings」タブで、プロキシモードを切り替えることができます。
-
Global (グローバルモード):
すべてのインターネットトラフィックがClashによってプロキシサーバーを経由します。最もシンプルですが、ローカルネットワークへのアクセスや、プロキシ経由だと問題が発生するウェブサイトへのアクセスにもプロキシが適用されるため、不便な場合があります。セキュリティと匿名性を最大化したい場合に適しています。 -
Rule (ルールベースモード):
これがClashの真価を発揮するモードです。config.yaml
のrules
セクションに定義されたルールに従ってトラフィックをルーティングします。例えば、「このドメインはプロキシ経由」「あのIPアドレスは直接接続」「特定の国へのアクセスは特定のサーバー経由」といった設定が可能です。最も推奨されるモードであり、本ガイドの後半で詳細に説明します。 -
Direct (ダイレクトモード):
すべてのトラフィックがプロキシを経由せず、直接インターネットに接続されます。Clashのプロキシ機能を一時的に無効にしたい場合に便利です。 -
Script (スクリプトモード):
JavaScriptなどのスクリプトを使って、より複雑なルーティングロジックを実装できる高度なモードです。通常の使用ではあまり必要ありません。
Proxy Modeの切り替え (GUI版)
Clash Vergeの場合、「Home」タブの「Mode」セクションで、ドロップダウンメニューから「Global」「Rule」「Direct」を選択できます。
ルールセットのカスタマイズと最適化
Clashのルールベースモードを最大限に活用するには、config.yaml
のrules
セクションを理解し、カスタマイズすることが不可欠です。
Clashのルール構造
ルールは上から順に評価され、最初にマッチしたルールが適用されます。そのため、より具体的なルールを上位に、一般的なルールを下位に配置することが重要です。
各ルールは以下の形式で記述されます:
RULE_TYPE,VALUE,PROXY_GROUP[,NO-RESOLVE]
RULE_TYPE
: マッチングの基準となるタイプ。VALUE
: マッチングの対象となる値。PROXY_GROUP
: マッチした場合に適用されるプロキシグループの名前。- 特別なグループとして、
DIRECT
(直接接続)、REJECT
(接続を拒否)、Proxy
(後述のProxy Groupの名前)などがあります。
- 特別なグループとして、
NO-RESOLVE
(オプション): DNS解決を行わずにルールを適用します。主にIP-CIDR
ルールで使用され、プライベートIP範囲などに使われます。
一般的なルールタイプ
DOMAIN-SUFFIX
: 指定されたドメインのサフィックス(末尾)にマッチするドメイン。- 例:
DOMAIN-SUFFIX,google.com,Proxy
(google.com、mail.google.comなどにマッチ)
- 例:
DOMAIN-KEYWORD
: 指定されたキーワードを含むドメイン。- 例:
DOMAIN-KEYWORD,youtube,Proxy
(youtube.com、m.youtube.comなどにマッチ)
- 例:
DOMAIN
: 完全一致するドメイン。- 例:
DOMAIN,www.example.com,DIRECT
- 例:
IP-CIDR
: 指定されたIPアドレス範囲にマッチするIP。- 例:
IP-CIDR,192.168.0.0/16,DIRECT
(ローカルネットワークへのアクセスは直接) IP-CIDR,0.0.0.0/32,DIRECT,no-resolve
(ループバックアドレスを直接)
- 例:
GEOIP
: 指定された国コードのIPアドレスにマッチ。- 例:
GEOIP,CN,Proxy
(中国のIPはプロキシ経由) GEOIP,US,DIRECT
(米国のIPは直接、通常は非推奨)- ClashはGeoIPデータベースを自動的にダウンロードします。
- 例:
PROCESS-NAME
: 特定のプロセス名から発生したトラフィックにマッチ (Linux/macOSのみ)。- 例:
PROCESS-NAME,chrome,Proxy
(Chromeブラウザのトラフィックをプロキシ)
- 例:
FINAL
またはMATCH
: これまでのどのルールにもマッチしなかった場合のデフォルトルール。これは必ず最後に配置してください。- 例:
MATCH,Proxy
(すべての残りのトラフィックを”Proxy”グループへ) - 例:
FINAL,DIRECT
(すべての残りのトラフィックを直接接続)
- 例:
カスタムルールファイルの作成と読み込み
config.yaml
に直接ルールを記述する代わりに、別のYAMLファイルにルールを記述し、それをconfig.yaml
から読み込むことができます。これにより、設定ファイルが整理され、管理しやすくなります。
-
カスタムルールファイル (
custom_rules.yaml
) の作成:
~/.config/clash/
ディレクトリ内にcustom_rules.yaml
などの名前でファイルを作成します。
“`yaml
# custom_rules.yaml- DOMAIN-SUFFIX,example.com,DIRECT
- DOMAIN,mybank.com,DIRECT
- IP-CIDR,192.168.1.0/24,DIRECT,no-resolve
``
-`) で始まるリスト形式で記述します。
各ルールはハイフン (
-
config.yaml
からの読み込み:
config.yaml
のrules:
セクションの先頭に、以下のように記述を追加します。
“`yaml
# config.yaml
rules:- INCLUDE,custom_rules.yaml # ここにカスタムルールファイルを指定
# その他のルール… - DOMAIN-SUFFIX,google.com,Proxy
- MATCH,Proxy
``
INCLUDE`ルールは、指定されたファイルのルールをその場所に挿入します。
- INCLUDE,custom_rules.yaml # ここにカスタムルールファイルを指定
外部ルールセットの利用 (Rule Providers)
より大規模でメンテナンスされたルールセットを利用するには、rule-providers
機能が便利です。これは、特定のURLから定期的にルールセットをダウンロードし、Clashに適用する機能です。広告ブロック、特定の地域へのルーティング、ストリーミングサービスの最適化などに利用されます。
-
config.yaml
にrule-providers
を追加:
yaml
# config.yaml
rule-providers:
ads-block:
type: http
behavior: domain # または ipcidr, classical
url: "https://cdn.jsdelivr.net/gh/Loyalsen/clash-rules@release/rules/block/ads.yaml" # 例: 広告ブロックルール
interval: 86400 # 24時間ごとに更新
path: ./rules/ads.yaml # ダウンロードしたルールを保存するパス
# healthcheck:
# enable: true
# url: "http://www.gstatic.com/generate_204"
# interval: 300type
:http
(URLからダウンロード) またはfile
(ローカルファイル)。behavior
: ルールのタイプをClashに知らせます。classical
: デフォルト。DOMAIN-SUFFIX
,IP-CIDR
など様々なルールが含まれる場合。domain
:DOMAIN
,DOMAIN-SUFFIX
,DOMAIN-KEYWORD
のみが含まれる場合。ipcidr
:IP-CIDR
のみが含まれる場合。
url
: ルールセットのダウンロード元URL。interval
: 自動更新間隔(秒)。path
: ダウンロードしたルールセットを保存するローカルパス。
-
rules
セクションでRULE-PROVIDER
を使用:
rule-providers
で定義したルールセットを、rules
セクションで利用します。
“`yaml
# config.yaml
rules:- RULE-PROVIDER,ads-block,REJECT # ads-blockルールにマッチしたトラフィックは拒否
- GEOIP,CN,Proxy
- MATCH,Proxy
``
RULE-PROVIDER,PROVIDER_NAME,PROXY_GROUPの形式で記述します。
PROVIDER_NAMEは
rule-providersで定義した名前(例:
ads-block`)です。
GeoIP/GeoSiteの活用
ClashはGeoIP(IPアドレスから国を判別)とGeoSite(ドメインから国を判別)のデータベースを利用して、よりインテリジェントなルーティングを可能にします。これらのデータベースはClashが自動的にダウンロード・更新します。
-
GEOIP
ルール:
GEOIP,COUNTRY_CODE,PROXY_GROUP
例:GEOIP,CN,Proxy
(中国のIPアドレスはプロキシ経由)
これは、中国発のウェブサイトへのアクセスをプロキシ経由にする場合に有効です。 -
GEOSITE
ルール (Clash Meta以降の機能):
Clash Core (Premium) では直接GEOSITE
ルールはサポートされていませんが、Clash Metaなど派生版では利用可能です。これは特定の国のドメインをまとめたリストに基づいてルーティングする機能です。例えば、中国国内のウェブサイト(Baidu, QQなど)へのアクセスを識別するのに役立ちます。
ルールセット最適化のヒント
- DIRECT優先: 銀行サイト、ローカルネットワーク、頻繁にアクセスする信頼できるサイトは
DIRECT
で。これにより遅延を減らし、安定性を向上させます。
“`yaml- DOMAIN-SUFFIX,yourbank.com,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
“`
- REJECTによる広告・トラッカーブロック: 広告や悪意のあるドメインを
REJECT
することで、ブラウジング体験を向上させ、セキュリティを高めます。rule-providers
で広告ブロックリストを読み込むのが効果的です。 - 特定のサービスへのルーティング: Netflix, Huluなどのストリーミングサービスは、特定のプロキシサーバーや地域からのみアクセスできる場合があります。これらを専用のプロキシグループにルーティングするルールを作成します。
“`yaml- DOMAIN-SUFFIX,netflix.com,StreamingProxy
- DOMAIN-SUFFIX,nflximg.net,StreamingProxy
StreamingProxyは、対応するプロキシサーバーを含むプロキシグループ
“`
- 最終ルール
MATCH
の重要性: 常にrules
セクションの最後にMATCH,PROXY_GROUP
を追加してください。これにより、どのルールにもマッチしなかったトラフィックが確実に処理されます。
プロキシグループ (Proxy Group) の活用
プロキシグループは、複数のプロキシサーバーを論理的にまとめ、特定のロジックに基づいてサーバーを選択するための強力な機能です。これにより、ユーザーはより安定した接続や、特定の要件を満たすルーティングを実現できます。
config.yaml
のproxy-groups:
セクションで定義します。
“`yaml
proxy-groups:
– name: “Proxy”
type: select
proxies:
– “DIRECT”
– “Auto-Select”
– “Fallback”
– “JP-Proxy”
– “US-Proxy”
-
name: “Auto-Select”
type: url-test
url: “http://www.gstatic.com/generate_204”
interval: 300
tolerance: 50
proxies:- {provider: my-provider, filter: “JP_.*”} # プロバイダーのJPサーバーのみを選択
- {provider: my-provider, filter: “US_.*”}
-
name: “Fallback”
type: fallback
url: “http://www.gstatic.com/generate_204”
interval: 300
proxies:- {provider: my-provider, filter: “JP_.*”}
- {provider: my-provider, filter: “US_.*”}
-
name: “JP-Proxy”
type: select
proxies:- {provider: my-provider, filter: “JP_.*”} # 日本のサーバーのみ
- “DIRECT”
-
name: “US-Proxy”
type: select
proxies:- {provider: my-provider, filter: “US_.*”} # 米国のサーバーのみ
- “DIRECT”
“`
プロキシグループのタイプ
-
select
(手動選択):
最も基本的なタイプで、ユーザーがグループ内のどのプロキシ(または他のプロキシグループ)を使用するかを手動で選択します。GUIクライアントの「Proxies」タブで切り替えることができます。- 例:
type: select
,proxies: ["ProxyA", "ProxyB", "DIRECT"]
- 例:
-
url-test
(URLテスト/自動選択):
グループ内の各プロキシに対して指定されたURLへのアクセスをテストし、最も応答時間が短い(またはエラーがない)プロキシを自動的に選択します。不安定なプロキシを避け、常に最適な接続を維持するのに役立ちます。url
: テストするURL(通常は応答が速く、常に利用可能なもの。例:http://www.gstatic.com/generate_204
)。interval
: テスト間隔(秒)。tolerance
: 応答時間の許容誤差(ms)。新しいプロキシの応答時間が現在のプロキシよりこの値以上速い場合に切り替える。- 例:
type: url-test
,url: "http://www.gstatic.com/generate_204"
,interval: 300
-
fallback
(フォールバック):
グループ内のプロキシを順番にテストし、最初に成功したプロキシを使用します。現在のプロキシが利用不可になった場合、自動的に次のプロキシに切り替えます。信頼性の高い接続を確保するのに役立ちます。url
,interval
はurl-test
と同様。- 例:
type: fallback
,proxies: ["ProxyA", "ProxyB", "ProxyC"]
-
load-balance
(ロードバランス):
グループ内のプロキシ間でトラフィックを均等に分散させます。複数のサーバーのリソースを最大限に活用し、個々のサーバーへの負荷を軽減します。url
,interval
はurl-test
と同様。- 例:
type: load-balance
,proxies: ["ProxyA", "ProxyB"]
サブスクリプションプロバイダーとグループの連携
proxy-providers
でインポートしたプロキシをproxies
リストに直接含めるには、{provider: provider-name}
の形式を使用します。
さらに、正規表現を使って特定のプロキシのみを選択することもできます。
* {provider: my-provider}
: my-provider
からインポートされたすべてのプロキシ。
* {provider: my-provider, filter: "JP_.*"}
: my-provider
からインポートされたプロキシのうち、名前にJP_
を含むものだけを選択。
これは、プロバイダーが提供する多数のサーバーから、特定の国や用途のサーバーのみを抽出してグループ化する際に非常に便利です。例えば、JP_Tokyo_01
, JP_Osaka_02
, US_LA_01
といった名前のサーバーがある場合、filter: "JP_.*"
とすることで、日本のサーバーだけをまとめたグループを作成できます。
Clashの設定項目詳細
config.yaml
の主要な設定項目について、さらに詳しく解説します。
Port / Socks Port / Mixed Port
port
: HTTPプロキシがリッスンするポート。通常は7890
。socks-port
: SOCKS5プロキシがリッスンするポート。通常は7891
。mixed-port
: HTTPとSOCKS5の両方に対応するプロキシがリッスンするポート。port
とsocks-port
を個別に設定する代わりにこれ一つで済みます。通常は7890
または7891
。
これらはいずれか一つまたは複数を設定できます。通常はmixed-port
を設定し、アプリケーションがHTTPまたはSOCKS5プロキシとしてClashに接続できるようにします。
Allow LAN
allow-lan: true/false
Clashがリッスンしているポートを、ローカルネットワーク内の他のデバイスからアクセスできるようにするかどうかを設定します。false
(デフォルト): 127.0.0.1 (localhost) からのアクセスのみ許可。最も安全。true
: すべてのネットワークインターフェース(0.0.0.0)からのアクセスを許可。ホームネットワーク内の他のPCやスマートフォンからClashを経由してインターネットにアクセスしたい場合に設定します。セキュリティリスクを伴うため、信頼できる環境以外ではfalse
を推奨します。true
にする場合は、Clashを実行しているUbuntuマシンのファイアウォール(UFWなど)でポートを開放する必要がある場合があります。
Mode
mode: rule/global/direct
前述のプロキシモードです。config.yaml
でデフォルトのモードを設定できます。
Log Level
log-level: silent/info/warning/error/debug
Clashがログを出力する詳細度を設定します。info
(デフォルト): 通常の動作情報。warning
/error
: 問題発生時に警告/エラーを表示。debug
: 詳細なデバッグ情報。トラブルシューティング時に有用ですが、大量のログが出力されます。silent
: ログをほとんど出力しない。
External Controller / External UI
external-controller: 127.0.0.1:9090
Clash Coreを外部から制御するためのAPIリスニングアドレスとポートです。GUIクライアントやウェブダッシュボード(Yacdなど)がClash Coreと通信するために使用します。127.0.0.1:9090
: ローカルホストからのアクセスのみ許可。0.0.0.0:9090
: LAN内の他のデバイスからのアクセスも許可。allow-lan: true
と組み合わせて使います。
secret: "your_secret_password"
external-controller
にアクセスする際の認証パスワードです。セキュリティのために設定を強く推奨します。設定すると、Dashboardアクセス時にパスワード入力が求められます。external-ui: /path/to/ui
ウェブダッシュボードの静的ファイルが置かれているディレクトリを指定します。Clash VergeのようなGUIクライアントは通常これを内蔵していますが、Clash Coreで外部のYacdなどを利用する場合に設定します。
DNS設定 (Enhanced Mode)
dns:
セクションはClashの強力な機能の一つで、DNS漏洩を防ぎ、DNSリクエストをプロキシ経由でルーティングしたり、広告ドメインを解決しないようにしたりできます。
enable: true
DNS機能を有効にします。listen: 0.0.0.0:53
ClashがDNSリクエストをリッスンするIPアドレスとポート。通常は0.0.0.0:53
で、システムからのDNSリクエストをClashが受け取れるように設定します。enhanced-mode: redir-host
ClashのDNS解決モード。redir-host
: DNSリクエストはClashが設定したネームサーバーに転送されます。応答IPがClashが管理する特殊なIP(Fake IP)で、実際の接続時にClashが正しいIPに変換します。これにより、DNS解決もプロキシのルールに沿って行われます。fake-ip
:redir-host
と同様に偽のIPを返すことで、IPベースのルーティングを可能にします。より高度な設定で利用されます。
nameserver:
Clashが使用する通常のDNSサーバー。
“`yaml
nameserver:- 114.114.114.114
- 8.8.8.8
“`
fallback:
メインのnameserver
が利用できない場合や、特定の条件(中国からのアクセスなど)でフォールバックとして使用するDNSサーバー。DNS over HTTPS (DoH) や DNS over TLS (DoT) を利用して、DNSリクエストのプライバシーとセキュリティを強化できます。
“`yaml
fallback:- https://1.1.1.1/dns-query # Cloudflare DoH
- tls://8.8.8.8 # Google DoT
“`
fallback-filter:
フォールバックDNSを使用する条件を細かく設定できます。特に中国でのインターネットアクセスにおいて、DNS汚染(DNS Poisoning)を避けるために重要です。
geoip: true
は、nameserver
が中国のIPアドレスを返した場合にfallback
を使用します。ipcidr
は、指定されたIP範囲にフォールバックを使用させます。
DNS設定を有効にした場合、UbuntuのシステムDNS設定をClashのリッスンポート(例: 127.0.0.1
)に向ける必要があります。
* GUI版: 通常、System Proxyを有効にすると自動的にDNSも設定されます。
* CLI版: /etc/resolv.conf
やNetworkManagerの設定を編集し、DNSサーバーを127.0.0.1
に設定します。
TUNモード (System Proxy / TAP/TUN)
tun:
セクションは、Clashをシステム全体のプロキシとして機能させるための設定です。これはVPNクライアントのように、すべてのアプリケーションからのトラフィックを透過的にClash経由でルーティングする最も強力な方法です。
enable: true/false
TUNモードを有効にするか。有効にするには、Clashを実行するユーザーがcap_net_admin
権限を持っているか、sudo
で実行する必要があります。systemdサービスで実行する場合は、Type=forking
またはExecStartPost
でsysctl
コマンドを使い、適切なパーミッションを与える必要がある場合があります。stack: system/gvisor
Clashが使用するTCP/IPスタックの実装。system
: ホストOSのカーネルスタックを使用。パフォーマンスが良いが、特定のカーネルモジュールが必要な場合がある。gvisor
: Go言語で実装されたユーザー空間スタック。互換性が高いが、パフォーマンスは劣る場合がある。
auto-route: true
システムルーティングテーブルを自動的に変更し、Clash経由でトラフィックをルーティングします。auto-detect-interface: true
適切なネットワークインターフェースを自動的に検出します。dns-hijack: [0.0.0.0:53, ":53"]
DNSリクエストをClashのDNSサーバーにリダイレクトします。
TUNモードを有効にすると、ブラウザだけでなく、ターミナルからのコマンド、バックグラウンドプロセスなど、Ubuntuシステム上のすべてのネットワーク通信がClashによって管理されます。これは非常に便利ですが、設定を誤るとネットワーク接続ができなくなる可能性もあります。
System Proxy (システムプロキシ) の設定
Clashが稼働したら、実際にUbuntuのシステムトラフィックをClash経由にする必要があります。
GUIからの有効化 (Clash Verge)
Clash VergeなどのGUIクライアントでは、「Home」タブに「System Proxy」のトグルスイッチがあります。これをオンにするだけで、自動的にUbuntuのシステム全体のプロキシ設定がClashのローカルプロキシポート(例: 127.0.0.1:7890
)に向くように設定されます。最も簡単な方法です。
手動設定 (ネットワーク設定)
CLI版を使用している場合や、GUIクライアントのSystem Proxy設定がうまくいかない場合は、Ubuntuのネットワーク設定を手動で変更できます。
-
GNOME Settings (GUI):
- 「設定 (Settings)」を開きます。
- 左側のメニューから「ネットワーク (Network)」を選択します。
- 「ネットワークプロキシ (Network Proxy)」セクションで、「Manual (手動)」を選択します。
- HTTPプロキシ、HTTPSプロキシ、SOCKSホストにそれぞれ
127.0.0.1
とClashのmixed-port
またはport
/socks-port
(例:7890
)を設定します。 - 「Apply」をクリックして適用します。
-
環境変数 (CLI applications):
ほとんどのCLIアプリケーションは、http_proxy
,https_proxy
,all_proxy
環境変数を参照します。
Bashのプロファイルファイル(例:~/.bashrc
または~/.profile
)に以下の行を追加します。
bash
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890" # HTTPプロキシとしてHTTPSトラフィックも扱う
export all_proxy="socks5://127.0.0.1:7891" # SOCKS5プロキシを使用する場合
export no_proxy="localhost,127.0.0.1,::1,192.168.0.0/16" # プロキシを使わないアドレス
変更を適用するには、ターミナルを再起動するか、source ~/.bashrc
を実行します。
これは特定のターミナルセッションや、これらの環境変数を参照するアプリケーションにのみ影響します。システム全体に適用するには、上記のGUI設定やTUNモードを使用してください。 -
NetworkManager (CLI):
NetworkManagerを使用している場合、nmcli
コマンドでプロキシを設定できます。
bash
nmcli general proxy set http 127.0.0.1:7890 https 127.0.0.1:7890 socks 127.0.0.1:7891 ignore-hosts localhost,127.0.0.1
確認するには:
bash
nmcli general proxy
メリットとデメリット
- メリット:
- 細かい制御が可能: アプリケーションごとにプロキシ設定を変更したり、特定のアプリケーションのみClashを経由させたりできます。
- リソース消費が少ない: 必要なアプリケーションのみプロキシするため、TUNモードよりもリソース消費が少ない場合があります。
- デメリット:
- 手動設定が必要な場合がある: すべてのアプリケーションが自動的にシステムプロキシ設定を尊重するわけではありません。一部のアプリケーションは独自のプロキシ設定を持っているか、環境変数を無視する場合があります。
- 透過性がない: TUNモードのように完全に透過的ではないため、プロキシ設定をサポートしないアプリケーションのトラフィックはClashを経由しません。
トラブルシューティング
Clashの設定は複雑な場合があり、問題が発生することもあります。一般的な問題とその解決策を以下に示します。
インターネットに接続できない
- Clashが実行中か確認:
- GUI版: クライアントが起動しているか、System Proxyが有効になっているか確認。
- CLI版:
sudo systemctl status clash
でサービスがactive (running)
か確認。
- プロキシサービスが有効か確認:
- プロキシサービスプロバイダーのステータスページを確認。
- サブスクリプションが期限切れでないか確認。
- プロキシサーバーが動作しているか確認:
- Clashの「Proxies」タブで、プロキシグループ内のサーバーに遅延テストを実行。
- URLテストが失敗しているサーバーは使用できません。
config.yaml
に誤りがないか確認:- 特に
port
,socks-port
,mixed-port
,allow-lan
の設定。 rules
セクションでMATCH
ルールが適切に設定され、有効なプロキシグループを指しているか確認。
- 特に
- システムプロキシ設定が正しいか確認:
- Ubuntuのネットワーク設定で、Clashの正しいIPアドレスとポートが設定されているか確認。
- 環境変数を使用している場合は、それが正しく設定されているか確認。
- ファイアウォール(UFWなど)の設定:
Clashがリッスンしているポートが、ファイアウォールによってブロックされていないか確認。
bash
sudo ufw status verbose
# 例えば、7890, 7891ポートを許可する
sudo ufw allow 7890/tcp
sudo ufw allow 7891/tcp
sudo ufw reload
allow-lan: true
にしている場合は、LANからのアクセスも許可するルールが必要です。 - DNS設定の問題:
- ClashのDNS設定が有効になっているか確認。
- UbuntuのシステムDNSが
127.0.0.1
を指しているか確認。 - Clashの
nameserver
やfallback
に設定されているDNSサーバーが有効か確認。
特定サイトが開けない
- ルールの問題:
- 開けないサイトのドメインが、
rules
セクションのどこにマッチしているか確認。Clashの「Connections」タブで、そのサイトへの接続がどのプロキシグループを経由しているか確認できます。 - 誤って
DIRECT
やREJECT
にルーティングされていないか確認。 - プロキシグループが、そのサイトへのアクセスをサポートする適切なサーバーを含んでいるか確認。
- サイトがGeoIPブロックされている場合、対応するプロキシサーバーにルーティングされているか確認。
- 開けないサイトのドメインが、
- DNSの問題:
- サイトのDNS解決がうまくいっていない可能性があります。ClashのDNS設定を確認。
enhanced-mode: fake-ip
を使用している場合、一部のサイトで問題が発生することがあります。一時的にredir-host
に戻してみる。
- クリーンキャッシュとCookie:
ウェブサイト側の問題である可能性もあるため、ブラウザのキャッシュとCookieをクリアしてみてください。
Clashが起動しない/落ちる
- 設定ファイルの構文エラー:
- CLI版:
clash -t -d ~/.config/clash
で設定ファイルに構文エラーがないかチェック。YAMLはインデントが非常に重要です。 - GUI版: 起動時にエラーメッセージが表示される場合が多い。
- CLI版:
- ポートの競合:
Clashが使用しようとしているポート(例: 7890, 7891, 9090)が、他のアプリケーションによってすでに使用されていないか確認。
bash
sudo lsof -i :7890
sudo lsof -i :7891
sudo lsof -i :9090
もし使用されていれば、Clashのポートを変更するか、競合しているアプリケーションを停止します。 - 権限の問題:
- 実行ファイルに実行権限がない (
chmod +x
)。 config.yaml
やプロキシプロバイダーファイルが保存されているディレクトリにClashが書き込み権限を持っているか。- TUNモードを使用している場合、適切な権限(
sudo
またはsetcap
)が必要。
- 実行ファイルに実行権限がない (
- メモリ不足:
特に大量のプロキシやルールを使用している場合、メモリ不足でClashが落ちることがあります。htop
などでシステムリソースを確認。
高負荷/CPU使用率が高い
- 大量の接続:
ファイルダウンロード、P2Pトラフィックなど、同時に多数の接続を処理している場合。 - 頻繁なURLテスト/ヘルスチェック:
プロキシグループのurl-test
やfallback
、proxy-providers
のhealthcheck
のinterval
が短すぎる場合、頻繁なテストでCPUを消費します。間隔を長くしてみてください(例: 300秒→600秒)。 - 不正なルール/DNS設定:
無限ループや誤ったルーティングを引き起こすルールがCPUを消費する場合があります。ログを詳細に確認。 - Clashバージョンの問題:
特定のバージョンにパフォーマンス問題がある可能性。最新バージョンにアップデートするか、以前の安定バージョンに戻してみる。
サブスクリプションが更新できない
- サブスクリプションURLが間違っている/期限切れ:
プロバイダーから提供されたURLが正確か、有効期限が切れていないか確認。 - インターネット接続の問題:
ClashがサブスクリプションURLに直接アクセスできない場合(例えば、Clash自体がプロキシを必要とする環境下で、そのプロキシが動作していない)。 - プロバイダー側のサーバー問題:
一時的にプロバイダーのサブスクリプションサーバーがダウンしている可能性があります。 config.yaml
のproxy-providers
設定:
url
,interval
,path
が正しく設定されているか確認。
ログの見方
Clashのログは問題解決の強力な手がかりです。
* GUI版: クライアントの「Log」タブまたは「Dashboard」の「Logs」セクション。
* CLI版: sudo journalctl -u clash -f
でリアルタイムログを確認。
ログには、接続の成功/失敗、ルールマッチ、DNS解決の状態、エラーメッセージなどが表示されます。
例えば、[Rule] Match Rule...
のようなメッセージは、どのルールにトラフィックがマッチしたかを示します。
[Proxy] ...
のようなメッセージは、プロキシサーバーの接続状況を示します。
その他の便利な機能とツール
Clash Dashboard (Yacd, Clash Verge Dashboardなど)
Clash CoreはCLIで動作しますが、その設定や状態をグラフィカルに管理するためのウェブベースのDashboardが存在します。Yacd (Yet Another Clash Dashboard) が最も有名です。Clash VergeのようなGUIクライアントは、YacdのようなDashboardを内部に統合しています。
Dashboardを使えば、以下のことが可能です。
* Clashの起動・停止・設定のリロード
* プロファイルの管理(追加、削除、切り替え)
* プロキシグループの手動選択
* リアルタイム接続の監視、ブロック、切断
* リアルタイムログの表示
* Clash設定のGUI編集
external-controller
を適切に設定していれば、ブラウザでhttp://127.0.0.1:9090/ui
にアクセスすることでDashboardを利用できます。
Clash Vergeを使っている場合は、内蔵のUIがそのままDashboardの機能を提供します。
Proxy Chain (プロキシチェイン)
Clashは、複数のプロキシサーバーを連続して経由するプロキシチェインをサポートします。これは、より高い匿名性を実現したり、特定の地理的制限を回避したりするのに役立ちます。
config.yaml
のproxies
セクションで、他のプロキシをネストすることでチェインを構築できます。
yaml
proxies:
- name: "ProxyA-Via-ProxyB"
type: ss # または他のプロトコル
server: proxyA.server.com
port: 443
cipher: aes-256-gcm
password: "passwordA"
# このプロキシは、さらに別のプロキシを経由する
# Clashでは通常、グループ内で別のグループを指定することでチェインを構成する
# 例: ProxyAがProxyBを経由したい場合
# proxy-groups:
# - name: "ProxyB-Group"
# type: select
# proxies: ["ProxyB"]
# - name: "ProxyA-Direct-Or-Via-B"
# type: select
# proxies: ["ProxyA", "ProxyB-Group"] # これはProxyAのトラフィックがProxyBを経由するわけではない
# Clashのプロキシチェインは通常、プロキシプロバイダー側で提供されるか、
# あるプロキシプロトコルが別のプロキシプロトコルをラップする形で実装されることが多い
# 具体的なチェインの例は各プロトコルとClashのドキュメントを参照すること
ClashのYAMLでは、直接的なネストによるチェイン定義は限られますが、プロキシプロトコルによっては、その内部で別のプロキシ(例: underlying-proxy
)を指定することでチェインを作成できるものもあります。プロバイダーによっては、すでにチェインされたプロキシを提供している場合もあります。
AdGuard Home / Pi-holeとの連携
ClashのDNS機能は強力ですが、AdGuard HomeやPi-holeのようなネットワークワイドな広告ブロッカーと組み合わせることで、さらに効果的な広告ブロックやDNS管理が可能です。
- ClashのDNS設定を調整:
Clashのdns:
セクションで、nameserver
をAdGuard Home/Pi-holeのIPアドレスに設定します。
yaml
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: redir-host
nameserver:
- 192.168.1.100 # AdGuard Home / Pi-holeのIPアドレス
fallback:
- https://1.1.1.1/dns-query - UbuntuのシステムDNSをClashに向ける:
Ubuntuのネットワーク設定で、DNSサーバーを127.0.0.1
(Clashのリッスンアドレス)に設定します。
これにより、すべてのDNSリクエストがまずClashに送られ、ClashがそれをAdGuard Home/Pi-holeに転送します。AdGuard Home/Pi-holeで広告ドメインがブロックされた後、残りのリクエストがClashによって通常のDNSサーバー(またはプロキシ経由のDNS)に転送されます。この構成により、広告ブロックとプロキシルーティングの両方をシームレスに実現できます。
まとめと今後の展望
本記事では、Ubuntu環境におけるClashの導入から、GUI版とCLI版の設定、サブスクリプション管理、プロキシモード、ルールセットのカスタマイズ、プロキシグループの活用、詳細設定項目、そしてトラブルシューティングに至るまで、Clashを深く理解し、使いこなすための包括的なガイドを提供しました。
Clashは、その柔軟なルールベースルーティングと多様なプロトコルサポートにより、単なるプロキシクライアントにとどまらない、強力なネットワーク管理ツールです。UbuntuというLinuxベースの環境でClashを導入することで、GUIとCLIの双方の利点を活かし、システム全体を詳細に制御できるという大きなメリットがあります。
インターネット環境が複雑化し、情報アクセスの自由が脅かされる現代において、Clashのようなツールは私たちのデジタルライフをより安全で、より自由なものにするための重要な手段となり得ます。
今後の展望
- Clash Metaなどのフォーク版: Clash Coreは強力ですが、Clash Metaなど、QUICサポート、GEOSITEルール、JavaScriptスクリプトなど、さらに多くの先進機能を備えたフォーク版も存在します。これらの導入を検討することで、より高度な利用が可能になります。
- Dockerでの運用: Clash CoreをDockerコンテナとして実行することで、依存関係の管理が容易になり、異なる環境へのデプロイも簡素化されます。サーバー環境でのClash運用には非常に便利な方法です。
- より詳細なスクリプトと自動化:
cron
ジョブやsystemdタイマーとシェルスクリプトを組み合わせることで、プロファイルの定期的な更新、接続状態の監視、自動的な問題解決など、Clashの運用をさらに自動化できます。
Clashは一度設定をマスターすれば、非常に信頼性の高いツールとなります。本ガイドが、UbuntuでのClash導入と活用の一助となれば幸いです。安全で自由なインターネットの旅をお楽しみください!