UbuntuでClash!はじめての導入とおすすめ設定

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を利用することには、以下のようなメリットがあります。

  1. システムリソースの効率的な利用: Clashは比較的軽量であり、Ubuntu上でリソースをあまり消費せずに動作します。
  2. CLIとGUIの選択肢: CLI(コマンドラインインターフェース)での高度な設定と、GUI(グラフィカルユーザーインターフェース)での簡単な操作の両方が可能です。特にUbuntuユーザーはCLI操作に慣れていることが多く、Clash Core(CLI版)の細かな設定を直接編集することに抵抗がないでしょう。
  3. 自動化とスクリプトとの連携: Ubuntuのシェルスクリプトやsystemdサービスと連携させることで、Clashの起動、停止、設定の更新などを自動化できます。
  4. 開発環境との親和性: 開発作業において、特定の地域からのアクセスをシミュレートしたり、ネットワークトラフィックを制御したりする際にClashは非常に有用です。
  5. カスタマイズの自由度: 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 unzip
  • unzip: ダウンロードした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ページから直接ダウンロードする方法を説明します。

  1. 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

  2. 適切なファイルをダウンロード:
    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

  3. インストール:

    • .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のダウンロード

  1. GitHub Releasesページにアクセス:
    Clash Coreの公式リリースは以下のページで確認できます。
    https://github.com/Dreamacro/clash/releases

  2. 適切なファイルをダウンロード:
    最新バージョンを展開し、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

  3. ファイルの展開と配置:
    ダウンロードした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のすべての動作を定義します。

  1. 設定ディレクトリの作成:
    Clashの設定ファイルは、ユーザーのホームディレクトリ内の隠しディレクトリに置くのが一般的です(例: ~/.config/clash/)。
    bash
    mkdir -p ~/.config/clash
    cd ~/.config/clash

  2. config.yamlの作成:
    プロキシサービスプロバイダーから提供されるサブスクリプションリンクをClashのGUIクライアントにインポートすると、自動的にconfig.yamlが生成されます。CLI版ではこれを手動で作成または編集する必要があります。

    基本的なconfig.yamlの構造は以下の通りです。
    “`yaml

    General 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/3

    TUN 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ファイルの編集:
    vinanoなどのテキストエディタで~/.config/clash/config.yamlを作成・編集します。
    YAMLはインデントが重要です。スペース2つ(または4つ)で統一し、タブは使わないでください。

systemdサービスとしての起動

Clash Coreをバックグラウンドで永続的に動作させ、システム起動時に自動的に起動するようにするには、systemdサービスとして設定するのが最適です。

  1. 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`オプションで指定)を指定します。

  2. systemdのリロードとサービス有効化/起動:
    サービスファイルを保存したら、systemdをリロードし、Clashサービスを有効化して起動します。
    bash
    sudo systemctl daemon-reload
    sudo systemctl enable clash # システム起動時に自動実行するよう設定
    sudo systemctl start clash # サービスを今すぐ起動

  3. 状態の確認:
    サービスが正常に動作しているか確認します。
    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)

  1. Clash Vergeのメインウィンドウで「Profiles」タブをクリックします。
  2. 上部にある「Add Profile」または「New Profile」ボタンをクリックします。
  3. 表示された入力フィールドに、コピーしたサブスクリプションURLを貼り付けます。
  4. 「Import」または「Download」ボタンをクリックします。
  5. 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.yamlrulesセクションに定義されたルールに従ってトラフィックをルーティングします。例えば、「このドメインはプロキシ経由」「あのIPアドレスは直接接続」「特定の国へのアクセスは特定のサーバー経由」といった設定が可能です。最も推奨されるモードであり、本ガイドの後半で詳細に説明します。

  • Direct (ダイレクトモード):
    すべてのトラフィックがプロキシを経由せず、直接インターネットに接続されます。Clashのプロキシ機能を一時的に無効にしたい場合に便利です。

  • Script (スクリプトモード):
    JavaScriptなどのスクリプトを使って、より複雑なルーティングロジックを実装できる高度なモードです。通常の使用ではあまり必要ありません。

Proxy Modeの切り替え (GUI版)

Clash Vergeの場合、「Home」タブの「Mode」セクションで、ドロップダウンメニューから「Global」「Rule」「Direct」を選択できます。

ルールセットのカスタマイズと最適化

