SaltStack Master 与 Minion 通信端口完整详解:4505、4506 作用、防火墙配置与排错教程

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 监听)

  1. 服务角色:Master 持续监听 4505,作为消息广播总线;
  2. 数据流方向:Master 主动向外广播任务、状态执行指令、事件信息,所有 Minion 保持长连接订阅该端口;
  3. 核心业务场景:
    • salt state、salt cmd.run 等指令下发;
    • 定时高 state、事件总线 EventBus 推送;
    • 全局配置、pillar 数据广播推送;
  4. 连接特性:Minion 开机后主动建立长连接至 Master 4505,全程保持连接,无频繁重连。

简单理解:4505 是Master 发指令给 Minion 的通道

2.2 TCP 4506:RPC 返回 / 文件传输端口(Master 监听)

  1. 服务角色:Master 监听 4506,接收 Minion 主动发起的请求与返回数据;
  2. 数据流方向:Minion 主动连接 Master 4506,回传执行结果、请求拉取文件;
  3. 核心业务场景:
    • Minion 执行完命令,把输出结果传回 Master;
    • Minion 请求同步 saltstack file 服务文件、模板、静态资源;
    • Minion 上报硬件信息、grains 数据、认证密钥请求;
  4. 连接特性:任务执行时临时建立短连接,任务结束释放,高频文件分发会持续复用连接。

简单理解:4506 是Minion 回传结果、拉取文件的通道

2.3 通信整体流程完整示例

执行命令 salt '*' cmd.run 'df -h'

  1. Master 通过 4505 端口向所有在线 Minion 广播执行指令;
  2. 各 Minion 收到指令本地执行磁盘查询;
  3. Minion 主动连接 Master 4506,将 df 执行输出结果回传给主控;
  4. Master 汇总所有节点返回数据并打印输出。 若 4506 端口拦截,指令能下发但 Master 收不到任何执行返回,界面卡死无输出。

三、端口协议与访问规则规范

  1. 协议:仅 TCP 协议,无 UDP 流量;
  2. 监听端:Salt Master 服务器监听 0.0.0.0:4505、0.0.0.0:4506;
  3. 访问方向:所有 Minion 节点出站访问 Master 的 4505、4506,Master 无需主动向 Minion 开放入站端口;
  4. 网络架构:跨网段、跨机房部署时,防火墙仅需放行 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-ports

4.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 save

4.3 Windows Minion 配套 Windows 防火墙

登录 Master 服务器,高级防火墙添加入站规则,TCP 4505、4506 允许任意远程 IP 访问;Windows Minion 客户端无需配置入站规则,仅出站访问主控。

五、自定义修改 Salt 通信端口方法

特殊环境端口被占用时,可修改 Master 与 Minion 配置文件更换端口,两端必须同步修改否则通信中断。

  1. Master 配置文件 /etc/salt/master 修改参数:
publish_port: 45005  # 替换原4505
ret_port: 45006       # 替换原4506
  1. 所有 Minion 配置 /etc/salt/minion 同步新增:
master_publish_port: 45005
master_ret_port: 45006
  1. 重启服务生效
# Master端
systemctl restart salt-master
# Minion端
systemctl restart salt-minion

六、端口不通故障现象与排查命令

6.1 典型故障表现

  1. salt-key -L 看不到 Minion 节点,节点无法完成密钥认证;
  2. 执行 salt 远程命令长时间卡死,无返回输出;
  3. salt-file 文件分发任务报错,无法同步模板与静态文件;
  4. 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 4506

6.3 服务监听状态检查(Master 端)

# 查看salt-master是否正常监听双端口
ss -tlnp | grep salt-master

正常输出会同时显示 4505、4506 端口监听进程。

七、高频误区避坑指南

  1. 误区 1:只放行 4505 一个端口就能正常使用 Salt 纠正:4506 负责结果回传与文件同步,缺少该端口指令有去无回,执行任务直接卡死。
  2. 误区 2:需要在 Minion 节点开放 4505/4506 入站端口 纠正:通信为 Minion 主动出站连接 Master,Minion 本机无需开放任何端口,仅 Master 防火墙放行入站流量。
  3. 误区 3:端口支持 UDP 协议,可以混用 TCP/UDP 放行 纠正:Salt 底层 ZeroMQ 通信仅使用 TCP,放行 UDP 无任何作用。
  4. 误区 4:修改 Master 端口后不用同步 Minion 配置 纠正:发布端口、返回端口两端配置必须完全一致,否则 Minion 无法建立长连接。
  5. 误区 5:4505 和 4506 端口可以互换使用 纠正:两个端口服务逻辑独立,互换会导致 Pub 订阅、RPC 返回流程完全失效。

八、全文总结

SaltStack Master 与 Minion 标准通信双端口分工清晰:TCP 4505 为 Pub/Sub 指令下发广播端口,TCP 4506 为 RPC 结果回传、文件传输端口,两个端口缺一不可。 网络部署时仅需在 Master 防火墙放行 4505、4506 TCP 入站流量,所有 Minion 节点主动出站连接主控;端口冲突场景可同步修改 master 与 minion 配置文件更换自定义端口。日常节点离线、命令无返回、文件同步失败故障,优先使用 telnet/nc 工具检测双端口连通性,快速定位防火墙拦截、端口监听异常问题。

注·部分内容为AI辅助生成

posted @ 2026-06-25 13:49  园囧囧园  阅读(27)  评论(0)    收藏  举报