我正在开发一种使用 ACME 协议管理 TLS 证书的安全/隔离服务。服务器需要使用特定子域上的 TXT 记录进行响应。此服务器不会为公众提供服务,但需要公开可用。
CNAME
记录是被允许的并且可以被跟踪。
托管动态记录的 TLS 管理服务器TXT
正在运行 Bind9,并且位于动态 IP 是唯一选项的地方。
域的主 DNS 记录位于注册商的公共 DNS 服务器上。我们已成功设置使用动态 DNS 更新的子域,但动态 DNS 提供商似乎不允许NS
记录。
因此在注册处我们有:
domain.com A xx.xx.xx.xx
www.domain.com A xx.xx.xx.xx
dynamic.domain.com NS dynamic.provider.com
在动态提供程序中,我们有:
dynamic.domain.com A yy.yy.yy.yy
在我们的 TLS 机器人服务器上,我们以 Bind9 作为权威机构运行,dynamic.domain.com
并附带一条文本TXT
记录:
test TXT "A nice Test."
因此期望的结果是,从互联网上的任何地方,您都应该能够运行dig TXT test.dynamic.domain.com
并获取A nice Test.
。
这似乎是动态 DNS 提供商失败了:
dig TXT test.dynamic.domain.com
只是给出:
;; AUTHORITY SECTION:
dynamic.domain.com. 2208 IN SOA dynamic.provider.com.
NS
唯一的方法是在动态 DNS 提供商处设置记录(即切换到支持NS
记录的提供商或自行设置)吗?或者是否有使用CNAME
记录或A
记录的变通方法来实现此目的?
答案1
你不需要。说真的。这很成问题
如果有需要,有两种可能的解决方法:
- 使用 vpn 代理 VPS。我也遇到过类似的情况,我的所有流量都通过美国代理服务器路由。
- 使用 cloudflare 零信任隧道。这本质上是您在本地运行的网关,用于将出站连接到 cloudflare。
在您的情况下:场景 1 - 我每月支付 7 美元购买 mikrotik vps。
答案2
我想出了如何让它发挥作用:
您需要两个子域名:一个用作动态A
记录,一个指向内部 DNS 服务。两个子域名均NS
在注册商处获取记录。
因此在注册处,记录如下所示:
CNAME _acme-challenge.domain.com => tls.robert.domain.com
NS dynamic.domain.com => dynamic.provider.nameservers
NS robert.domain.com => ns.dynamic.domain.com
在动态提供程序处:
A ns.dynamic.domain.com => yy.yy.yy.yy (dynamic IP)
在 TLS 机器人服务器上,在 Bind 中:
$ORIGIN robert.domain.com.
$TTL 604800 ; 1 week
robert.domain.com. IN SOA robert.domain.com. domains.domain.com. (
21 ; serial
604800 ; refresh (1 week)
86400 ; retry (1 day)
2419200 ; expire (4 weeks)
604800 ; minimum (1 week)
)
NS ns.dynamic.domain.com. ; Dynamic A record to self
tls TXT "A nice Test."
使用该设置:
dig TXT _acme-challenge.domain.com
生成:
tls.robert.domain.com. 14199 IN TXT "A nice Test."
...来自任何地方。
更新:之前的小问题已修复,上述答案也已编辑。不再有任何警告。我欢迎对任何潜在问题提出建设性反馈。
答案3
要为动态 IP 上的子域名设置 DNS 服务器,请使用动态 DNS 服务。注册提供商,并在您的服务器上安装其客户端以动态更新 IP。配置您的 DNS 记录以将子域名指向动态 DNS 主机名。这可确保您的子域名保持连接,即使 IP 地址发生变化