はい、承知いたしました。Ubuntuユーザー向けに、Clashのインストールから詳細な活用法までを解説する、約5000語の記事を作成します。
Ubuntuユーザー必見!革新的プロキシツール「Clash」の導入と徹底活用ガイド
はじめに:Clashとは何か、そしてなぜUbuntuで使うのか
インターネット上の情報にアクセスする際、地理的な制約やネットワークの制限に直面することは少なくありません。また、プライバシー保護やセキュリティ確保のために、通信を匿名化したり特定の経路を経由させたりしたいと考えるユーザーもいるでしょう。このような目的を達成するためのツールとして、「プロキシ」が広く利用されています。
数あるプロキシツールの中でも、近年特に注目を集めているのが「Clash」です。Clashは、単なるシンプルなプロキシサーバーとは異なり、高度なルールベースのルーティング機能を備えています。これにより、「このサイトへのアクセスはプロキシAを経由する」「このIPアドレスへの通信はプロキシBを使う」「特定のアプリケーションからの接続は直接インターネットへ」といったように、通信先やアプリケーションに応じて最適なプロキシ経路を自動的に選択させることができます。
YAML形式で記述される柔軟な設定ファイル、複数のプロトコル(Shadowsocks, VMess, Trojan, HTTP, SOCKS5など)への対応、DNS処理の強化、RESTful APIによる外部制御といった特徴を持ち、非常に高機能かつカスタマイズ性が高いツールとして、多くのユーザーに支持されています。
特に、サーバー用途からデスクトップ利用まで幅広い用途で使われるLinuxディストリビューションの代表格であるUbuntuにおいて、Clashはその真価を発揮します。CLI版を利用してサーバー上でバックグラウンドプロセスとして安定稼働させたり、GUI版を使ってデスクトップ環境で手軽にプロキシ設定を管理したりと、Ubuntuの柔軟な環境とClashの多機能性は非常に相性が良いと言えます。
本記事では、Ubuntu環境でClashを導入し、その豊富な機能を最大限に活用するための詳細な手順と解説を提供します。CLI版とGUI版のインストール方法から、YAML設定ファイルの書き方、実行・管理方法、さらにはシステム全体や特定アプリケーションへのプロキシ適用方法、高度な活用術、トラブルシューティングまで、UbuntuでClashを使いこなすために必要な知識を網羅的に解説します。
プロキシ初心者の方から、より高度なネットワーク制御を目指す方まで、UbuntuユーザーがClashを理解し、自身の環境で効果的に活用できるようになることを目指します。さあ、革新的なプロキシツールClashの世界へ飛び込みましょう。
1. Clashの基本理解:その仕組みと主要機能
Clashの導入と活用を始める前に、まずはClashがどのようなツールで、どのような仕組みで動作するのかを理解しておきましょう。
1.1 Clashの種類と特徴
Clashにはいくつかの派生バージョンやGUIクライアントが存在します。本記事で主に扱うのは以下の2種類です。
- Clash (Core): これはClashの最も基本的な部分であり、プロキシ処理、ルールマッチング、DNS処理など、主要な機能を提供するCLI(コマンドラインインターフェース)プログラムです。公式には「Clash Premium」と呼ばれる商用版と、コミュニティ主導で開発されている「OpenClash」などのオープンソース版が存在します。Ubuntuサーバーなどでバックグラウンド実行させる際に利用されるのは、このCore版です。
- Clash for Linux (GUI Client): Clash Coreをバックエンドとして利用し、GUIを提供することで設定の管理や状態の確認を容易にするデスクトップアプリケーションです。AppImage形式などで提供されることが多く、Ubuntuデスクトップ環境での利用に適しています。GUIクライアントは他にも様々なプラットフォーム向けに存在しますが、今回はUbuntuに特化して説明します。
重要: 本記事では、特に断りがない限り「Clash」という言葉はCore版を指すことが多いですが、文脈に応じてGUI版を指すこともあります。CLIでの設定や運用に焦点を当てる部分はCore版の解説、デスクトップでの利用やGUI操作に焦点を当てる部分はGUI版の解説として読み進めてください。
1.2 Clashの動作原理
Clashの動作の核となるのは、YAML形式のコンフィグファイルです。このファイルに、利用可能なプロキシサーバー情報、通信をどのようにルーティングするかを定義するルール、プロキシサーバーをグループ化して管理する方法(ポリシーグループ)、DNS設定などが記述されています。
Clashは起動すると、このコンフィグファイルを読み込み、設定されたポートでプロキシサーバーとして動作を開始します。アプリケーションやシステムからの通信要求がClashのプロキシポートに到達すると、Clashは以下の処理を行います。
- ターゲット情報の取得: 接続先のアドレス(ドメイン名またはIPアドレス)とポート番号を取得します。
- DNS解決 (必要な場合): 接続先がドメイン名の場合、設定されたDNSサーバーを使ってIPアドレスを解決します。Clash独自のDNS機能(Fake-IPなど)を利用することも可能です。
- ルールマッチング: 取得した接続先情報(IPアドレス、ドメイン名、GeoIP情報など)、発信元プロセス名(Linux限定機能)、パケットの内容などを基に、コンフィグファイルに記述されたルールリストを上から順に評価します。
- ポリシーの適用: マッチしたルールに紐付けられた「ポリシー」を実行します。ポリシーは、特定のプロキシサーバーを使用するか、プロキシグループ(後述)を使用して最適なプロキシを選択するか、直接通信(DIRECT)するか、通信を拒否(REJECT)するかなどを指定します。
- 通信の転送: 適用されたポリシーに従い、実際の通信を指定されたプロキシサーバー経由、または直接インターネットへ転送します。
このルールベースのルーティングにより、ユーザーはきめ細やかなネットワーク制御を実現できます。
1.3 Clashの主要機能
Clashが提供する主な機能は以下の通りです。
- マルチプロトコル対応: Shadowsocks(R), VMess, Trojan, HTTP, SOCKS5など、様々なプロキシプロトコルに対応しています。
- ルールベースルーティング: ドメイン、IPアドレス、GeoIP(地理情報)、プロセス名などに基づいて通信経路を決定できます。
- ポリシーグループ: 複数のプロキシサーバーをグループ化し、自動選択(遅延テストによる最速選択)、手動選択、フォールバック(プライマリが利用不可の場合にセカンダリに切り替え)、負荷分散などの戦略を設定できます。
- 拡張DNS機能: Fake-IPモード(ローカルで偽のIPアドレスを応答し、Clash内部で解決・ルーティング)、特定のドメインに対するカスタムDNSサーバー設定、DNSリバインディング攻撃対策など、高度なDNS処理が可能です。
- RESTful API: 外部からClashの状態監視、設定変更、プロキシ切り替えなどを行うためのAPIを提供します。多くのGUIクライアントやWeb UIはこのAPIを利用しています。
- Web UI: デフォルトでシンプルなWebインターフェースが組み込まれており、ブラウザからClashの状態確認や設定変更が可能です(
external-controller
設定が必要)。 - 透過プロキシ (TProxy/Redir): システムレベルで通信をインターセプトし、アプリケーションがプロキシ設定を知らなくてもClashを経由させる機能(Root権限とファイアウォール設定が必要)。
これらの機能を組み合わせることで、非常に柔軟かつ強力なプロキシ環境を構築できます。
2. UbuntuへのClashインストール方法
UbuntuにClashをインストールする方法はいくつかあります。CLI版(Core)をインストールしてシステムサービスとして実行する方法と、GUI版をインストールしてデスクトップアプリケーションとして利用する方法が一般的です。
2.1 CLI版 (Clash Core) のインストール
Ubuntuサーバーや、GUIを使わない環境でClashをバックグラウンド実行させたい場合に利用します。公式のGitHubリリースからバイナリをダウンロードするのが最も確実な方法です。
-
最新版の確認:
Clash Coreの公式GitHubリリースページを確認します。通常はDreamacro/clash
リポジトリを参照します。
https://github.com/Dreamacro/clash/releases
最新のリリースタグ(例:v1.18.0
)と、Ubuntuが動作しているアーキテクチャ(amd64
/x86_64
またはarm64
/aarch64
など)に対応したファイルをダウンロードします。通常はclash-linux-[architecture]-[version].gz
という命名規則になっています。 -
バイナリのダウンロード:
ターミナルを開き、wget
またはcurl
コマンドを使ってダウンロードします。例として、amd64
アーキテクチャの最新版をダウンロードする場合(バージョン番号は適宜置き換えてください):“`bash
一時ディレクトリに移動
cd /tmp
リリースページから最新版のURLを探す (例: v1.18.0 amd64)
ダウンロードURLはリリースのたびに変わるので、必ずリリースページで確認してください
CLASH_VERSION=”1.18.0″
CLASH_ARCH=”amd64″ # または arm64 など
DOWNLOAD_URL=”https://github.com/Dreamacro/clash/releases/download/v${CLASH_VERSION}/clash-linux-${CLASH_ARCH}-v${CLASH_VERSION}.gz”echo “Downloading Clash from: ${DOWNLOAD_URL}”
wget “${DOWNLOAD_URL}” -O clash.gzファイルがダウンロードされたか確認
ls -l clash.gz
“` -
ファイルの展開と配置:
ダウンロードした.gz
ファイルを展開し、実行パスが通っているディレクトリ(例:/usr/local/bin/
)に配置します。/usr/local/bin/
に配置するには管理者権限(sudo
)が必要です。“`bash
展開
gzip -d clash.gz
実行ファイルに名前を変更
mv clash clash-linux-${CLASH_ARCH}
実行権限を付与
chmod +x clash-linux-${CLASH_ARCH}
/usr/local/bin/ に配置(システム全体で使えるように)
sudo mv clash-linux-${CLASH_ARCH} /usr/local/bin/clash
``
clash` コマンドとしてシステム全体から呼び出せるようになります。
これで、 -
動作確認:
正しくインストールできたか確認します。bash
clash -v
バージョン情報が表示されれば成功です。
2.2 GUI版 (Clash for Linux) のインストール
Ubuntuのデスクトップ環境で、Clash CoreのGUIラッパーとして利用したい場合に適しています。設定の編集、プロキシの切り替え、接続ログの確認などを視覚的に行えます。多くの場合、AppImage形式で提供されます。
-
最新版の確認:
Clash for Linuxの公式GitHubリリースページを確認します。
https://github.com/clash-verge-rev/clash-verge-rev/releases
(注意: 以前はclash-verge
が主流でしたが、現在はclash-verge-rev
が活発に開発されています。他にもクライアントは存在しますが、ここではclash-verge-rev
を例に取ります。)
最新のリリースタグと、Ubuntuが動作しているアーキテクチャ (x64
またはarm64
など) に対応したAppImage
ファイルを探します。 -
AppImageファイルのダウンロード:
例として、x64
アーキテクチャのAppImageファイルをダウンロードします(バージョン番号は適宜置き換えてください)。“`bash
ダウンロードディレクトリに移動
cd ~/Downloads
リリースページから最新版のURLを探す (例: v1.6.3 x64 AppImage)
ダウンロードURLはリリースのたびに変わるので、必ずリリースページで確認してください
APPIMAGE_VERSION=”1.6.3″
APPIMAGE_ARCH=”x64″ # または arm64 など
APPIMAGE_URL=”https://github.com/clash-verge-rev/clash-verge-rev/releases/download/v${APPIMAGE_VERSION}/Clash.Verge_linux_${APPIMAGE_ARCH}-${APPIMAGE_VERSION}.AppImage”echo “Downloading Clash for Linux from: ${APPIMAGE_URL}”
wget “${APPIMAGE_URL}” -O Clash.Verge.AppImageファイルがダウンロードされたか確認
ls -l Clash.Verge.AppImage
“` -
実行権限の付与:
ダウンロードしたAppImageファイルに実行権限を付与します。bash
chmod +x Clash.Verge.AppImage -
実行:
ファイルをダブルクリックするか、ターミナルから実行します。bash
./Clash.Verge.AppImage
初めて実行する際は、システムへの統合(メニューへの追加など)を尋ねられることがあります。デスクトップ環境で便利に使うために統合することをお勧めします。 -
配置場所の変更 (任意):
~/Downloads
以外の場所にAppImageファイルを移動することもできます。よく使われる場所としては、ホームディレクトリ内の隠しディレクトリ(例:~/.local/opt/Clash.Verge/
)や、ユーザー独自のアプリケーション用ディレクトリなどがあります。bash
mkdir -p ~/.local/opt/Clash.Verge
mv Clash.Verge.AppImage ~/.local/opt/Clash.Verge/
この場合、実行する際は移動先のパスを指定します。bash
~/.local/opt/Clash.Verge/Clash.Verge.AppImage
2.3 その他のインストール方法 (非公式・上級者向け)
- パッケージマネージャー (非公式): 一部のユーザーリポジトリ(PPAなど)やAUR (Arch User Repository) にはClash CoreやGUIクライアントのパッケージが存在する場合があります。しかし、これらは公式に提供されているものではなく、セキュリティリスクやメンテナンス性の問題がある可能性があるため、利用する際は注意が必要です。公式リリースからのインストールが推奨されます。
- Docker: DockerコンテナとしてClash Coreを実行することも可能です。これにより、システム環境を汚さずにClashを分離して実行できます。Dockerに慣れているユーザーには有効な選択肢です。
本記事では、公式リリースのCLI版とGUI版のインストールを中心に解説を進めます。
3. Clashの基本的な設定:YAMLコンフィグファイルの作成と理解
Clashの機能は、YAML形式のコンフィグファイルによってすべて制御されます。このファイルを理解し、適切に編集することがClashを使いこなす上での最重要ポイントです。
3.1 コンフィグファイルの場所
Clash Coreは、デフォルトで以下の場所にあるコンフィグファイルを探します。
~/.config/clash/config.yaml
(推奨される場所)./config.yaml
(実行ファイルと同じディレクトリ)
GUI版クライアントの場合、クライアント自体がコンフィグファイルを管理し、Coreに渡します。通常はGUI上でコンフィグのインポートや編集を行います。CLI版を手動で設定する場合は、~/.config/clash/
ディレクトリを作成し、その中に config.yaml
ファイルを置くのが一般的です。
bash
mkdir -p ~/.config/clash/
3.2 コンフィグファイルの構造と主要項目
config.yaml
ファイルは、以下のような構造を持っています。各セクションでClashの様々な設定を定義します。
“`yaml
全体設定
port: 7890 # HTTPプロキシポート
socks-port: 7891 # SOCKS5プロキシポート
redir-port: 7892 # Linux/macOS向け透過プロキシポート (Root権限必要)
tproxy-port: 7893 # Linux向け透過プロキシポート (Root権限必要)
mixed-port: 7890 # HTTPとSOCKS5を両方listenするポート (port, socks-portと同時に設定不可)
allow-lan: false # LANからの接続を許可するか (true/false)
bind-address: “” # Listenするネットワークインターフェース (例: 127.0.0.1, , 192.168.1.100)
mode: rule # ルーティングモード (direct, rule, global)
log-level: info # ログレベル (debug, info, warning, error, silent)
external-controller: 127.0.0.1:9090 # RESTful API/Web UIをListenするアドレスとポート
external-ui: dashboard # 組み込みWeb UI (dashboard, yacdなど) を使う場合
secret: “your_secret_password” # APIアクセス用のパスワード (任意)
DNS設定
dns:
enable: true
listen: 0.0.0.0:53 # DNSサーバーをListenするアドレスとポート (ClashをDNSサーバーとして使う場合)
enhanced-mode: fake-ip # DNS処理モード (redir-host, fake-ip)
fake-ip-range: 198.18.0.1/16 # Fake-IPモードで使うIP範囲 (RFC6890準拠)
fake-ip-filter: # Fake-IPを使わないドメインリスト
– +.mediafire.com
– +.v2ex.com
– +.javbus.com
default-nameserver: # デフォルトの外部DNSサーバー (Fake-IP以外の解決に使用)
– 114.114.114.114
– 223.5.5.5
nameserver: # 特定のドメインに使用するDNSサーバー (優先順位あり)
– https://doh.pub/dns-query
– https://dns.alidns.com/dns-query
fallback: # デフォルトnameserverが失敗した場合に使用するDNSサーバー (海外向けなど)
– tcp://1.1.1.1:53
– tcp://8.8.8.8:53
fallback-filter: # fallback DNSを使うドメインリスト (geosite, ipcidrルールと連携)
rules:
– GEOIP,CN,DIRECT # 中国国内IPはfallback DNSを使わない
geoip: true # GEOIPルールを有効化
プロキシサーバーリスト
proxies:
# shadowsocks例
– name: “Example-SS”
type: ss
server: your_ss_server_ip
port: 443
cipher: aes-256-gcm
password: “your_ss_password”
udp: true # UDPプロキシを有効にするか
# vmess例
– name: “Example-VMess”
type: vmess
server: your_vmess_server_ip
port: 10000
uuid: “your_vmess_uuid”
alterId: 0
cipher: auto
network: tcp # または ws, http, quic, grpc
tls: true # TLSを有効にするか
servername: “your_vmess_tls_servername” # TLS証明書の検証に使用
# ws-opts (websocket設定)
# http-opts (http偽装設定)
# grpc-opts (grpc設定)
# trojan例
– name: “Example-Trojan”
type: trojan
server: your_trojan_server_ip
port: 443
password: “your_trojan_password”
tls: true
servername: “your_trojan_tls_servername”
# http/socks5プロキシ例
– name: “Example-HTTP”
type: http
server: 192.168.1.100
port: 8080
username: “user” # 認証が必要な場合
password: “pass”
– name: “Example-SOCKS5”
type: socks5
server: 192.168.1.101
port: 1080
username: “user” # 認証が必要な場合
password: “pass”
udp: true
プロキシグループ (ポリシーグループ)
proxy-groups:
– name: “🚀 Proxy” # グループ名
type: select # 選択タイプ (select, fallback, load-balance, url-test, manual, auto)
proxies: # このグループに含めるプロキシまたは他のグループ名
– Example-SS
– Example-VMess
– Example-Trojan
– DIRECT # 特別なキーワード: 直接通信
– REJECT # 特別なキーワード: 通信拒否
– 🎯 Global # 他のポリシーグループを参照
-
name: “♻️ Auto Select”
type: url-test # タイプ: URLテストで最速を選択
url: http://www.gstatic.com/generate_204 # テストURL
interval: 300 # テスト間隔 (秒)
tolerance: 50 # 遅延許容範囲 (ms)
proxies:- Example-SS
- Example-VMess
- Example-Trojan
-
name: “🇯🇵 Japan”
type: select
proxies:- Japan-Server-A
- Japan-Server-B
- 🚀 Proxy # 他のグループをネストできる
# … 他のグループ定義 …
ルールリスト
rules:
– MATCH,🎯 Global # デフォルトルール: 他のどのルールにもマッチしない場合は「🎯 Global」ポリシーグループを使用
# 特定のドメインへのアクセスは特定のポリシーグループを使う
– DOMAIN-SUFFIX,google.com,🚀 Proxy
– DOMAIN-KEYWORD,google,🚀 Proxy
– DOMAIN,www.youtube.com,🚀 Proxy
– DOMAIN-SUFFIX,github.com,🚀 Proxy
# 特定のIP範囲へのアクセス
– IP-CIDR,192.168.1.0/24,DIRECT,no-resolve # ローカルネットワークは直接通信
– IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
– IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
– IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
# 中国国内IPへのアクセスは直接通信 (GeoIPリストを使用)
– GEOIP,CN,DIRECT
# 特定プロセスからのアクセス (Linux限定機能, Requires root or CAP_NET_RAW/CAP_NET_ADMIN)
– PROCESS-NAME,firefox,🚀 Proxy # Firefoxからのアクセスはプロキシ経由
– PROCESS-NAME,thunderbird,DIRECT # Thunderbirdからのアクセスは直接
# 特定のプロトコル/ポートへのアクセス
– DST-PORT,22,DIRECT # SSHポート(22)へのアクセスは直接 (通常不要だが例として)
# Final rule: Must be at the end
– FINAL,🚀 Proxy # デフォルトルールと同じだが、明示的に記述することもある
“`
各セクションの詳細は以下の通りです。
port
,socks-port
,mixed-port
,redir-port
,tproxy-port
: ClashがHTTP/SOCKS5/透過プロキシとしてListenするポート番号を指定します。allow-lan
:true
にすると、Clashを実行しているマシンだけでなく、同じLAN上の他のマシンからもClashを経由できるようになります。セキュリティリスクを理解して設定してください。bind-address
: ClashがListenするネットワークインターフェースを指定します。*
はすべてのインターフェースを意味します。mode
: 大まかなルーティングモードを指定します。rule
: コンフィグファイルに記述されたルールに従ってルーティングします(最も一般的)。global
: すべての通信をデフォルトのポリシーグループ(通常は最初のグループ)経由でルーティングします。direct
: すべての通信を直接インターネットへ転送します(プロキシを使用しない)。
log-level
: 表示するログの詳細度を設定します。デバッグ時はdebug
が役立ちますが、通常はinfo
で十分です。external-controller
: RESTful APIがListenするアドレスとポートを指定します。Web UIやGUIクライアントはこのポートに接続してClashを制御します。127.0.0.1:9090
はローカルホストからのみアクセス可能に設定した例です。0.0.0.0:9090
にするとLAN内の他のマシンからもアクセス可能になります(これもセキュリティリスクを理解して設定してください)。external-ui
:external-controller
を有効にした場合に、組み込みまたは外部のWeb UIアセットを提供するディレクトリまたは組み込みUIの名前を指定します。dashboard
はClashに組み込まれているシンプルなUI、yacd
などは人気のサードパーティUIの名前です。secret
:external-controller
へのアクセスにパスワードを設定できます。特にallow-lan
やbind-address: 0.0.0.0
を設定する場合は強く推奨されます。dns
: DNS設定を詳細に行います。enhanced-mode
はFake-IPまたはRedir-Hostを選択でき、Fake-IPは特に証明書エラーを回避しやすく、ドメインベースのルーティングと相性が良いモードです。nameserver
は通常の名前解決に使うDNSサーバー、fallback
は特定の条件(GeoIPなど)で使われるDNSサーバーを指定します。proxies
: 利用可能なすべてのプロキシサーバーをリストアップします。各プロキシの設定はプロトコルによって異なります(SS, VMess, Trojanなどの例を参考にしてください)。proxy-groups
:proxies
で定義したプロキシをグループ化し、グループごとのルーティング戦略を定義します。select
はユーザーが手動でプロキシを選択するタイプ、url-test
は定期的にURLにアクセスして遅延を測定し、最も応答の速いプロキシを自動選択するタイプです。fallback
はリストの最初のプロキシを使い、接続できない場合に次のプロキシに切り替えます。load-balance
は通信を複数のプロキシに分散します。rules
: 通信をどのポリシー(プロキシ、グループ、DIRECT, REJECT)にルーティングするかを定義するルールのリストです。上から順に評価され、最初にマッチしたルールが適用されます。DOMAIN-SUFFIX
: 指定したドメインまたはそのサブドメインにマッチ。DOMAIN-KEYWORD
: 指定したキーワードを含むドメインにマッチ。DOMAIN
: 指定した完全に一致するドメインにマッチ。IP-CIDR
: 指定したIPアドレス範囲にマッチ。no-resolve
オプションを付けると、ルールの評価時にDNSルックアップを行いません。GEOIP
: 指定した国コードのIPアドレスにマッチ(ClashのGEOIPデータベースが必要)。PROCESS-NAME
: 指定したプロセス名からの通信にマッチ(Linux限定)。DST-PORT
: 指定した宛先ポートにマッチ。MATCH
: 最後のルールとして記述し、他のどのルールにもマッチしない通信に適用するデフォルトポリシーを指定します。
3.3 コンフィグファイルの作成・編集
コンフィグファイルは、お好みのテキストエディタで作成・編集できます。Ubuntuであれば、nano
, vim
, gedit
, VS Code
など様々なエディタが利用可能です。
“`bash
nanoで編集する場合
nano ~/.config/clash/config.yaml
VS Codeで編集する場合 (VS Codeがインストールされていれば)
code ~/.config/clash/config.yaml
“`
上記の構造と主要項目を参考に、ご自身のプロキシサーバー情報や希望するルーティング設定に合わせて config.yaml
ファイルを記述してください。
3.4 サブスクリプションURLからのコンフィグ取得
プロキシサービスプロバイダーによっては、Clash用のコンフィグファイルをサブスクリプションURLとして提供しています。このURLからコンフィグを取得し、利用するのが一般的です。
手動で取得する場合、curl
や wget
コマンドを使ってURLからダウンロードし、内容を ~/.config/clash/config.yaml
に保存します。
“`bash
サブスクリプションURLを置き換えてください
SUB_URL=”https://example.com/your/clash/subscription”
ダウンロードしてファイルに保存
curl -o ~/.config/clash/config.yaml “$SUB_URL”
または wget -O ~/.config/clash/config.yaml “$SUB_URL”
“`
注意: サブスクリプションURLから取得したコンフィグは、プロキシ情報、グループ、基本的なルールが含まれていることが多いですが、詳細なカスタム設定(例: 特定のアプリケーションのルール、高度なDNS設定)は含まれていない場合があります。必要に応じて、ダウンロードしたファイルを編集してカスタマイズしてください。
GUIクライアント (Clash for Linuxなど) を利用する場合、通常はGUI上でサブスクリプションURLを登録する機能が提供されており、自動的にコンフィグのダウンロードと更新を行ってくれます。CLI版で自動更新を行いたい場合は、Clashの external-controller
機能とスクリプトを組み合わせるか、サードパーティ製のコンフィグ管理ツールを利用する必要があります。
4. Clashの実行と管理
コンフィグファイルが準備できたら、Clashを起動してプロキシとして機能させます。Ubuntuでは、CLI版をバックグラウンドで安定稼働させるためにsystemdサービスとして登録するのが推奨されます。GUI版はデスクトップアプリケーションとして起動します。
4.1 CLI版の実行
4.1.1 手動実行
最も簡単な方法は、ターミナルから直接実行することです。
bash
clash -f ~/.config/clash/config.yaml
-f
オプションでコンフィグファイルのパスを指定します。指定しない場合は、デフォルトの場所 (~/.config/clash/config.yaml
など) を探します。
ログがターミナルに表示され、Clashがフォアグラウンドで実行されます。ターミナルを閉じたり、Ctrl+C
を押したりするとClashは停止します。
4.1.2 バックグラウンド実行 (一時的)
一時的にバックグラウンドで実行したい場合は、nohup
コマンドや &
を利用できます。
bash
nohup clash -f ~/.config/clash/config.yaml &
この方法では、ターミナルを閉じてもClashは実行を続けます。ただし、プロセスの管理(停止、再起動など)はやや煩雑になります。安定した運用にはsystemdサービス化が推奨されます。
4.1.3 systemdサービスとしての実行 (推奨)
Ubuntuでサーバープロセスを管理するための標準的な方法がsystemdです。Clashをsystemdサービスとして登録することで、システムの起動時に自動的に起動させたり、プロセスの状態を監視・管理したりすることが容易になります。
-
systemdサービスファイルの作成:
clash.service
という名前でサービスファイルを作成し、/etc/systemd/system/
ディレクトリに配置します。これには管理者権限が必要です。bash
sudo nano /etc/systemd/system/clash.service -
サービスファイルの内容:
以下の内容を記述します。User
とGroup
はClashを実行するユーザーを指定します。ここでは現在のユーザー(${USER}
)とします。ExecStart
はClashの実行コマンドです。“`ini
[Unit]
Description=Clash daemon
After=network.target[Service]
Type=simpleChange ‘your_username’ to your actual username
User=%i
Group=%iSpecify the path to the clash executable if it’s not in the default PATH
ExecStart=/usr/local/bin/clash -f /home/%i/.config/clash/config.yaml
Restart=on-failure # 終了コードが0以外の場合に再起動
LimitNPROC=500 # プロセス数の制限
LimitNOFILE=100000 # ファイルディスクリプタ数の制限
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN # 必要に応じて権限を付与 (TProxyなどを使う場合)
AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN # 同上[Install]
WantedBy=multi-user.target
``
%i
**注意:**はサービスインスタンスの名前(ここでは
clash)をユーザー名として使用するためのsystemdの記法です。
ExecStartの
/home/%i/.config/clash/config.yamlの部分が、サービスを実行するユーザーのホームディレクトリにあるコンフィグファイルを指定します。
Userと
Groupを特定のユーザー名(例:
clashuser,
clashuser)に変更する場合は、
%iをそのユーザー名に置き換え、コンフィグファイルのパスもそのユーザーのホームディレクトリに合わせる必要があります。また、必要であれば
/usr/local/bin/clashもClash実行ファイルの実際のパスに合わせてください。透過プロキシ機能(TProxy/Redir)を使う場合は、
CapabilityBoundingSetと
AmbientCapabilities` の設定が必要になることが多いですが、通常の使用では不要です。 -
systemdに設定を反映:
新しいサービスファイルを作成または編集したら、systemdに設定を再読み込みさせます。bash
sudo systemctl daemon-reload -
サービスの有効化と起動:
システムの起動時にClashが自動的に起動するようにサービスを有効化し、すぐに起動します。bash
sudo systemctl enable clash@${USER} # サービスを有効化 (ユーザー名を指定)
sudo systemctl start clash@${USER} # サービスを起動 (ユーザー名を指定)
clash@${USER}
のように@
とユーザー名を付けるのは、サービスファイルでUser=%i
としているためです。これは「ユーザーインスタンスサービス」として実行する形式です。 -
サービスの状態確認:
Clashサービスが正常に動作しているか確認します。bash
sudo systemctl status clash@${USER}
Active: active (running)
と表示されていれば成功です。ログもここで確認できます。 -
サービスの停止、再起動:
サービスを停止・再起動するには以下のコマンドを使います。bash
sudo systemctl stop clash@${USER}
sudo systemctl restart clash@${USER}
これでClash Coreがシステムバックグラウンドで安定して動作するようになります。
4.2 GUI版の実行
GUI版クライアント (Clash for Linuxなど) をインストールした場合、通常はアプリケーションメニューから起動できます。AppImageファイルをダウンロードして実行権限を付与した場合は、ファイルをダブルクリックするか、ターミナルから実行します。
bash
/path/to/Clash.Verge.AppImage
GUIクライアントはClash Coreバイナリを内蔵しているか、別途ダウンロード・設定したCoreバイナリを利用するように設定できます。起動後、GUI上でコンフィグファイルのインポート(サブスクリプションURLの追加やローカルファイルの読み込み)を行い、Clash Coreを起動させる操作を行います。GUIの指示に従って設定を進めてください。
4.3 Clash Web UI / ダッシュボードの利用
external-controller
を設定している場合、ブラウザからWeb UIにアクセスしてClashの状態確認や簡単な操作を行うことができます。
-
Clashが実行中であること:
CLI版またはGUI版のClashが、external-controller
オプションを有効にして実行されている必要があります。 -
ブラウザでアクセス:
ブラウザを開き、コンフィグファイルで設定したexternal-controller
のアドレスとポートにアクセスします。デフォルト設定の例ではhttp://127.0.0.1:9090
になります。
もしsecret
パスワードを設定している場合は、アクセス時にパスワードの入力を求められます。 -
Web UIでできること:
Web UIの種類(標準ダッシュボード、YACDなど)によって表示や機能は異なりますが、一般的に以下のことが可能です。- Clashの現在の状態(モード、プロキシ、ログレベルなど)の確認。
- リアルタイムの接続状況(アクティブな接続、帯域幅使用量など)の確認。
- ルールがマッチした通信のログ確認。
- ポリシーグループの切り替え(特に
select
タイプのグループ)。 - プロキシサーバーの遅延テスト。
- 簡単な設定変更(モード切り替えなど)。
Web UIはClashの運用状況を把握し、必要に応じて手動でプロキシを切り替えるのに非常に便利です。
5. システム全体または特定アプリケーションへのプロキシ設定
Clashがプロキシとして起動したら、次にアプリケーションやシステム全体の通信をClash経由にする設定が必要です。これにはいくつかの方法があります。
5.1 環境変数によるプロキシ設定 (CLIアプリケーション向け)
多くのCLIアプリケーションは、標準的な環境変数を使ってプロキシ設定を読み込みます。
HTTP_PROXY
: HTTPプロキシサーバーのアドレスとポート (例:http://127.0.0.1:7890
)HTTPS_PROXY
: HTTPSプロキシサーバーのアドレスとポート (例:http://127.0.0.1:7890
)SOCKS_PROXY
: SOCKSプロキシサーバーのアドレスとポート (例:socks5://127.0.0.1:7891
)ALL_PROXY
: HTTP, HTTPS, FTPなどの全てのプロトコルに適用されるプロキシNO_PROXY
: プロキシを経由させたくないホスト名のリスト (例:localhost,127.0.0.1,.local,.internal
)
Clash Coreがポート7890 (HTTP) と7891 (SOCKS5) でListenしている場合、以下のように環境変数を設定できます。
“`bash
環境変数として設定(現在のターミナルセッションのみ有効)
export HTTP_PROXY=”http://127.0.0.1:7890″
export HTTPS_PROXY=”http://127.0.0.1:7890″
export SOCKS_PROXY=”socks5://127.0.0.1:7891″
export ALL_PROXY=”socks5://127.0.0.1:7891″ # SOCKS5がより汎用的
export NO_PROXY=”localhost,127.0.0.1″ # 例
確認
echo $HTTP_PROXY
“`
これらの環境変数を設定したターミナルから実行されるアプリケーションは、Clashを経由して通信するようになります。
永続化する方法:
シェルの設定ファイル (~/.bashrc
, ~/.zshrc
, ~/.profile
など) に上記の export
コマンドを記述しておくと、新しいターミナルセッションを開始するたびに自動的にプロキシ設定が適用されます。
“`bash
~/.bashrc などを編集
nano ~/.bashrc
ファイルの末尾などに以下の行を追加
Proxy settings for Clash
export HTTP_PROXY=”http://127.0.0.1:7890″
export HTTPS_PROXY=”http://127.0.0.1:7890″
export SOCKS_PROXY=”socks5://127.0.0.1:7891″
export ALL_PROXY=”socks5://127.0.0.1:7891″
export NO_PROXY=”localhost,127.0.0.1″
“`
変更を反映するには、設定ファイルを再読み込みするか、ターミナルを再起動します。
bash
source ~/.bashrc # または source ~/.zshrc など
この方法は多くのCLIツール(curl
, wget
, git
, パッケージマネージャーの一部など)に有効ですが、全てのアプリケーションがこれらの環境変数を認識するわけではありません。
5.2 デスクトップ環境のネットワーク設定 (GUIアプリケーション向け)
GNOMEやKDEなどのデスクトップ環境では、システム全体またはGUIアプリケーション向けのプロキシ設定を行うGUIツールが用意されています。
- 設定を開く: Ubuntuの「設定」(Settings)アプリケーションを開き、「ネットワーク」(Network)または「ネットワークプロキシ」(Network Proxy)の項目を探します。
- プロキシ設定の変更: 通常、「プロキシモード」(Proxy Mode)のような設定項目があります。
- 手動設定 (Manual): HTTP、HTTPS、SOCKSなどのプロトコルごとにClashのListenポート (
127.0.0.1:7890
や127.0.0.1:7891
) を手動で入力します。プロキシを使用しないホスト(NO_PROXY
に相当するもの)も設定できます。 - 自動設定 (Automatic / PAC File): PAC (Proxy Auto-Configuration) ファイルのURLを指定します。PACファイルはJavaScriptで記述されており、どのURLへのアクセスにどのプロキシを使うかを詳細に定義できます。ClashのWeb UI/APIはPACファイル生成機能を提供していることがあります。
- 手動設定 (Manual): HTTP、HTTPS、SOCKSなどのプロトコルごとにClashのListenポート (
デスクトップ環境の設定を変更すると、ほとんどのGUIアプリケーション(ブラウザ、メールクライアントなど)がその設定に従うようになります。
5.3 特定アプリケーションの設定
一部のアプリケーションは、独自のプロキシ設定を持っています。
- ブラウザ: FirefoxやChromeなどのブラウザは、システム設定を利用するか、独自のプロキシ設定を行うか、拡張機能(FoxyProxyなど)を使ってプロキシ設定を管理できます。特定のサイトだけプロキシを使うなどの柔軟な設定には拡張機能が便利です。
-
apt (パッケージマネージャー): APTもプロキシ経由での接続を設定できます。
/etc/apt/apt.conf.d/
ディレクトリに設定ファイルを配置します。bash
sudo nano /etc/apt/apt.conf.d/95proxy
ファイルに以下のような行を追加します(ClashのHTTPポートが7890の場合)。Acquire::http::Proxy "http://127.0.0.1:7890";
Acquire::https::Proxy "http://127.0.0.1:7890";
これにより、sudo apt update
やsudo apt upgrade
などのコマンドがClashを経由するようになります。 -
Docker: DockerデーモンやDockerクライアントもプロキシ設定が可能です。Dockerデーモン全体に適用する場合はsystemdのドロップインファイルを使ったり、Dockerクライアントに適用する場合は
~/.docker/config.json
を編集したりします。“`json
~/.docker/config.json の例
{
“proxies”: {
“default”: {
“httpProxy”: “http://127.0.0.1:7890”,
“httpsProxy”: “http://127.0.0.1:7890”,
“noProxy”: “localhost,127.0.0.1”
}
}
}
“`
5.4 透過プロキシ (TProxy/Redir) の設定 (上級者向け)
透過プロキシは、アプリケーションがプロキシ設定を行っていなくても、特定の通信をシステムレベルでインターセプトし、Clashに転送する技術です。これにより、プロキシ設定に対応していないアプリケーションの通信もClash経由にできます。これは高度な設定であり、Root権限とファイアウォールルール(iptablesまたはnftables)の知識が必要です。
-
Clashコンフィグの設定:
config.yaml
でredir-port
(macOS/Linux) またはtproxy-port
(Linux) を有効にします。TProxyはパケットの送信元IPを維持するため、一部のアプリケーションで問題が起こりにくいとされます。“`yaml
config.yaml
redir-port: 7892 # もしくは tproxy-port: 7893
allow-lan: true # LAN内のデバイスを透過プロキシしたい場合… その他の設定 …
“`
-
Linuxファイアウォール (iptables) の設定:
特定の通信を指定したポート(例: 7892/7893)にリダイレクトするiptablesルールを設定します。以下の例は、redir-port
(7892) を使い、Clashを実行しているユーザー(UID)以外のTCP通信を全てポート7892にリダイレクトするものです。“`bash
Clash実行ユーザーのUIDを調べる
id -u your_username
iptablesルール設定 (例: UID 1000のユーザーの通信は除外)
注意: これはあくまで例であり、環境に合わせてカスタマイズが必要です。
iptables-save/restore または iptables-persistent を使って永続化してください。
既存ルールのクリーンアップ (注意: 既存のファイアウォール設定を消す可能性があります)
sudo iptables -t nat -F
sudo iptables -t mangle -F
ClashがLISTENしているアドレスからの通信を除外 (無限ループ防止)
sudo iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp -j RETURN
sudo iptables -t nat -A PREROUTING -d 0.0.0.0/8 -p tcp -j RETURN
sudo iptables -t nat -A PREROUTING -d 10.0.0.0/8 -p tcp -j RETURN
sudo iptables -t nat -A PREROUTING -d 172.16.0.0/12 -p tcp -j RETURN
sudo iptables -t nat -A PREROUTING -d 192.168.0.0/16 -p tcp -j RETURNAdd other IP ranges/domains to exclude if needed
Clash実行ユーザーからの通信を除外 (例: UID=1000)
sudo iptables -t nat -A OUTPUT -m owner –uid-owner 1000 -p tcp -j RETURN
全てのTCP通信をredir-port (7892) にリダイレクト
sudo iptables -t nat -A PREROUTING -p tcp -j REDIRECT –to-ports 7892
sudo iptables -t nat -A OUTPUT -p tcp -j REDIRECT –to-ports 7892 # Localプロセスからの通信も対象にTProxy (tproxy-port: 7893) を使う場合の例 (requires CAP_NET_RAW/CAP_NET_ADMIN and advanced routing setup)
sudo iptables -t mangle -A PREROUTING -p tcp -j TPROXY –on-ip 127.0.0.1 –on-port 7893 –tproxy-mark 1
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
“`
透過プロキシの設定は非常に複雑で、ネットワーク構成や要件によって設定が大きく異なります。正確な設定方法については、Clashの公式ドキュメントや関連するネットワーク設定の資料を参照することを強くお勧めします。また、設定ミスはネットワーク接続を完全に失う可能性があります。
5.5 プロキシ設定の優先順位
一般的に、プロキシ設定は以下の優先順位で適用されます(アプリケーションによりますが、傾向として)。
- アプリケーション独自のプロキシ設定
- 環境変数 (
HTTP_PROXY
など) - デスクトップ環境のシステムプロキシ設定
- 透過プロキシ (システムレベルで強制)
透過プロキシ以外は、アプリケーションが設定を認識して従う必要があります。透過プロキシはアプリケーションの設定に関わらず通信をインターセプトします。
6. Clashの応用と活用法
基本的な設定と実行ができるようになったら、Clashの持つ豊富な機能をさらに活用してみましょう。
6.1 カスタムルールの作成
デフォルトのサブスクリプションに含まれるルールでは不十分な場合、独自のルールを追加・編集することで、特定のサイトやアプリケーションの通信をより細かく制御できます。
“`yaml
config.yaml の rules セクション
rules:
# 例: 特定のニュースサイトは常に直接通信
– DOMAIN-SUFFIX,example-news.com,DIRECT
– DOMAIN-SUFFIX,anotherexample-news.org,DIRECT
# 例: 特定のゲームサーバーへのアクセスはプロキシを使わない
– IP-CIDR,1.2.3.4/32,DIRECT # ゲームサーバーのIPアドレス
# 例: 特定のアプリケーション(Slackなど)は常にプロキシ経由
– PROCESS-NAME,slack,🚀 Proxy # 要 CAP_NET_RAW/CAP_NET_ADMIN 権限
# 例: 特定の動画サイトは別のプロキシグループを使う
– DOMAIN-SUFFIX,streaming.com,▶️ Streaming Proxy # 新しいポリシーグループを別途定義が必要
# 例: LAN内の特定のサーバーへのアクセスは直接
– IP-CIDR,192.168.5.0/24,DIRECT,no-resolve
# … 他のルール …
# 最後のルールはMATCHまたはFINAL
– MATCH,🎯 Global
“`
ルールを追加・変更する際は、リストの上位にあるルールが優先されることに注意してください。より具体的な(限定的な)ルールをリストの上部に、より一般的なルールをリストの下部に配置するのが定石です。
6.2 ポリシーグループの活用
複数のプロキシサーバーを利用している場合、ポリシーグループはそれらを効率的に管理し、最適なプロキシを選択するための強力な機能です。
“`yaml
config.yaml の proxy-groups セクション
proxy-groups:
# 手動選択グループ: ユーザーが手動でプロキシを切り替える
– name: “🚀 Proxy”
type: select
proxies:
– Server-A
– Server-B
– Server-C
– ♻️ Auto Select # 他のグループを含める
– DIRECT
– REJECT
# 自動選択グループ: URLテストで最速を選択
– name: “♻️ Auto Select”
type: url-test
url: http://www.gstatic.com/generate_204 # テスト用URL
interval: 600 # 10分ごとにテスト
tolerance: 50 # 遅延が50ms以内であれば切り替えない
proxies:
– Server-A
– Server-B
– Server-C
# フォールバックグループ: プライマリがダウンしたらセカンダリに切り替え
– name: “✅ Fallback”
type: fallback
url: http://www.gstatic.com/generate_204
interval: 300
proxies:
– Primary-Server
– Secondary-Server
– Last-Resort-Server
– DIRECT # 全てダメならDIRECT
# 負荷分散グループ: 複数のサーバーに通信を分散
– name: “⚖️ Load Balance”
type: load-balance
url: http://www.gstatic.com/generate_204
interval: 300
lazy: true # 必要になるまで遅延テストをしない
proxies:
– Server-X
– Server-Y
– Server-Z
# … 必要に応じて他のグループ …
``
rulesセクションでこれらのグループ名を指定することで、特定の通信に特定のグループを適用できます。Web UIやAPIを使えば、
select` タイプのグループでアクティブなプロキシを手動で切り替えることも可能です。
6.3 DNS設定の最適化
ClashのDNS機能は非常に強力です。Fake-IPモードを利用することで、特に証明書エラーを回避しつつ、ドメインベースのルールを効果的に機能させることができます。
“`yaml
config.yaml の dns セクション
dns:
enable: true
listen: 0.0.0.0:53 # システムのDNSサーバーとしてClashを使う場合
enhanced-mode: fake-ip # 推奨
fake-ip-range: 198.18.0.1/16
fake-ip-filter: # Fake-IPを使わないドメイン (例: 社内ネットワーク、特定のローカルサービス)
– +.internal.network
– myprinter.local
# 外部DNSサーバーの設定
nameserver:
– 114.114.114.114 # 中国国内向けなど
– 223.5.5.5
– https://doh.pub/dns-query # DNS-over-HTTPS
fallback: # 名前解決に失敗した場合や、特定のルールにマッチした場合に使用
– tcp://1.1.1.1:53 # Cloudflare DNS (TCP)
– tcp://8.8.8.8:53 # Google DNS (TCP)
– https://dns.google/dns-query # DNS-over-HTTPS
fallback-filter: # fallback DNSを使う条件
geoip: true # GEOIPルールを有効にする
rules:
– GEOIP,CN,DIRECT # 中国国内のIPはfallbackを使わない
– DOMAIN-SUFFIX,google.com # Google関連はfallbackを使う (例)
– DOMAIN-SUFFIX,facebook.com # Facebook関連はfallbackを使う (例)
# hostsファイルを読み込む
# use-hosts: true
# hosts:
# – “example.com:1.2.3.4”
# 特定のドメインに対するカスタムDNSサーバー
# nameserver-policy:
# “geosite:cn”: [ “114.114.114.114”, “223.5.5.5” ] # 中国国内サイトは中国国内DNS
# “example.com”: “8.8.8.8” # example.comはGoogle DNS
“`
Fake-IPモードでは、ClashはDNSクエリに対してFake IPアドレスを応答します。そして、そのFake IP宛ての通信がClashに到達した際に、Clashが元のドメイン名に基づいて実際のルーティング処理を行います。これにより、クライアントアプリケーションはFake IPに接続しようとしますが、Clash内部で正しく処理されるという仕組みです。多くのGUIクライアントでは、このFake-IPモードがデフォルトで推奨されています。
fallback-filter
と組み合わせることで、例えば特定の国(例: 中国)のIPに対する名前解決には国内のDNSを使い、それ以外には海外のDNSを使うといった高度な設定が可能です。これにはClashが利用するGeoIPデータベースファイルが必要になります。
6.4 複数のコンフィグファイルの管理
Clashは起動時に一つのコンフィグファイルを読み込みますが、複数の設定シナリオ(例: 仕事用、プライベート用、特定の目的用)がある場合、それぞれ別のファイルとして管理し、必要に応じて切り替えることができます。
- CLI: 起動時に
-f
オプションで異なるコンフィグファイルを指定します。
bash
clash -f ~/.config/clash/config_work.yaml
# または
clash -f ~/.config/clash/config_private.yaml
systemdサービスを使う場合は、サービスファイルを複数作成するか、一つのサービスファイル内でコンフィグファイルのパスをパラメータ化するなどして対応します。 - GUIクライアント: 多くのGUIクライアントは、複数のコンフィグファイルをインポート・管理し、GUI上で簡単に切り替える機能を提供しています。これがGUI版を使う大きな利点の一つです。
6.5 スクリプトを使った自動化
ClashのRESTful API (external-controller
) を利用することで、シェルスクリプトやPythonスクリプトなどからClashの状態を取得したり、設定を変更したり、プロキシを切り替えたりといった操作を自動化できます。
例えば、以下のようなスクリプトでプロキシグループを切り替えることができます(Clashが 127.0.0.1:9090
でAPIをListenしており、パスワードがない場合)。
“`bash
!/bin/bash
Clash API Endpoint
CLASH_API=”http://127.0.0.1:9090″
Policy Group Name to change
GROUP_NAME=”🚀 Proxy”
Target Proxy Name
TARGET_PROXY=”Server-B”
API Call to change proxy in a group
curl -X PUT \
“${CLASH_API}/configs/proxies/${GROUP_NAME}” \
-H “Content-Type: application/json” \
-d “{\”name\”:\”${TARGET_PROXY}\”}”
echo “Changed proxy in group ‘${GROUP_NAME}’ to ‘${TARGET_PROXY}'”
“`
(注意: APIの詳細やURLはClashのバージョンやWeb UIによって異なる場合があります。公式ドキュメントやWeb UIのソースコードなどを参照してください。)
このようなスクリプトを cron などで定期実行したり、特定のイベント(例: VPN接続/切断、ネットワーク変更)をトリガーにして実行したりすることで、プロキシ設定の自動化やワークフローへの組み込みが可能になります。
6.6 セキュリティとプライバシーに関する考慮事項
Clash自体は、プロキシサーバーとの間の通信を暗号化する機能(SS, VMess, Trojanなどのプロトコルに依存)を提供しますが、それ以外の部分(例: クライアントアプリケーションとClashの間、ClashとDNSサーバーの間、ClashとDIRECT接続の宛先の間)のセキュリティは別途考慮が必要です。
- Clashとプロキシサーバー間: 使用するプロキシプロトコル(SS, VMess, Trojanなど)が適切に暗号化されていることを確認してください。HTTPやSOCKS5プロキシはデフォルトでは暗号化されません。
- Clashとクライアントアプリケーション間: 通常、これらは同じマシン上または信頼できるLAN内にあるため、暗号化は不要です。しかし、
allow-lan: true
やbind-address: 0.0.0.0
を設定する場合は、secret
パスワードの設定を強く推奨し、ファイアウォールでアクセスを制限するなど、セキュリティ対策を講じてください。 - DNS: デフォルトでは、ClashはシステムのDNS設定を使用するか、コンフィグに指定されたプレーンなDNSサーバーを使用します。プライバシーを高めたい場合は、DNS-over-HTTPS (DoH) や DNS-over-TLS (DoT) に対応したDNSサーバーをコンフィグで指定することを検討してください。
- プロキシサービスの選択: Clashはあくまでツールであり、実際に通信を中継するプロキシサーバーは別途必要です。利用するプロキシサービスが信頼できる提供者によって運営されており、ログポリシーやプライバシーポリシーが明確であることを確認してください。
Clashの利用は自己責任であり、インターネットアクセスに関する法律や利用規約を遵守することが重要です。
7. トラブルシューティング
Clashの設定や運用中に問題が発生した場合の一般的な原因と対処法をいくつか紹介します。
7.1 Clashが起動しない
- コンフィグファイルのエラー: YAMLファイルの記述ミス(インデント、構文など)が最も一般的な原因です。CLIで
-f
オプションを付けて手動実行し、エラーメッセージを確認してください。YAMLLintのようなオンラインツールで構文チェックをするのも有効です。
bash
clash -f ~/.config/clash/config.yaml
# またはデバッグモードでより詳細なログを確認
clash -f ~/.config/clash/config.yaml -d debug - ポートの競合: Clashが使用しようとしているポート(HTTP, SOCKS5, API, DNSなど)が、他のアプリケーションによって既に使用されている可能性があります。エラーメッセージ (
address already in use
など) を確認し、競合しているポートを変更するか、他のアプリケーションを停止してください。netstat -tulnp | grep <port_number>
コマンドでポートを使用しているプロセスを特定できます(sudoが必要な場合あり)。 - 実行権限: Clashのバイナリファイルに実行権限がない場合、起動できません。
chmod +x /path/to/clash
で実行権限を付与してください。systemdサービスで実行する場合、サービスファイルのExecStart
パスやUser
設定が正しいか確認してください。 - コンフィグファイルのパス: 起動時に指定したコンフィグファイルのパスが間違っているか、ファイルが存在しない可能性があります。パスを再度確認してください。
7.2 インターネットに接続できない、または特定のサイトにアクセスできない
- プロキシ設定の間違い: システムやアプリケーションのプロキシ設定が、ClashのListenポート(アドレスとポート番号)を正しく指定しているか確認してください。環境変数、デスクトップ環境設定、アプリケーション固有設定など、適用している設定方法に合わせて確認が必要です。
- Clashのモード: Clashが
direct
モードになっていないか確認してください。rule
またはglobal
モードである必要があります。Web UIやコンフィグファイルで確認できます。 - Clashのコンフィグエラー: Clashが正常に起動していても、コンフィグ内のプロキシサーバー情報が間違っている(IP/ポート、パスワード、UUIDなど)、プロキシサーバーが利用できない、またはルール設定が間違っている可能性があります。
- プロキシサーバーの問題:
proxy-groups
のurl-test
機能やWeb UI/APIを使って、各プロキシサーバーの遅延テストを行い、利用可能か確認してください。 - ルール設定の問題: アクセスしたいサイトやIPアドレスに対して、意図したポリシー(プロキシ、DIRECT, REJECTなど)が適用されているか確認します。Clashのログ (
log-level: debug
にすると詳細に表示される) を確認すると、どのルールがマッチしたかを確認できます。Web UIの「Connections」タブなどでも確認できます。特定のサイトがREJECT
やDIRECT
にマッチしてしまっていないか、あるいは意図しないプロキシグループにルーティングされていないか確認してください。
- プロキシサーバーの問題:
- DNSの問題: DNS設定が適切でない場合、名前解決ができずに接続に失敗することがあります。
dns
セクションの設定を確認し、指定したDNSサーバーが応答しているか、fake-ip-filter
が意図しないドメインを除外していないかなどを確認してください。log-level: debug
にするとDNSクエリと応答の詳細が表示されます。 - ファイアウォールの問題: UbuntuのUFWなどのファイアウォールが有効になっている場合、クライアントアプリケーションからClashへの接続や、Clashからインターネットへの接続がブロックされている可能性があります。ClashがListenしているポート(7890, 7891, 9090など)へのローカルホストからのアクセス、または
allow-lan: true
の場合はLANからのアクセスを許可し、Clashプロセスのアウトバウンド通信を許可するようにファイアウォールルールを確認・調整してください。 - 透過プロキシの問題: 透過プロキシ設定(iptables/nftables)が間違っている場合、通信がClashに正しくリダイレクトされないか、Clashが処理した後のパケットが正しくルーティングされないなどの問題が発生します。iptablesルールを慎重に確認し、必要であれば透過プロキシ設定を一時的に無効にして、プロキシ設定のみで問題が解決するか切り分けてください。
7.3 ログの確認方法
トラブルシューティングの基本はログの確認です。
- 手動実行:
clash -f config.yaml
またはclash -f config.yaml -d debug
でターミナルに直接表示されるログを確認します。 - systemdサービス:
sudo journalctl -u clash@your_username.service -f
コマンドでリアルタイムのログを確認できます。過去のログもこのコマンドで参照できます。 - Web UI: Web UIの「Logs」または「Connections」タブで、Clashが処理した通信のログやエラーメッセージを確認できます。
ログレベルを debug
にすると非常に詳細な情報が得られますが、量が膨大になるため、問題の切り分けができたら info
に戻すのが良いでしょう。
8. まとめ:ClashをUbuntuで使いこなす
本記事では、Ubuntuユーザーが革新的なプロキシツール「Clash」を導入し、その豊富な機能を活用するための詳細なステップを解説しました。
Clashは、そのルールベースのルーティング、多様なプロキシプロトコルへの対応、柔軟なポリシーグループ、高度なDNS機能によって、従来のプロキシツールでは難しかったきめ細やかなネットワーク制御を可能にします。
Ubuntu環境では、CLI版のClash Coreをsystemdサービスとして安定稼働させ、サーバー上の様々なアプリケーションの通信を制御したり、あるいはGUI版クライアントを使ってデスクトップ上で手軽にプロキシ設定を管理したりと、利用シーンに合わせて最適な方法を選択できます。
YAML形式のコンフィグファイルは、Clashの心臓部です。このファイルの構造を理解し、自身の環境や要件に合わせてプロキシサーバー情報、ポリシーグループ、ルーリングールを適切に記述することで、Clashの力を最大限に引き出すことができます。サブスクリプションURLからの取得は手軽ですが、カスタムルールや高度なDNS設定を組み合わせることで、よりパーソナライズされた強力なプロキシ環境を構築可能です。
システム全体、デスクトップ環境、特定のアプリケーションなど、プロキシを適用する方法は多岐にわたります。環境変数、GUI設定、アプリケーション固有の設定、そして上級者向けの透過プロキシなど、目的に応じた方法を選択し、ClashのListenポートを適切に指定することが重要です。
運用中に問題が発生した場合でも、コンフィグ構文の確認、ポート競合の特定、プロキシサーバーの疎通確認、ルールのデバッグ、ログの解析など、体系的なトラブルシューティングを行うことで、多くの問題を解決できます。Web UIやAPIは、Clashの状態監視や管理に役立つ強力なツールです。
Clashは非常に多機能かつ柔軟なツールですが、その分設定にはある程度の学習コストがかかります。しかし、一度設定をマスターすれば、ネットワーク利用の自由度やセキュリティ、プライバシーを大幅に向上させることができます。
本記事が、Ubuntuユーザーの皆様がClashを理解し、自身の環境で自信を持って活用できるようになるための一助となれば幸いです。
9. 免責事項
本記事は、Clashの技術的なインストールおよび活用方法に関する情報を提供することを目的としています。Clashおよび関連するプロキシサービスの利用は、ユーザー自身の責任において行ってください。プロキシサービスを利用すること、特定のWebサイトにアクセスすることなどが、お住まいの地域や利用しているネットワーク、あるいは利用するプロキシサービスの提供者の規定において合法であるか、利用規約に違反しないかなど、関係する法令や規約を遵守する責任はすべてユーザーにあります。本記事の情報に基づいてClashを利用した結果生じたいかなる損害についても、筆者および本プラットフォームは一切の責任を負いません。
また、本記事で紹介する設定例やコマンドは一般的なものであり、お使いのUbuntuのバージョン、ネットワーク環境、Clashのバージョン、GUIクライアントの種類などによって、詳細な手順や設定内容が異なる場合があります。設定を行う際は、ご自身の環境に合わせて適宜読み替え、必要に応じてClashの公式ドキュメントや関連資料を参照してください。特に、sudo
を使用するコマンドや、ファイアウォール設定(iptablesなど)、systemdサービスの設定などは、システム全体に影響を与える可能性があるため、内容を十分に理解した上で慎重に実行してください。