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

Traefik对接PowerDNS配置DNS挑战获取通配符证书超时报错求助

Traefik DNS挑战获取通配符证书超时问题

问题描述

我在尝试配置Traefik的DNS挑战功能以获取通配符证书时遇到故障,对应环境变量配置如下:

environment:
  - TRAEFIK_ENTRYPOINTS_HTTP=true
  - TRAEFIK_ENTRYPOINTS_HTTP_ADDRESS=:80
  - TRAEFIK_ENTRYPOINTS_HTTPS=true
  - TRAEFIK_ENTRYPOINTS_HTTPS_ADDRESS=:443
  - TRAEFIK_ENTRYPOINTS_HTTPS_HTTP_TLS=true
  - TRAEFIK_ENTRYPOINTS_HTTPS_HTTP_TLS_CERTRESOLVER=default
  - TRAEFIK_ENTRYPOINTS_HTTPS_HTTP_TLS_DOMAINS_0_MAIN=mydomain.net
  - TRAEFIK_ENTRYPOINTS_HTTPS_HTTP_TLS_DOMAINS_0_SANS=*.mydomain.net
  - TRAEFIK_PROVIDERS_DOCKER=true
  - TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT=true
  - TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_EMAIL=info@mydomain.net
  - TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_DNSCHALLENGE=true
  - TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_DNSCHALLENGE_PROVIDER=pdns
  - TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_DNSCHALLENGE_RESOLVERS=8.8.8.8:53
  - TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_DNSCHALLENGE_DELAYBEFORECHECK=15
  - TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_STORAGE=/data/acme.json
  - PDNS_API_URL=http://192.168.123.10:8081/
  - PDNS_API_KEY=pdns-api-key

程序运行输出的错误日志如下:

time="2021-09-06T08:53:39+02:00" level=error msg="Unable to obtain ACME certificate for domains \"mydomain.net,*.mydomain.net\" : unable to generate a certificate for the domains [mydomain.net *.mydomain.net]: error: one or more domains had a problem:\n[*.mydomain.net] time limit exceeded: last error: read udp 192.168.160.2:38270->195.141.155.147:53: i/o timeout\n[mydomain.net] time limit exceeded: last error: read udp 192.168.160.2:49936->195.141.155.147:53: i/o timeout\n" providerName=default.acme

我已尝试增大DELAYBEFORECHECK参数、自定义设置RESOLVERS解析器,均未解决问题。经核实ACME挑战的TXT记录已正确创建在PowerDNS中。

排查解决方法

首先确认问题核心:错误日志显示Traefik实际使用的DNS服务器为195.141.155.147,而非你配置的8.8.8.8,说明自定义解析器配置未生效,且该DNS服务器网络不可达导致超时。可按以下步骤排查:

  • 修正DNS解析器配置格式
    Traefik v2+ 中dnsChallenge.resolvers为数组类型,环境变量配置需要添加索引后缀,原配置缺少_0标识,修改为如下格式即可生效:
- TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_DNSCHALLENGE_RESOLVERS_0=8.8.8.8:53

如果需要配置多个解析器,依次添加_1、_2后缀即可。

  • 验证容器DNS网络连通性
    进入Traefik容器内部手动测试DNS查询,确认网络可达:
# 进入Traefik容器
docker exec -it <你的Traefik容器名> sh
# 测试公共DNS连通性
nslookup _acme-challenge.mydomain.net 8.8.8.8
# 测试内网PowerDNS连通性
nslookup _acme-challenge.mydomain.net 192.168.123.10

如果nslookup返回超时,先排查容器所在主机的防火墙、出口安全组是否允许UDP 53端口出网。

  • 调整解析器为内网PowerDNS(可选)
    如果你的PowerDNS为内网DNS服务,公网DNS无法直接查询到最新记录,可直接将解析器指定为PowerDNS地址,避免公网同步延迟:
- TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_DNSCHALLENGE_RESOLVERS_0=192.168.123.10:53

同时可将DELAYBEFORECHECK调整为30-60秒,给PowerDNS留出足够的记录同步时间。

  • 跳过传播检查(可选)
    如果确认TXT记录已正确写入PowerDNS,可添加以下配置跳过Traefik的DNS传播检查,直接发起ACME校验请求:
- TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_DNSCHALLENGE_DISABLEPROPAGATIONCHECK=true

该配置需要配合足够的DELAYBEFORECHECK参数使用,避免ACME服务端查询时记录还未生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:21:01