Puppet运行报无法获取证书、TCP连接失败错误排查
Puppet客户端连接服务端域名解析报错排查方案
报错核心触发点为客户端无法解析配置的Puppet服务端域名,无法建立到服务端8140端口的TCP连接,按以下顺序逐层排查即可解决:
- 第一步:验证基础域名解析能力
在DietPi客户端终端执行解析测试:ping user.example.com
或nslookup user.example.com
如果命令返回域名解析失败,按场景修复:- 内网测试无内部DNS服务时,直接编辑客户端
/etc/hosts文件,追加记录:<Puppet服务端实际内网/公网IP> user.example.com,保存后重新测试解析。 - 存在内部DNS服务时,检查客户端
/etc/resolv.conf内配置的DNS地址是否正确,是否具备该域名的解析记录。
- 内网测试无内部DNS服务时,直接编辑客户端
- 第二步:验证端口连通性与服务端状态
解析正常后,测试客户端到服务端8140端口的TCP连通性:nc -zv user.example.com 8140
如果连接失败按以下点排查:- 检查服务端侧防火墙规则(包括系统防火墙、云平台安全组、网络ACL),放开8140端口的入站访问权限,源地址覆盖客户端所在网段。
- 登录Puppet服务端执行
systemctl status puppetserver,确认服务处于active (running)状态,未启动则执行systemctl start puppetserver启动服务,同时执行systemctl enable puppetserver设置开机自启。 - 核对Puppet服务端配置,确认服务未绑定仅本地回环地址127.0.0.1,需监听客户端可访问的网卡IP。
- 第三步:核对Puppet客户端配置有效性
执行命令查看当前生效的服务端配置:puppet config print server
如果返回值不是预期的user.example.com,重新执行全局配置命令:sudo puppet config set server user.example.com --section main
注意检查配置值末尾不要带多余的斜杠,避免出现报错路径中8140//puppet-ca的双斜杠异常问题。 - 第四步:调整证书请求参数避免直接退出
网络连通性验证通过后,首次执行agent命令时增加等待证书签发参数,避免直接退出:sudo puppet agent -v --test --waitforcert 60
此时登录Puppet服务端,执行sudo puppetserver ca list可查看到待签发的客户端证书,执行sudo puppetserver ca sign --certname <客户端对应证书名>完成签发,客户端即可正常完成证书拉取、配置同步流程。
内容的提问来源于stack exchange,提问作者abedalswaity7
相关产品推荐
相关产品推荐

