SaltStack 自动化运维平台依靠固定端口完成主控 Master 与被控 Minion 节点指令下发、文件传输、结果回传,大量部署人员开放端口不全、防火墙拦截导致节点失联、执行命令无响应。核心通信端口为4505、4506,两个端口分工完全独立缺一不可,本文拆解两个端口底层作用、TCP 通信逻辑、防火墙放行配置、端口自定义修改方法、端口不通典型故障排查,覆盖 Linux、Windows Minion 全平台部署规范。
一、核心结论一句话吃透
Salt Master 与 Minion 之间通信依赖两个固定 TCP 端口:4505 端口为发布订阅 Pub/Sub 消息端口,4506 端口为 Minion 返回结果、文件传输 RPC 端口;两端必须双向放行 TCP 4505、4506,仅开放单一端口会出现节点离线、指令执行失败、文件分发报错等问题。
二、两个核心端口分工与底层通信原理
2.1 TCP 4505:Pub/Sub 发布订阅端口(Master 监听)
- 服务角色:Master 持续监听 4505,作为消息广播总线;
- 数据流方向:Master 主动向外广播任务、状态执行指令、事件信息,所有 Minion 保持长连接订阅该端口;
- 核心业务场景:
- salt state、salt cmd.run 等指令下发;
- 定时高 state、事件总线 EventBus 推送;
- 全局配置、pillar 数据广播推送;
- 连接特性:Minion 开机后主动建立长连接至 Master 4505,全程保持连接,无频繁重连。
简单理解:4505 是Master 发指令给 Minion 的通道。
2.2 TCP 4506:RPC 返回 / 文件传输端口(Master 监听)
- 服务角色:Master 监听 4506,接收 Minion 主动发起的请求与返回数据;
- 数据流方向:Minion 主动连接 Master 4506,回传执行结果、请求拉取文件;
- 核心业务场景:
- Minion 执行完命令,把输出结果传回 Master;
- Minion 请求同步 saltstack file 服务文件、模板、静态资源;
- Minion 上报硬件信息、grains 数据、认证密钥请求;
- 连接特性:任务执行时临时建立短连接,任务结束释放,高频文件分发会持续复用连接。
简单理解:4506 是Minion 回传结果、拉取文件的通道。
2.3 通信整体流程完整示例
执行命令salt '*' cmd.run 'df -h'
- Master 通过 4505 端口向所有在线 Minion 广播执行指令;
- 各 Minion 收到指令本地执行磁盘查询;
- Minion 主动连接 Master 4506,将 df 执行输出结果回传给主控;
- Master 汇总所有节点返回数据并打印输出。 若 4506 端口拦截,指令能下发但 Master 收不到任何执行返回,界面卡死无输出。
三、端口协议与访问规则规范
- 协议:仅 TCP 协议,无 UDP 流量;
- 监听端:Salt Master 服务器监听 0.0.0.0:4505、0.0.0.0:4506;
- 访问方向:所有 Minion 节点出站访问 Master 的 4505、4506,Master 无需主动向 Minion 开放入站端口;
- 网络架构:跨网段、跨机房部署时,防火墙仅需放行 Minion 访问 Master 两个端口的出站流量,Minion 本机无需开放端口。
四、主流防火墙放行配置实操
4.1 Linux firewalld(CentOS/RHEL 7/8/9)
# 永久放行4505、4506 TCP端口 firewall-cmd --permanent --add-port=4505/tcp firewall-cmd --permanent --add-port=4506/tcp # 重载防火墙生效 firewall-cmd --reload # 验证端口开放列表 firewall-cmd --list-ports4.2 Linux iptables 通用规
# 允许所有客户端访问Salt Master双端口 iptables -A INPUT -p tcp --dport 4505 -j ACCEPT iptables -A INPUT -p tcp --dport 4506 -j ACCEPT service iptables save4.3 Windows Minion 配套 Windows 防火墙
登录 Master 服务器,高级防火墙添加入站规则,TCP 4505、4506 允许任意远程 IP 访问;Windows Minion 客户端无需配置入站规则,仅出站访问主控。
五、自定义修改 Salt 通信端口方法
特殊环境端口被占用时,可修改 Master 与 Minion 配置文件更换端口,两端必须同步修改否则通信中断。
- Master 配置文件
/etc/salt/master修改参数:
publish_port: 45005 # 替换原4505 ret_port: 45006 # 替换原4506- 所有 Minion 配置
/etc/salt/minion同步新增:
master_publish_port: 45005 master_ret_port: 45006- 重启服务生效
# Master端 systemctl restart salt-master # Minion端 systemctl restart salt-minion六、端口不通故障现象与排查命令
6.1 典型故障表现
- salt-key -L 看不到 Minion 节点,节点无法完成密钥认证;
- 执行 salt 远程命令长时间卡死,无返回输出;
- salt-file 文件分发任务报错,无法同步模板与静态文件;
- Minion 日志持续提示
Failed to connect to master publish port。
6.2 连通性检测命令(Minion 节点执行)
# 测试4505端口连通 telnet MasterIP 4505 # 测试4506端口连通 telnet MasterIP 4506 # 使用nc工具检测端口 nc -zv MasterIP 4505 nc -zv MasterIP 45066.3 服务监听状态检查(Master 端)
# 查看salt-master是否正常监听双端口 ss -tlnp | grep salt-master正常输出会同时显示 4505、4506 端口监听进程。
七、高频误区避坑指南
- 误区 1:只放行 4505 一个端口就能正常使用 Salt纠正:4506 负责结果回传与文件同步,缺少该端口指令有去无回,执行任务直接卡死。
- 误区 2:需要在 Minion 节点开放 4505/4506 入站端口纠正:通信为 Minion 主动出站连接 Master,Minion 本机无需开放任何端口,仅 Master 防火墙放行入站流量。
- 误区 3:端口支持 UDP 协议,可以混用 TCP/UDP 放行纠正:Salt 底层 ZeroMQ 通信仅使用 TCP,放行 UDP 无任何作用。
- 误区 4:修改 Master 端口后不用同步 Minion 配置纠正:发布端口、返回端口两端配置必须完全一致,否则 Minion 无法建立长连接。
- 误区 5:4505 和 4506 端口可以互换使用纠正:两个端口服务逻辑独立,互换会导致 Pub 订阅、RPC 返回流程完全失效。
八、全文总结
SaltStack Master 与 Minion 标准通信双端口分工清晰:TCP 4505 为 Pub/Sub 指令下发广播端口,TCP 4506 为 RPC 结果回传、文件传输端口,两个端口缺一不可。 网络部署时仅需在 Master 防火墙放行 4505、4506 TCP 入站流量,所有 Minion 节点主动出站连接主控;端口冲突场景可同步修改 master 与 minion 配置文件更换自定义端口。日常节点离线、命令无返回、文件同步失败故障,优先使用 telnet/nc 工具检测双端口连通性,快速定位防火墙拦截、端口监听异常问题。