将 Squid 的 systemd 服务接入既有的出口命名空间
在启动前设置 NetworkNamespacePath,并在该命名空间需要时提供独立的 resolver 文件绑定。
对于已经在 /run/netns/proxy-egress 上可用的命名空间,把下面这段并入现有的 Squid 服务 drop-in:
[Service]
NetworkNamespacePath=/run/netns/proxy-egress让该服务排在创建命名空间的组件之后。这个设置既不创建命名空间,也不创建它的接口、地址或路由。
监听套接字和对外发起的套接字现在都位于该命名空间中。客户端需要一条通往该监听器的路径,以及随之保留的访问策略;宿主机的 loopback 并不自动等于命名空间的 loopback。
resolver 文件需要单独处理。与 ip netns exec 不同,这个网络设置不会把 /etc/netns/NAME 文件挂载到它们通常所在的位置。当部署需要该命名空间自己的 resolver 文件时:
BindReadOnlyPaths=/etc/netns/proxy-egress/resolv.conf:/etc/resolv.conf请使用能从该命名空间访问到的 resolver 地址,并与现有的 sandbox/文件系统规则合并。只绑定 Squid 的出站源地址,并不会把进程放进这个上下文。