Clashのルールベースモードを最大限に活用するには、config.yamlrulesセクションを理解し、カスタマイズすることが不可欠です。

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から読み込むことができます。これにより、設定ファイルが整理され、管理しやすくなります。

  1. カスタムルールファイル (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
      ``
      各ルールはハイフン (
      -`) で始まるリスト形式で記述します。
  2. config.yamlからの読み込み:
    config.yamlrules:セクションの先頭に、以下のように記述を追加します。
    “`yaml
    # config.yaml
    rules:

    • INCLUDE,custom_rules.yaml # ここにカスタムルールファイルを指定
      # その他のルール…
    • DOMAIN-SUFFIX,google.com,Proxy
    • MATCH,Proxy
      ``INCLUDE`ルールは、指定されたファイルのルールをその場所に挿入します。

外部ルールセットの利用 (Rule Providers)

より大規模でメンテナンスされたルールセットを利用するには、rule-providers機能が便利です。これは、特定のURLから定期的にルールセットをダウンロードし、Clashに適用する機能です。広告ブロック、特定の地域へのルーティング、ストリーミングサービスの最適化などに利用されます。

  1. config.yamlrule-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: 300

    • type: http (URLからダウンロード) または file (ローカルファイル)。
    • behavior: ルールのタイプをClashに知らせます。
      • classical: デフォルト。DOMAIN-SUFFIX, IP-CIDRなど様々なルールが含まれる場合。
      • domain: DOMAIN, DOMAIN-SUFFIX, DOMAIN-KEYWORDのみが含まれる場合。
      • ipcidr: IP-CIDRのみが含まれる場合。
    • url: ルールセットのダウンロード元URL。
    • interval: 自動更新間隔(秒)。
    • path: ダウンロードしたルールセットを保存するローカルパス。
  2. 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_NAMErule-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.yamlproxy-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, intervalurl-testと同様。
    • 例: type: fallback, proxies: ["ProxyA", "ProxyB", "ProxyC"]
  • load-balance (ロードバランス):
    グループ内のプロキシ間でトラフィックを均等に分散させます。複数のサーバーのリソースを最大限に活用し、個々のサーバーへの負荷を軽減します。

    • url, intervalurl-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の両方に対応するプロキシがリッスンするポート。portsocks-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またはExecStartPostsysctlコマンドを使い、適切なパーミッションを与える必要がある場合があります。
  • 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のネットワーク設定を手動で変更できます。

  1. GNOME Settings (GUI):

    • 「設定 (Settings)」を開きます。
    • 左側のメニューから「ネットワーク (Network)」を選択します。
    • 「ネットワークプロキシ (Network Proxy)」セクションで、「Manual (手動)」を選択します。
    • HTTPプロキシ、HTTPSプロキシ、SOCKSホストにそれぞれ127.0.0.1とClashのmixed-portまたはport/socks-port(例: 7890)を設定します。
    • 「Apply」をクリックして適用します。
  2. 環境変数 (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モードを使用してください。

  3. 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のnameserverfallbackに設定されているDNSサーバーが有効か確認。

特定サイトが開けない

  • ルールの問題:
    • 開けないサイトのドメインが、rulesセクションのどこにマッチしているか確認。Clashの「Connections」タブで、そのサイトへの接続がどのプロキシグループを経由しているか確認できます。
    • 誤ってDIRECTREJECTにルーティングされていないか確認。
    • プロキシグループが、そのサイトへのアクセスをサポートする適切なサーバーを含んでいるか確認。
    • サイトがGeoIPブロックされている場合、対応するプロキシサーバーにルーティングされているか確認。
  • DNSの問題:
    • サイトのDNS解決がうまくいっていない可能性があります。ClashのDNS設定を確認。
    • enhanced-mode: fake-ipを使用している場合、一部のサイトで問題が発生することがあります。一時的にredir-hostに戻してみる。
  • クリーンキャッシュとCookie:
    ウェブサイト側の問題である可能性もあるため、ブラウザのキャッシュとCookieをクリアしてみてください。

Clashが起動しない/落ちる

  • 設定ファイルの構文エラー:
    • CLI版: clash -t -d ~/.config/clashで設定ファイルに構文エラーがないかチェック。YAMLはインデントが非常に重要です。
    • GUI版: 起動時にエラーメッセージが表示される場合が多い。
  • ポートの競合:
    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-testfallbackproxy-providershealthcheckintervalが短すぎる場合、頻繁なテストでCPUを消費します。間隔を長くしてみてください(例: 300秒→600秒)。
  • 不正なルール/DNS設定:
    無限ループや誤ったルーティングを引き起こすルールがCPUを消費する場合があります。ログを詳細に確認。
  • Clashバージョンの問題:
    特定のバージョンにパフォーマンス問題がある可能性。最新バージョンにアップデートするか、以前の安定バージョンに戻してみる。

サブスクリプションが更新できない

  • サブスクリプションURLが間違っている/期限切れ:
    プロバイダーから提供されたURLが正確か、有効期限が切れていないか確認。
  • インターネット接続の問題:
    ClashがサブスクリプションURLに直接アクセスできない場合(例えば、Clash自体がプロキシを必要とする環境下で、そのプロキシが動作していない)。
  • プロバイダー側のサーバー問題:
    一時的にプロバイダーのサブスクリプションサーバーがダウンしている可能性があります。
  • config.yamlproxy-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.yamlproxiesセクションで、他のプロキシをネストすることでチェインを構築できます。
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管理が可能です。

  1. 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
  2. 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導入と活用の一助となれば幸いです。安全で自由なインターネットの旅をお楽しみください!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール