NO_PROXY は直接接続すべき宛先を指定します。避けたいプロキシサーバーを指定するものではありません。選択したプロキシ自身の IP をリストに追加しても、無関係のサイトがそのプロキシを使うかどうかは決められません。

項目curl での意味
example.com指定ドメインと一致するサブドメインはプロキシを経由しません。
.example.comドメイン自体を含む、ドメインサフィックスによる除外です。
192.168.1.10リテラルで指定した宛先 IP が一致すると、プロキシを経由しません。
192.168.0.0/16一致する IP リテラルの宛先はプロキシを経由しません。CIDR 対応には curl 7.86.0 以降が必要です。
*すべての宛先でプロキシを経由しません。

空とアスタリスクは異なる

明示的なプロキシテストでは、コマンドラインの空リストにより環境由来の除外マッチが取り除かれます。

curl --proxy http://203.0.113.10:8080 --noproxy '' \
  --connect-timeout 5 --max-time 15 https://example.com/

文書用のエンドポイントを自分の HTTP プロキシ、またはHTTP プロキシ一覧の候補に置き換えてください。逆の比較をするには、引用符付きワイルドカードを使います。プロキシオプションがあっても直接接続になります。

curl --proxy http://203.0.113.10:8080 --noproxy '*' \
  --connect-timeout 5 --max-time 15 https://example.com/

シェルがファイル名に展開しないよう、ワイルドカードの引用符は残してください。環境変数の解除、空値の設定、コマンドラインでの上書きは別の操作です。定義を一つ消しただけでは別の適用可能な設定が残ることがあります。

CIDR は、そのネットワークに名前解決されるすべての名前に対するルールではない

CIDR 項目は、宛先ホストとして使われた IP アドレスと照合されます。すべてのホスト名を先に解決し、結果がそのネットワーク内ならプロキシを迂回するという一般的な指示ではありません。そのため、ホスト名を使う URL と数値アドレスを使う URL では経路が異なることがあります。

URL にホスト名やドメインがある場合は、ホスト名やドメインサフィックスを使ってください。完全なスキーム、パス、ブラウザーの除外式をこのリストに入れ、curl が同じように解釈すると考えないでください。

これらは curl 8.14.1 のルールです。他のクライアントには独自の NO_PROXY 動作があり、ワイルドカードやポートの照合にも違いがあります。

関連記事