You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现公网Puppet Master与内网Puppet Agent的连接?

公网Puppet Master与内网Agent连接方案

以下是几种可行的连接方案,根据你的网络环境选择:

方案1:直接连通(内网Agent可访问公网)

这是最直接的方式,适用于内网Agent能发起对外HTTPS请求的场景:

  • Master端配置:
    • 调整防火墙/安全组规则,允许内网Agent所在公网出口IP段访问Master的8140端口(Puppet默认通信端口)。
    • 确认Puppet服务正常运行:puppetserver status。
  • Agent端配置:
    • 修改/etc/puppetlabs/puppet/puppet.conf(开源Puppet路径)的[agent]段:
      server = 公网Master的域名或IP
      certname = 你的Agent唯一标识(如hostname)
      
    • 触发证书请求:puppet agent -t。
  • 证书签署:
    • 在Master端列出待签署证书:puppet cert list。
    • 签署Agent证书:puppet cert sign <Agent的certname>。
    • 回到Agent端再次执行puppet agent -t,验证连接成功。

方案2:VPN隧道(内网Agent无法直接访问公网)

如果内网是封闭环境,Agent无法直接出网,建议通过VPN建立加密隧道:

  • 在公网Master上部署VPN服务(如WireGuard、OpenVPN),配置允许内网Agent接入的规则。
  • 在内网Agent上配置VPN客户端,连接到Master的VPN服务,获取同一虚拟网段的IP。
  • 修改Agent的puppet.conf,将server设置为VPN网段内的Master IP。
  • 后续证书请求、签署步骤同方案1。
  • 优势:所有Puppet通信都在加密隧道内,无需暴露Master的8140端口到公网,安全性更高。

方案3:反向SSH隧道(临时测试场景)

适合临时验证连接,或无VPN条件的场景(需Agent能SSH到公网中转服务器):

  • 在Agent上建立正向SSH隧道,将Master的8140端口映射到Agent本地:
    ssh -L 8140:公网MasterIP:8140 中转服务器用户名@中转服务器IP
    
    (如果中转服务器就是Master,可简化为ssh -L 8140:localhost:8140 用户名@公网MasterIP)
  • 修改Agent的puppet.conf,设置server = 127.0.0.1。
  • 执行puppet agent -t发起证书请求,后续签署步骤同方案1。
  • 注意:长期使用需配置SSH密钥免密登录,并用autossh保持隧道后台运行。

方案4:Puppet Bolt(无持久Agent需求)

如果不需要持续的Agent-Master同步,仅需执行一次性配置任务,可使用Puppet Bolt:

  • 确保内网Agent开启SSH服务,且公网Master能通过端口转发/VPN访问Agent的SSH端口。
  • 在Master上安装Bolt工具,编写Puppet任务或计划。
  • 执行命令推送配置:bolt plan run <计划名称> --targets <内网Agent的IP>。

关键注意事项

  • 安全性:始终启用Puppet证书验证;限制Master 8140端口的访问来源;VPN/SSH场景使用密钥认证替代密码。
  • 时间同步:确保Master和Agent的系统时间一致,避免证书过期或验证失败。
  • 延迟优化:跨公网连接时,可调整Agent的runinterval参数(默认30分钟),减少频繁同步带来的网络压力。

内容的提问来源于stack exchange,提问作者Majedur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:33:29