接続タイムアウトの一般的な原因
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 が失敗する場合、それはノードの問題です。