こんなとき読む記事:症状の整理
Clash(Clash Verge Rev や ClashX、Mihomo コアを使うクライアントなど)を macOS で起動し、メニューバー表示やブラウザでは期待どおりプロキシ経由になっているのに、ターミナルで curl や git clone、brew update を実行すると国内回線のまま、あるいはタイムアウトだけが増える──という経験は、開発者向けフォーラムでも非常に多いトピックです。
本記事では、Clash macOS ターミナル プロキシを「再現できる手順」としてまとめます。ポイントは、macOS が システムプロキシとして書き込む設定と、シェルが読む環境変数(http_proxy/https_proxy など)が別レイヤであることです。ブラウザは前者を参照しやすい一方、多くの CLI は後者が無いとプロキシを知らないまま動きます。関連する一覧は ブログ一覧 からも辿れます。
http_proxy などです。
なぜブラウザは通るのにターミナルは「直結」に見えるか
Safari や Chrome は、OS が提示するプロキシ設定(またはブラウザ独自の拡張)に従って通信を張ります。一方、ターミナル上のプロセスは、親シェルにエクスポートされた環境変数が無ければ、多くのツールが「プロキシ無し」で直接接続しようとします。Clash 側で システムプロキシがオンでも、zsh/bash のセッションに http_proxy が無い限り、curl の挙動は変わりません。
また、git は環境変数に加え、git config --global http.proxy などリポジトリ単位・グローバル設定が優先される場合があります。OpenSSH での [email protected]: 接続はそもそも HTTPS プロキシの外側なので、別の話になります。まずは「HTTPS で取りに行く通信」を対象に、環境変数で揃えるのが手早いです。
ステップ 1:Clash 側で HTTP/SOCKS のポートを確認する
環境変数に書くアドレスは、実際に Clash が待ち受けているポートと一致させる必要があります。多くの構成では HTTP または mixed-port が 127.0.0.1:7890、SOCKS5 が 7891 といった並びですが、購読や GUI の初期値で変わります。クライアントの「ポート」「接続情報」「ログ」から、次を確認してください。
- mixed-port または port(HTTP プロキシとして使う番号)
- 別途 socks-port を公開しているか
- 「システムプロキシを設定」がオンで、実際にどの URL が書き込まれているか(必要なら「システム設定」→「ネットワーク」→各インターフェースの「詳細」→「プロキシ」で目視)
ここがずれていると、後述の export をしても別の空きポートへ向かい、接続できません。クライアントの導入や更新は ダウンロードページ のパッケージに揃えておくと、画面の表記と説明が一致しやすくなります。
ステップ 2:シェルに http_proxy/https_proxy を載せる(実測用)
ポートを 7890(HTTP)、7891(SOCKS5)と仮定します。実際の数値は必ず手元の Clash に合わせて置き換えてください。zsh なら、試しに次をそのターミナルだけに効かせます。
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export HTTP_PROXY="$http_proxy"
export HTTPS_PROXY="$https_proxy"
export all_proxy="socks5://127.0.0.1:7891"
export ALL_PROXY="$all_proxy"
HTTP_PROXY と http_proxy の両方を揃えるのは、ツールによって参照する名前が異なるためです。all_proxy に SOCKS を載せると、一部の CLI が HTTPS 以外の経路もまとめて利用しやすくなります。ただし、社内ルールやセキュリティポリシーで localhost へのプロキシ利用が制限されている場合は、管理者の許可を得てから試してください。
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY で元に戻せます。スクリプトに書く前に、まず手打ちで挙動を確認するのが安全です。
ステップ 3:curl で効いているか確認する
同じターミナルで、次のように外向きの HTTPS を叩いてみます(例は接続先を変えて構いません)。
curl -I https://www.google.com
プロキシが効いていれば、Clash の接続ログに該当ドメインが現れ、期待するノード経由になっているはずです。逆に環境変数が無い状態と比べて、レイテンシや到達先が変わるかを見ると理解が早いです。-v を付けて TLS ハンドシェイク前の接続先を確認する方法もありますが、ログに出る情報が多いので、まずは Clash 側のログとの突き合わせをおすすめします。
ステップ 4:git の注意点(HTTPS と SSH)
HTTPS URL(https://github.com/...)で clone する場合、上記の http_proxy/https_proxy を設定したシェルから実行すれば、多くの環境でプロキシを通ります。一方で、既に git config に古いプロキシや空文字が入っていると、環境変数より優先されることがあります。git config --global --get http.proxy で確認し、不要なら削除してください。
SSH([email protected]:...)は通常、HTTPS プロキシの外です。SSH 越しにプロキシを挟むには ~/.ssh/config での ProxyCommand や、connect 系ツールの利用など別途設計が必要です。本記事の「Shell プロキシ環境変数」だけで SSH まで完結するとは限らない点に注意してください。
ステップ 5:Homebrew(brew)が読むプロキシ
Homebrew は内部的に curl 等を使って公式を取得するため、同じシェルに設定した http_proxy/https_proxy を引き継ぎます。つまり brew が直結に見える典型原因は、ブラウザ用のシステムプロキシだけオンで、brew を叩いているターミナルに環境変数が無いことです。ステップ 2 の export をしたうえで brew update を試し、Clash のログに Formula の取得先ホスト名が載るかを見てください。
まれに、企業プロキシ用の PAC や認証付きプロキシが絡むと、単純な 127.0.0.1 では足りないケースがあります。その場合はネットワーク管理者向けのドキュメントと、Clash のルール・認証まわりを別途確認する必要があります。ルール分流の基礎は ルール分流の解説記事 も参照してください。
ステップ 6:.zshrc への永続化と取り扱い
毎回手打ちするのが負担であれば、~/.zshrc(bash なら ~/.bashrc など)に同じ export を追記します。ただし常時プロキシを有効にすると、ローカルホストへの接続や社内イントラネットまで意図せず経由するツールが出ることがあります。コミュニティでは「必要なときだけ source する小さなスクリプトを置く」「ターミナルプロファイルをプロキシ用と直結用に分ける」といった運用も行われます。
セキュリティの観点では、共有マシンやスクリーン共有中に環境変数を晒さない、不要な export を残さない、といった基本に加え、Clash 自体のログに外部 URL が残ることも念頭に置いてください。
macOS の「システムプロキシ」との関係(整理)
まとめると、システムプロキシは主にプロキシ対応の GUI アプリや、OS の一部 API が参照する値です。一方、ターミナルで動くコマンドの多くは、http_proxy 系の環境変数を見に行きます。だから「Clash のアイコンは緑なのに curl だけ直結」は、設定ミスというよりレイヤの取り違いとして起きやすいです。
Windows 11 で同種の話を ブラウザと UWP に絞って整理した記事もあり、OS ごとの「どこが効かないか」の対比に役立ちます。クロスプラットフォームで開発している方は、合わせて読むとイメージが揃いやすいでしょう。
それでも CLI が取りこぼすとき:TUN モードの選択肢
環境変数を揃えても、特定のバイナリが独自の DNS 解決や raw ソケットを使い、プロキシを迂回する場合があります。そのときは仮想 NIC でトラフィックを取り込む TUN モードが現実的な次の段です。概要と注意点は TUN モード解説記事 にまとめています。システムプロキシと環境変数の両方を試したうえで、なお取りこぼすときの検討材料にしてください。
まとめ:再現性のある「Shell プロキシ」から始める
Clash macOS でブラウザは問題ないのに ターミナルや Homebrew だけが直結に見えるときは、まずポート番号の実測と、http_proxy/https_proxy をそのシェルに export したかを確認してください。システムプロキシだけオンにしても CLI は知らない、という整理がつけば、同種のトラブルはかなり減ります。
安定したビルドと分かりやすい更新サイクルのクライアントを使うことも、長期的には重要です。初回導入から ダウンロードページ で自分の Mac のチップ(Apple Silicon/Intel)に合うパッケージを選び、ポート表示とログの見方に慣れておくと、本記事の手順とも噛み合わせやすくなります。