在 DDNS 服务器后面设置 DDNS?

在 DDNS 服务器后面设置 DDNS?

结论;我有一个正在运行的 DDNS ddns.example.com,我想使其能够将此类请求路由host1.example.com到我本地托管的机器。

因此,我有一个公共域名,比如说example.comGoogle Domains。我有一个支持 DDNS 的路由器,假设它有一个动态 IP 地址,当前设置为1.2.3.4

我让路由器正确识别我的 GD 帐户,并在 GD 上将其设置ddns.example.com为匹配路由器。此时一切正常,我可以看到,例如,我的本地网络上的 host1(其端口1234已转发)可以在 上看到ddns.example.com:1234

我反而要做的就是能够在我的本地网络上书写host1.example.com:1234/a/b?c和访问。host1:1234/a/b?c

我目前的想法是,这应该可以通过以下方式实现:

  1. 我添加通配符记录从Google Domains*.ddns到。ddns.example.com

  2. 在 Google Domains 上添加发件人CNAME至收件人host1host1.ddns.example.com

  3. 在我的本地网络上设置一个动态 DNS 服务器+客户端,host2端口为 53,并通过路由器进行端口转发(我有一个 DNS 服务器,它能够在权威答复中包含当前的外部 IP 地址,该服务器安装在 上host2)。

  4. 将适当的条目添加到我的本地 DDNS 客户端/服务器(host2):

    1. 添加NS记录ns.ddns.example.comhost2

    2. 添加动态A记录ns.ddns.example.comhost2

    3. 添加动态A记录services.ddns.example.comhost2

  5. 1234我从host1路由器上进行端口转发。

这是我的想法应该发生:

我输入host1.example.com/a/b?c

  1. NS 请求com.example.com.,然后A请求host1

  2. host1.example.com被重定向到host1.ddns.example.com

  3. 客户要求提供NS记录ddns.example.com。答案是1.2.3.4

  4. 客户端询问 的 IP 地址host1.ddns.example.com。答案是1.2.3.4

  5. 客户端连接到1.2.3.4:1234/a/b/?c由 托管的host1:1234/a/b/?c

diginghost1.example.com域确实会返回CNAME记录host1.ddns.example.com。但是,diginghost1.ddns.example.com会返回 Google NS 域。据我了解,CNAME记录基本上意味着对该记录的任何请求都将被转发。所以我预计dig对执行host1.ddns.example.com会匹配通配符,成为CNAME的重定向ddns.example.com,进而能够处理其余的递归。我在这里遗漏了什么?

答案1

这可能是一个很老的问题,但我也遇到过类似的情况,因为我有一个动态公共 IP。我只是使用多个 duckdns 实例,它们指向我服务器上运行的不同服务的 10 个不同的子域。

我使用 Lets-encrypt 来处理反向代理和 SSL 证书,并且能够使用不同的子域(例如 a.duckdns.org、b.duckdns.org)指向相关的 IP:端口。

路由器上唯一的端口转发功能是将 SSL 端口指向 letsencrypt。我不建议不必要地打开额外的端口。

这是可从 a.duckdns.org 访问的音乐服务器的 letsencrypt.conf 示例

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name abcsonic.*; #(Your subdomain/cname)
    include /config/nginx/ssl.conf;
    client_max_body_size 0;
    # enable for ldap auth, fill in ldap details in ldap.conf
    #include /config/nginx/ldap.conf;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;
        # enable the next two lines for ldap auth
        #auth_request /auth;
        #error_page 401 =200 /login;
        include /config/nginx/proxy.conf;
        resolver 127.0.0.11 valid=30s;
        set $upstream_airsonic airsonic;
        proxy_pass http://192.168.10.100:4040; #(Airsonic IP address)
    }

}

答案2

我通过逐一检查每个部分并确定它们工作正常来解决问题。问题出在 Google 域帐户上。显然,由于他们那边的一个错误,我的帐户被阻止,因为未激活。客户服务代理修复了这个问题后,一切都顺利运行。因此,我认为这个问题的布局可用于成功地在另一个 DDNS 后面设置 DDNS,并支持动态域/子域,而无需拥有静态 IP。

相关内容