Synology 上的 Traefik:LetsEncrypt 说它有 DNS 问题,但证书文件看起来有效 [关闭]

问题描述 投票:0回答:0

我当前的网络:

Router         - 192.168.1.1   (static)
Windows PC     - 192.168.1.10  (static)
Synology NAS   - 192.168.1.11  (static)
DockerPihole   - 192.168.1.12  (macvlan-static)
DockerUnbound  - 192.168.1.13  (macvlan-static)
DockerTraefik  - 192.168.1.14  (macvlan-static)

Docker Bridge Network(让 Traefik 工作)

DockerTraefik  - 192.168.10.2  (bridge-static)
DockerNginx1   - 192.168.10.10 (bridge-static)
DockerNginx2   - 192.168.10.20 (bridge-static)
  • 我在我的 Synology NAS 上运行 Docker
  • 我在我的 Synology NAS 上运行 DNS(内置 DNS 应用程序) Pi-Hole、Unbound 和 Traefik 在共享的 macvlan 中运行。
  • 我为 Traefik 创建了一个桥接网络来连接到每个容器。
  • 我在 portainer 的每个容器堆栈上配置标签来处理 Traefik 配置。
  • 我正在尝试按照此处的教程进行操作 https://youtu.be/wLrmmh1eI94 但这不是在 synology 上,所以略有不同。
  • 虽然我确实拥有我尝试使用的域,但我的理解是,只要我可以指向处理该域的我的 Synology DNS 服务器,就没有必要。

主要区别是 Synology 已经在使用 80 和 443,所以我的解决方案是将 Traefik 放在 macvlan 中,所以我没有端口冲突。

我几乎所有的东西都在工作,但我在弄清楚这件事(希望是最后一件)时遇到了麻烦。在 Traefik 日志中,我可以看到 letsencrypt.org 的 DNS 有问题。

这是日志的错误:

level=error
msg=Unable to obtain ACME certificate for domains "nginx2.mydomain.com": 
    unable to generate a certificate for the domains [nginx2.mydomain.com]:
error: one or more domains had a problem:
      [nginx2.mydomain.com] acme: error: 400 :: urn:ietf:params:acme:error:dns :: DNS problem: NXDOMAIN looking up A for nginx2.mydomain.com
      - check that a DNS record exists for this domain; DNS problem: NXDOMAIN looking up AAAA for nginx2.mydomain.com
      - check that a DNS record exists for this domain
providerName=staging.acme
routerName=nginx2@docker
rule=Host(`nginx2.mydomain.com`)
ACME CA=https://acme-staging-v02.api.letsencrypt.org/directory

我已经在 Synology 中设置了 DNS,并将我的路由器设置为将 Synology 作为我的第一个 DNS 服务器。 当我从我的 PC ping nginx2.mydomain.com 时,它返回 DockerTraefik 容器的 IP 192.168.1.14。我相信这是正确的行为。

另外,当我查看我的 acme.json 文件(它是空的)时,我看到它已经填充了一个证书,上面写着“状态”:“有效”(暂时暂存,生产是空的)。我相信这是正确的行为。

我不确定我错过了什么,但是当我浏览到 nginx2.mydomain.com 时,浏览器中的证书显示

颁发给:TRAEFIK DEFAULT CERT 颁发者:TRAEFIK DEFAULT CERT

我期待它说: 发给:nginx2.mydomain.com 发布者:(STAGING)...

这是我的目标:

  1. (完成)按名称访问我的 Docker 容器。例如:nginx.mydomain.com
  2. (完成)在没有 DNS 的情况下访问我的 Docker 容器(以防出现问题)。例如:192.168.1.14:10080
  3. 当我按名称访问我的容器时,浏览器说“安全”。
  4. 稍后我可能想在外部公开其中的一两个,因此保持该选项易于使用是关键,但 ATM 我计划对所有内容都使用 VPN。

目前解决的问题:

  1. 我不能让 Traefik 直接访问 80/443,因为 NAS 正在使用这些端口。
    • 我把Traefik放到一个macvlan网络里
  2. 容器无法 ping 通它们的父容器
    • 通过向堆栈添加端口(例如:“端口:/n - 180:80/n - 1443”),它允许我直接使用 DNS 访问容器(目标#2)并且还修复了父级的 ping 问题。
docker traefik lets-encrypt synology
© www.soinside.com 2019 - 2024. All rights reserved.