SaltStack:如何配置minion为发布和返回请求使用不同SNI?
结论
可以实现,Salt Minion原生支持分别配置发布(pub)、返回(ret)两个独立通道的连接参数,包括自定义SNI字段,完全适配你提到的单端口Ingress场景。
前置要求
- 你的Ingress Controller已完成如下规则配置:
- SNI为
salt-master.publish.com的流量,转发至Salt Master的4505端口(默认发布通道端口) - SNI为
salt-master.ret.com的流量,转发至Salt Master的4506端口(默认返回通道端口)
- SNI为
- Ingress使用的TLS证书需同时覆盖两个SNI域名,或分别签发对应域名的证书
- Salt Minion版本建议≥3004,该版本开始稳定支持自定义通道SNI参数
具体配置步骤
- 在Salt Minion节点上,新增独立配置文件
/etc/salt/minion.d/custom_channels.conf(也可直接修改主配置/etc/salt/minion),写入以下配置:
master: # 发布通道配置:Master推送任务给Minion的通道 pub: host: salt-master.publish.com port: 443 # 替换为你的Ingress实际监听的单端口 ssl: True sni_name: salt-master.publish.com # 若使用自签证书可取消下行注释关闭证书校验 # ssl_verify: False # 返回通道配置:Minion回传执行结果给Master的通道 ret: host: salt-master.ret.com port: 443 # 和上面用同一个Ingress端口即可 ssl: True sni_name: salt-master.ret.com # 若使用自签证书可取消下行注释关闭证书校验 # ssl_verify: False
- 重启Salt Minion服务使配置生效:
systemctl restart salt-minion
验证方法
- 在Minion节点执行
salt-call test.ping,若返回结果为True,说明两个通道连接正常 - 可通过tcpdump抓包验证SNI字段:
tcpdump port 443 | grep -E 'salt-master.publish.com|salt-master.ret.com',能看到两个域名的SNI请求即为配置成功
常见问题排查
- 若出现证书校验失败,除了关闭校验,也可以把Ingress使用的根证书放到Minion的
/etc/pki/ca-trust/source/anchors/目录下,执行update-ca-trust更新可信证书列表后再重启Minion - 若连接超时,检查Ingress的转发规则是否正确,以及Salt Master的4505、4506端口是否正常对外提供服务
内容的提问来源于stack exchange,提问作者Daniel Abela
相关产品推荐
相关产品推荐

