
我目前的網路:
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 發布者:(暫存)...
這是我的目標:
- (完成)按名稱存取我的 Docker 容器。例如:nginx.mydomain.com
- (完成)無需 DNS 即可存取我的 Docker 容器(以防出現問題)。例如:192.168.1.14:10080
- 當我按名稱存取容器時,瀏覽器顯示“安全性”。
- 我可能想稍後向外部公開其中的一兩個,因此保持該選項易於使用是關鍵,但 ATM 我計劃對所有事情都使用 VPN。
到目前為止我已經解決的問題:
- 我無法讓 Traefik 直接存取 80/443,因為 NAS 正在使用這些連接埠。
- 我將 Traefik 放入 macvlan 網路中
- 容器無法 ping 通其父容器
- 透過將連接埠新增至堆疊(例如:「Ports:/n - 180:80/n - 1443」),它允許我直接使用 DNS 存取容器(目標#2),並且還修復了父級的 ping 問題。