在 systemd 的 Environment 指令中为 NO_PROXY 加引号
把整个 NO_PROXY 赋值放在同一条 systemd Environment 指令里,并把 unit 文件的解析与客户端的绕过语法分开。
在 systemd 的服务定义中,把整个环境赋值保留在 unit 文件的引号内:
[Service]
Environment="NO_PROXY=localhost,127.0.0.1,::1,intranet.example"
逗号是 NO_PROXY 值的一部分。systemd 在构建环境时会去掉外围的引号;网络客户端拿到这份列表后,再按自己的绕过语法来解释。在已经带引号的条目中间再开一个引号,并不会形成独立的 shell 引号层级。
unit 文件不是 shell 脚本。export 语句或熟悉的变量名,在 Environment= 指令里并不会带来 shell 展开。
- 在本机查看实际生效的服务配置,并隐去密钥。
- 修改之后,重新加载服务定义,并按受影响服务通常的方式重启。要规划对正在进行的工作的影响,尤其是共享的镜像守护进程。
- 确认预期的值真的到达了新进程。只重新加载 unit 文件并不能替换已有进程的环境。
到这一步之后,再去查客户端侧的域名或子网匹配。终端里能用的列表,可能从来没有以同样的形式到达服务。