news 2026/6/26 8:52:56

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 工具检测双端口连通性,快速定位防火墙拦截、端口监听异常问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 8:48:30

TypeTraits类型萃取全解,STL原生类型特性、编译期类型判断、属性萃取、迭代器特性、工程高阶泛型落地实战

0. 前言我们彻底吃透了 std::enable_if 条件模板体系,掌握了基于 SFINAE 的编译期条件筛选、三种约束写法、多条件组合匹配、类模板偏特化联动,以及 if constexpr 与 enable_if 的工程选型规范,彻底具备了可控、安全、零开销的泛型约束能力。…

作者头像 李华
网站建设 2026/6/26 8:47:29

HACS集成部署与故障排除技术指南:架构解析与性能优化方案

HACS集成部署与故障排除技术指南:架构解析与性能优化方案 【免费下载链接】integration HACS gives you a powerful UI to handle downloads of all your custom needs. 项目地址: https://gitcode.com/gh_mirrors/in/integration HACS(Home Assi…

作者头像 李华
网站建设 2026/6/26 8:46:50

HC32L130国产MCU开发实战:从固件库解析到低功耗设计

1. 项目概述:从一串神秘代码到国产MCU的深度探索拿到“hdsc.hc32l130.1.0.1”这串字符,很多刚接触嵌入式开发的朋友可能会一头雾水。这看起来像是一个文件名,或者某个软件的版本号。但对于我们这些常年混迹在单片机一线的工程师来说&#xff…

作者头像 李华
网站建设 2026/6/26 8:44:23

如何设计一个支持“秒杀”活动的系统?

如何设计一个支持“秒杀”活动的系统? 在电商领域,“秒杀”活动是一种常见的促销手段,能够在短时间内吸引大量用户抢购限量商品。高并发、低延迟和系统稳定性是设计这类系统时面临的巨大挑战。本文将介绍如何设计一个支持“秒杀”活动的系统…

作者头像 李华
网站建设 2026/6/26 8:44:13

Python字典遍历修改键的避坑指南

Python循环中修改字典键导致遍历异常深度解析实战案例 一、问题概述 Python字典底层基于哈希表实现,在遍历字典keys()、items()、values()过程中,直接新增、删除字典键会触发迭代器失效,抛出RuntimeError: dictionary changed size during it…

作者头像 李华
网站建设 2026/6/26 8:43:08

易语言调用Java实现3DES加解密:跨语言整合实战指南

1. 项目概述与核心价值最近在整理一些遗留的老项目,发现不少用易语言写的客户端程序,里面涉及到与Java服务端通信时的数据加解密。当时为了图省事,很多用的是简单的异或或者自定义算法,安全性堪忧。现在服务端升级,要求…

作者头像 李华