Fritzbox 拒绝使用 traefik / docker 请求自定义域

问题描述

我已经使用 traefik 和 docker(基于 c't 中的一篇文章)为我的自定义域设置了一个简单的 Web 服务器,仅用于测试是否一切正常。但是,我的问题是我的路由器 FritzBox,它阻止了对 web2 容器 (web2.mydomain.de) 的请求,而是显示了路由器的登录页面。 我的 docker-compose 文件看起来像:

version: "3.7"
services:
  traefik:
    image: traefik:v2.0
    command: --providers.docker
    restart: always
    ports:
     - 80:80
     - 443:443
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock:rw
     - ./static.yml:/etc/traefik/traefik.yml
     - ./dynamic.yml:/etc/traefik/dynamic/dynamic.yml
     - ./acme.json:/etc/traefik/acme/acme.json

  web2:
    image: containous/whoami
    labels:
     - traefik.http.routers.web2.rule=Host(`web2.mydomain.de`) || ( Host(`mydomain.de`) && PathPrefix(`/web2`) )
     - "traefik.http.routers.web2.tls.certResolver=default"
     - "traefik.http.routers.web2.tls=true"

我也做过的事情:

  • CNAME-Record 配置:CNAME * xxxxxxxyyyyy.myfritz.net -
  • 我的 *.mydomain.de 的 fritzBox 中的 DNS 重新绑定异常(用于让传入的 req./resp.)
  • 在 FritzBox 中打开端口 80/443
  • acme.sh 正在运行(证书已生成

那么什么是错误配置?

解决方法

您的 fritzbox 可能有奇怪的行为。对于我的,如果我从内部 192.168.178.* 网络浏览外部 fritzbox IP,它甚至会显示路由器的登录面板;而且我根本没有将 fritzbox 本身暴露在互联网上。 IMO 这是 AVM 新路由器的错误行为。

我通过安装内部 DNS 服务器解决了这个问题。您想要拆分 DNS。这可确保您的域名解析为内部网络服务器的 IP 地址以用于内部请求,而不是您的外部 IP 地址。如果您尝试通过移动 LTE 连接访问您的网络服务器,您会发现它可以完美运行。这只是来自内部 fritzbox 网络的请求,被卡住了。因此,要么为拆分 DNS 安装内部 DNS 服务器,要么在操作系统的主机文件中手动输入。

尽管如此,我仍然不时收到一些随机的 SSL 证书错误。然后,fritzbox 将为登录面板显示其自签名证书,而不是我的域的 Let's Encrypt 证书。

tl;dr:您需要拆分 DNS,因为某些 Fritzbox 路由器无法进行正确的 NAT 发夹。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...