systemd のサービス定義では、環境変数の代入全体を unit ファイルの引用符の中に収めます。

[Service]
Environment="NO_PROXY=localhost,127.0.0.1,::1,intranet.example"

カンマは NO_PROXY の値の一部です。systemd は環境を構築するときに囲みの引用符を取り除きます。ネットワーククライアントはそのリストを受け取り、そのあとで独自のバイパス構文を解釈します。すでに引用符で囲まれた項目の途中で別の引用符を始めても、シェルの引用の層が独立して増えるわけではありません。

unit ファイルはシェルスクリプトではありません。export 文やなじみのある変数名があっても、Environment= 指令の中でシェルの展開が行われるわけではありません。

  1. 実際に効いているサービス設定をローカルで確認し、秘密情報は伏せます。
  2. 変更したあとは、サービス定義を再読み込みし、影響を受けるサービスの通常の再起動手順を使います。稼働中の作業への影響を見積もってください。とくに共有のイメージデーモンでは重要です。
  3. 意図した値が新しいプロセスに届いていることを確認します。unit ファイルを再読み込みするだけでは、既存プロセスの環境を置き換えることはできません。

そのうえで初めてクライアント側のドメインやサブネットの照合を調べます。ターミナルで動くリストが、同じ形でサービスに届いていない可能性があります。

関連記事