我目前的網路:

我目前的網路:

我目前的網路:

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 橋接網路(用於 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 文件(為空)時,我發現它已填充了一個證書,上面寫著“status”:“valid”(目前暫存,生產為空)。我相信這是正確的行為。

我不確定我缺少什麼,但是當我瀏覽到 nginx2.mydomain.com 時,瀏覽器中的憑證顯示

頒發給:TRAEFIK DEFAULT CERT 頒發者:TRAEFIK DEFAULT CERT

我期待它說: 發佈到: nginx2.mydomain.com 發布者:(暫存)...

這是我的目標:

  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 通其父容器
    • 透過將連接埠新增至堆疊(例如:「Ports:/n - 180:80/n - 1443」),它允許我直接使用 DNS 存取容器(目標#2),並且還修復了父級的 ping 問題。

相關內容