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

Traefik配置DNS over TLS遇TLS握手失败问题求助

Traefik + Pi-hole DNS over TLS (DoT) 配置排查方向

针对你遇到的kdig TLS握手失败但openssl验证正常、普通DNS查询正常的问题,以下是具体排查方向:

1. 确认证书的域名匹配性

虽然openssl s_client验证通过,但需确保证书的Subject Alternative Names (SAN) 字段包含你指定的mydnshere域名:

  • 进入Traefik容器,查看acme.json中的对应证书条目,或执行命令提取证书信息:
    # 从Traefik的acme.json中导出证书(先找到对应域名的cert字段)
    echo "证书内容" | base64 -d | openssl x509 -text -noout
    
  • 检查输出中的X509v3 Subject Alternative Name部分,确认存在DNS:mydnshere。
  • 同时确认certificatesresolvers.le的HTTP挑战已完成:检查Traefik日志(临时调高日志级别到DEBUG),确认证书已成功颁发。

2. 验证Traefik TCP路由的SNI规则

Pi-hole的DoT路由规则HostSNI(\mydnshere`)需与kdig的+tls-host`参数完全一致:

  • 检查域名是否存在拼写错误、大小写问题(域名是大小写不敏感的,但需确保完全匹配)。
  • 临时修改规则为HostSNI(\*`)并重启Pi-hole容器,再次用kdig`测试,若握手成功则说明原SNI规则存在匹配问题。

3. 启用Traefik DEBUG日志获取详细错误

当前Traefik日志级别为ERROR,无法获取TLS握手的具体失败原因:

  • 修改Traefik配置中的--log.level=${TRAEFIK_LOG_LEVEL:-ERROR}为--log.level=DEBUG,重启Traefik。
  • 再次执行kdig测试,查看Traefik日志中关于TLS握手的详细报错(例如证书不匹配、SNI不识别、协议版本不兼容等)。

4. 测试kdig的TLS版本兼容性

部分kdig版本默认使用的TLS版本可能与Traefik的支持范围不匹配:

  • 尝试指定TLS 1.3版本测试:
    kdig -d @myiphere +tls-ca +tls-host=mydnshere +tls1_3 example.com
    
  • 或指定TLS 1.2版本:
    kdig -d @myiphere +tls-ca +tls-host=mydnshere +tls1_2 example.com
    

5. 检查Pi-hole的DNS监听配置

确保Pi-hole容器内的DNS服务监听所有接口,而非仅127.0.0.1:

  • 进入Pi-hole容器执行:
    ss -tulpn | grep :53
    
  • 确认输出中存在0.0.0.0:53或:::53的监听条目,否则Pi-hole无法接收Traefik转发的流量。

6. 排查网络与端口配置

  • 确认主机防火墙(如ufw、iptables)已开放853/TCP端口,云服务器需同时在安全组中开放该端口。
  • 检查主机上是否有其他服务占用853端口:
    ss -tulpn | grep :853
    
  • 确认只有Traefik进程在监听853端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:45:14