SuperAPI AI 工具集

openprovider-dns

部署与运维

查看项目

更新于 10-15 21:47

技能介绍

用途:通过 Openprovider 的 REST API(基础地址 https://api.openprovider.eu/v1beta)读取与修改其托管的 DNS 区域。名称服务器为 ns1.openprovider.nl、ns2.openprovider.be、ns3.openprovider.eu。

基本规则:不要打印登录信息或 bearer token,内联获取令牌而不要写入文件;每次变更前备份区域、变更后读回验证;每次 API 调用只改一条记录。认证依赖 spatie-ops 辅助工具,先读取它,它会读取 1Password 私有映射、用 API 用户登录并把令牌保留在内存中,令牌约有效 48 小时,但不会在命令间持久化,可通过 OPS="$HOME/.dotfiles/bin/spatie-ops" 调用。

读取与备份:用 GET /dns/zones/{zone}?with_records=true 读取区域并备份到 JSON 文件,再用 jq 过滤出非 SOA、非 NS 记录。注意 GET 返回完整名称(如 www.example.com),而 PUT 使用相对区域的名称(apex 用空字符串,子域用 "www")。

变更:所有变更都是 PUT /dns/zones/{zone},在 records 下使用 add、remove 或 update。remove 必须与现有记录完全匹配,包括 ttl 和 "prio":0;update 的 original_record 必须包含 "prio":0(A、CNAME、TXT 亦然),否则无法匹配。

特殊行为:非 MX 记录的 original_record 和 remove 需要 "prio":0;多记录 remove 调用可能返回成功却什么都没删;添加 A 记录可能保留旧 A,导致同一主机有两条 A。移动主机 IP 时应先删除旧记录(一次调用)、确认已删除、再添加新记录(一次调用)、读回。TTL 可能被钳制:低于 600 会被提升到 600,原有 86400 有时更新后仍为 86400,需要快速切换应提前一天降低 TTL 并在读回中确认。

验证:用 dig 分别向三台名称服务器查询 A 记录与 SOA 序列号进行比对。变更后数小时内 anycast 名称服务器可能返回过期或混合答案,即使 API 读回正确、SOA 序列号一致(曾见一台名称服务器提供两年前的序列号)。此时可保持旧服务器反向代理到新源站,或重建受影响记录(删除、确认消失、再添加)以促使重新发布;若数小时后名称服务器仍不一致,可向 Openprovider 提交支持工单,列出区域、名称服务器及各自返回内容。在所有名称服务器返回新记录前,不要下线旧服务器。