ClashX 接続タイムアウト トラブルシューティング:ポート、DNS、ノードの確認方法

接続タイムアウトの一般的な原因

ClashX の接続タイムアウトは、通常、以下の問題によって引き起こされます。根本的な原因を理解することで、問題を迅速に解決できます。

  • ポートの競合 — ClashX はデフォルトでポート 7890 (HTTP) と 7891 (SOCKS5) を使用します。別のアプリケーションがこれらのポートを占有している場合、ClashX はトラフィックをリッスンできず、プロキシが機能しません。
  • DNS 汚染 — 特定のネットワーク環境では、DNS リクエストがハイジャックまたは汚染され、ドメイン名が誤った IP アドレスに解決されることがあります。これにより、ClashX が正しいプロキシサーバーに到達できなくなります。
  • ノードの失敗 — サーバーのメンテナンス、通信量制限、またはブロックにより、プロキシノードが利用不可になる場合があります。これはタイムアウトの最も一般的な原因です。
  • ファイアウォールによる遮断 — macOS 内蔵のファイアウォールまたはサードパーティのセキュリティソフトウェアが ClashX のネットワークリクエストをブロックしている可能性があります。

ステップ 1 — ポート設定を確認する

まず、ClashX が必要とするポートが他のアプリケーションによって占有されていないことを確認します。

ポートの使用状況を確認する

ターミナルを開き、以下のコマンドを実行してポート 7890 が使用中かどうかを確認します。

lsof -i :7890

出力がある場合は、そのポートが既に使用されています。COMMAND 列を確認してどのプログラムが使用しているかを特定し、そのプログラムを終了するか、ClashX のポートを変更してください。

SOCKS5 ポートも確認する

lsof -i :7891

システムプロキシ設定を表示する

macOS のシステムプロキシが正しいポートを指していることを確認します。

# HTTP プロキシ設定を確認
networksetup -getwebproxy Wi-Fi

# SOCKS プロキシ設定を確認
networksetup -getsocksfirewallproxy Wi-Fi

ClashX のポートを変更する

ポートの競合がある場合は、ClashX 設定ファイルのポート番号を変更してください。

# config.yaml
port: 7892          # HTTP プロキシポート
socks-port: 7893    # SOCKS5 プロキシポート

変更を保存した後、ClashX を再起動します。

ステップ 2 — DNS 設定を確認する

不適切な DNS 設定は、接続タイムアウトの主な原因となります。

DNS リークテスト

dnsleaktest.com にアクセスし、標準テストを実行して、DNS リクエストがプロキシ経由で正しく転送されているか確認します。ローカル ISP の DNS サーバーが表示される場合は、DNS リークが発生しています。

fake-ip vs redir-host

ClashX は 2 つの DNS 拡張モードをサポートしています。

  • fake-ip (推奨) — 偽の IP アドレスを返し、DNS 汚染を回避して接続を高速化します。
  • redir-host — 実際の IP を使用するため互換性は高いですが、DNS 汚染の影響を受ける可能性があります。

推奨される DNS 設定

# config.yaml
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

DNS キャッシュのクリア

DNS 設定を変更した後は、システムの DNS キャッシュをクリアしてください。

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

ステップ 3 — ノードの可用性を確認する

ノードの失敗は、接続タイムアウトの最も一般的な原因です。以下の方法で素早く診断してください。

遅延テスト (ベンチマーク)

ClashX のメニューバーでノードリストを右クリックし、「ベンチマーク」または「速度テスト」を選択します。遅延が 500ms を超えるノードや 「Timeout」 と表示されるノードは避けてください。

ノードを切り替える

より遅延の少ないノードへの切り替えを試してください。以下を優先します:

  • 遅延が 100ms 未満のノード
  • 地理的に現在地に近いノード
  • オフピークの時間帯で負荷が低いノード

サブスクリプションを更新する

すべてのノードがタイムアウトする場合は、サブスクリプションが期限切れになっている可能性があります。手動で更新してください:

# ターミナル経由で手動更新 (オプション)
curl -o ~/.config/clash/config.yaml "YOUR_SUBSCRIPTION_URL"

または、ClashX メニューから 「設定」 → 「更新」 を選択して設定をリフレッシュします。

高度なトラブルシューティング

上記の手順で解決しない場合は、以下の高度な方法を試してください。

ファイアウォールと VPN の競合

macOS のファイアウォールが ClashX をブロックしていないか確認します。

# ファイアウォールのステータスを確認
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

# ClashX をファイアウォールのホワイトリストに追加
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ClashX.app

他の VPN ソフトウェア(Tunnelblick、WireGuard など)を実行している場合、ClashX とルーティングが競合する可能性があります。テスト前に他の VPN を無効にしてください。

TUN モード

ClashX Pro は、すべてのシステムトラフィックを引き受ける TUN モード(拡張モード)をサポートしています。通常モードでタイムアウトが解消されない場合は、TUN モードを有効にしてみてください。

# config.yaml (ClashX Pro)
tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true

システムプロキシの検証

ClashX で 「システムプロキシとして設定」 が有効になっていることを確認してください。手動で検証することも可能です:

# プロキシが機能しているかテスト
curl -x http://127.0.0.1:7890 https://www.google.com -I

# すべてのネットワークサービスをリスト表示
networksetup -listallnetworkservices

よくある質問

Q: 起動後、ClashX がずっと 「Timeout」 と表示されます。どうすればよいですか?

A: まず、インターネット接続自体が機能しているか確認してください(国内のサイトを開けますか?)。ネットワークに問題がない場合は、この記事の 3 ステップ(ポート、DNS、ノードの確認)に従ってください。多くの場合、ノードの切り替えで解決します。

Q: ノードを切り替えてもタイムアウトが続くのはなぜですか?

A: すべてのノードが利用不可になっている可能性があります。サブスクリプションを更新して新しいノードを取得するか、サービスプロバイダーに連絡してサービスステータスを確認してください。

Q: fake-ip モードはローカルのウェブサイトへのアクセスに影響しますか?

A: ルーティングルールが正しく設定されていれば影響ありません。設定ファイルに適切なルールがあり、ローカルドメインが直接接続 (DIRECT) を経由するようになっているか確認してください。

Q: ノードの問題かローカルの問題か、どうすれば見分けられますか?

A: ターミナルで ping 127.0.0.1 を実行してローカルのネットワークスタックが動作しているか確認し、次に curl -x http://127.0.0.1:7890 https://www.google.com でプロキシをテストしてください。ping は通るが curl が失敗する場合、それはノードの問題です。