Traefik на Synology: LetsEncrypt сообщает, что у него проблемы с DNS, но файл сертификата выглядит действительным

Моя текущая сеть:

      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 (для работы Traefik)

      DockerTraefik  - 192.168.10.2  (bridge-static)
DockerNginx1   - 192.168.10.10 (bridge-static)
DockerNginx2   - 192.168.10.20 (bridge-static)
  • Я использую Docker на своем Synology NAS.
  • Я использую DNS на своем Synology NAS (встроенное приложение DNS). Pi-Hole, Unbound и Traefik работают в общем macvlan.
  • Я создал мостовую сеть для подключения Traefik к каждому контейнеру.
  • Я настраиваю метки в стеке каждого контейнера в portainer для обработки конфигурации Traefik.
  • Я пытаюсь следовать этому руководству здесь https://youtu.be/wLrmmh1eI94 , но это не было на Synology, поэтому оно немного отличается.
  • Хотя я владею доменом, который пытаюсь использовать, я понимаю, что в этом нет необходимости, если я могу указать на свой DNS-сервер Synology, который обрабатывает этот домен.

Основное отличие состоит в том, что 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

Я настроил DNS в Synology, и на моем маршрутизаторе Synology стал моим первым DNS-сервером. Когда я пингую nginx2.mydomain.com со своего компьютера, он возвращает IP-адрес контейнера DockerTraefik 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. (готово) Доступ к моим контейнерам Docker без DNS (в случае возникновения проблем). например: 192.168.1.14:10080
  3. Браузер говорит «безопасно», когда я обращаюсь к своим контейнерам по имени.
  4. Возможно, позже я захочу открыть доступ к одному или двум из них извне, поэтому ключевым моментом является обеспечение легкого доступа к этой опции, но ATM я планирую использовать VPN для всего.

Проблемы, которые я решил на данный момент:

  1. Я не могу предоставить Traefik прямой доступ к 80/443, потому что NAS использует эти порты.
    • Я поместил Traefik в сеть macvlan.
  2. Контейнеры не смогли пинговать своего родителя
    • Добавление портов в стек (например: «Порты:/n — 180:80/n — 1443») позволило мне получить доступ к контейнеру напрямую через DNS (цель № 2), а также устранило проблему с пингом для родительского контейнера.

0 ответов

Другие вопросы по тегам