此乃调试耗时过久之事.
设备之状
于 systemd 之 Linux 机上以 Caddy 为反向代理运行。证书续期依 ACME 之规。日志中一切似无碍。然一日,证书已过期,竟无人察觉,竟两日.
其因
systemd-resolved 之性,于特定 DNS 查询,视上游解析器之状,或报 SERVFAIL。其非恒常也。或有区解析无碍,或有区默然失效。Caddy 之 ACME 客户,发挑战之请,systemd-resolved 报失,而更新之事,遂...不果。
此令人厌者,在于systemd-resolve --status无异常之象。dig或可应验于8.8.8.8。此桩解器乃欺诳汝之应用,且无所录其迹于有用之域。
其补
处之有三:
1. 绕过桩式解析器
指Caddy点(或Go之网栈)向公解器直。于汝之Caddyfile:
{
servers :443 {
dns resolver 1.1.1.1
}
}
或置GODEBUG=netdns=go强使 Go 解析器,毋信系统解析器之配置。
二、重启 systemd-resolved
systemctl restart systemd-resolved涤荡所积之残缺状态。此乃权宜之计,后必复临。
永固而查之/etc/resolv.conf勿恃桩解析以应万变。
三、用DNS-over-HTTPS
若欲持守其坚而减其脆,宜设之用 DoH 上游,非用素 UDP。虽不能解 SERVFAIL 之况,然可避 MITM 之患。
可识之症候
其症具在:Caddy之志,言续期不遂,然未明其故。caddy list显证书将速至期。其余皆如常。浏览器缓存证书到期之警,故用户渐止其诉——然则周一晨,此即汝之责矣.
要之
若汝以 systemd-resolved 运 Caddy,而证书无故将期,当先察 stub resolver,后察他物。此类之失,隐于昭然,盖因“DNS 似在运作”也。
非赞助者,不过虚耗一晌耳。












