傀儡代理在创build新证书时延迟

root@testpgmaster:/# puppetd --test info: Creating a new SSL key for testpgmaster warning: peer certificate won't be verified in this SSL session info: Caching certificate for ca warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session info: Creating a new SSL certificate request for testpgmaster info: Certificate Request fingerprint (md5): C9:83:59:EF:6A:B8:16:31:B6:92:5D:70:F1:67:39:4F warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session Exiting; no certificate found and waitforcert is disabled root@testpgmaster:/# 

这是正常的输出,结果如预期的那样正确地创build证书请求。 问题是,几乎每次显示警告,都会延迟大约两分钟。

当用strace运行相同的命令时,在混乱的strace输出中,我有一个地方:

 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 6 fcntl(6, F_GETFL) = 0x2 (flags O_RDWR) fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0 connect(6, {sa_family=AF_INET, sin_port=htons(8140), sin_addr=inet_addr("10.0.2.15")}, 16) = -1 EINPROGRESS (Operation now in progress) ... [lots of intermediate output] ... select(7, [6], [], [], {119, 999900}) <- The pause occurs here 

AFAIU,这意味着它在等待木偶大师回应某事的时候阻止。

puppetmaster在apache2上运行乘客,在端口8140上侦听。它还具有防火墙,但端口8140允许代理。 事实上代理是一个openvz容器,在机器内部运行,作为主机; 容器使用NAT,主机做转发; 所有这些设置肯定会有问题,但是只有当“SSL:会话中不会validation对方证书”消息时才会出现问题。 在所有其他情况下,一切都运行没有问题。

当木偶大师试图从其IP地址parsing客户的名字时出现问题。 由于防火墙configuration错误,正在过滤传入的UDP数据包,这意味着任何DNS查询最终都会超时。

我通过在puppet master上运行wiresharkfind了问题,因为我怀疑这是一个networking超时,希望通过查看暂停之前发生的几个数据包来find罪魁祸首。 确实有效。 奇怪的是,DNS的完全失败并没有引起任何其他问题; 一个原因是我使用的是apt代理,这意味着apt-get没有提出DNS请求。