mcpField
D
dns

dns

github.com/hostinger云与 DevOps27141 次安装1 天前更新
代码仓库

关于 dns

dns Skill 介绍用于管理 Hostinger 托管域名记录的 Hostinger DNS API,涵盖记录验证与更新、区域重置,以及用于备份和恢复的快照。

主要功能

  1. 01读取、创建、更新和删除 DNS 记录
  2. 02应用变更前验证记录
  3. 03重置区域并设置保留记录类型
  4. 04列出并查看 DNS 快照
  5. 05从快照恢复区域
  6. 06TTL 与邮件 DNS 记录指南

适用场景

  1. 01查看域名当前的 DNS 记录
  2. 02应用经过验证的 DNS 区域变更
  3. 03批量编辑前备份 DNS 配置
  4. 04错误变更后恢复 DNS 记录

MCP 相关

此 Skill 介绍 Hostinger DNS API 的端点与用法;输入未说明项目会提供 MCP 服务或集成 MCP。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hostinger/hostinger-agent-skills --skill dns

安装后在 Claude Code 中输入/dns确认已加载。

附带文件email-dns-setup.md

详细介绍

Hostinger DNS

DNS API 可对 Hostinger 上托管的域名进行 DNS 区域记录的全面管理。你可以创建、更新、删除、验证和重置 DNS 记录,还可以管理 DNS 快照以进行备份和恢复操作。

目录

核心概念

DNS 记录

支持标准 DNS 记录类型:

类型用途示例
AIPv4 地址192.168.1.1
AAAAIPv6 地址2001:db8::1
CNAME规范名称别名www.example.com.
ALIASANAME/ALIAS 记录example.com.
MX邮件交换mail.example.com.
TXT文本记录v=spf1 include:...
NS名称服务器ns1.example.com.
SOA授权起始区域授权信息
SRV服务定位_sip._tcp.example.com.
CAA证书颁发机构授权0 issue "letsencrypt.org"
区域更新

更新 DNS 记录时,overwrite 标志控制行为:

  • overwrite: true(默认)— 用新记录替换名称和类型匹配的现有记录
  • overwrite: false — 更新现有记录的 TTL,追加新记录;如果未找到匹配项,则创建它们
快照

DNS 快照捕获域名 DNS 区域在某一时间点的状态。如果出现问题,可使用它们恢复先前的配置。

TTL(生存时间)

TTL 控制 DNS 解析器缓存记录的时间。默认值为 14400 秒(4 小时)。较低的值传播更改更快,但会增加 DNS 查询负载。

常见模式

获取域名的 DNS 记录
curl -X GET "https://developers.hostinger.com/api/dns/v1/zones/example.com" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

Python SDK:

from hostinger_api import Hostinger

client = Hostinger(api_token="YOUR_API_TOKEN")
records = client.dns.zone.get_dns_records("example.com")
for record in records:
    print(f"{record.type} {record.name} -> {record.content}")

TypeScript SDK:

import { Hostinger } from "hostinger-api-sdk";

const client = new Hostinger({ apiToken: "YOUR_API_TOKEN" });

const records = await client.dns.zone.getRecords("example.com");
for (const record of records) {
  console.log(`${record.type} ${record.name} -> ${record.content}`);
}

PHP SDK:

use Hostinger\Api\HostingerApi;

$client = new HostingerApi('YOUR_API_TOKEN');

$records = $client->dns->zone->getRecords('example.com');
foreach ($records as $record) {
    echo "{$record->type} {$record->name} -> {$record->content}\n";
}
创建/更新 DNS 记录
# Add an A record for www subdomain
curl -X PUT "https://developers.hostinger.com/api/dns/v1/zones/example.com" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "overwrite": true,
    "zone": [
      {
        "name": "www",
        "type": "A",
        "ttl": 14400,
        "records": [
          { "content": "192.168.1.1" }
        ]
      }
    ]
  }'

# Add MX records for email
curl -X PUT "https://developers.hostinger.com/api/dns/v1/zones/example.com" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "overwrite": true,
    "zone": [
      {
        "name": "@",
        "type": "MX",
        "ttl": 14400,
        "records": [
          { "content": "10 mail1.example.com." },
          { "content": "20 mail2.example.com." }
        ]
      }
    ]
  }'

# Add a TXT record for SPF
curl -X PUT "https://developers.hostinger.com/api/dns/v1/zones/example.com" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "overwrite": false,
    "zone": [
      {
        "name": "@",
        "type": "TXT",
        "ttl": 14400,
        "records": [
          { "content": "v=spf1 include:_spf.google.com ~all" }
        ]
      }
    ]
  }'
更新前验证
# Validate records first (returns 200 if valid, 422 if invalid)
curl -X POST "https://developers.hostinger.com/api/dns/v1/zones/example.com/validate" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "overwrite": true,
    "zone": [
      {
        "name": "www",
        "type": "CNAME",
        "ttl": 14400,
        "records": [
          { "content": "example.com." }
        ]
      }
    ]
  }'
删除特定 DNS 记录
curl -X DELETE "https://developers.hostinger.com/api/dns/v1/zones/example.com" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      { "name": "www", "type": "A" },
      { "name": "old", "type": "CNAME" }
    ]
  }'
将 DNS 重置为默认值
curl -X POST "https://developers.hostinger.com/api/dns/v1/zones/example.com/reset" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sync": true,
    "reset_email_records": false,
    "whitelisted_record_types": ["MX", "TXT"]
  }'
使用 DNS 快照
# List available snapshots
curl -X GET "https://developers.hostinger.com/api/dns/v1/snapshots/example.com" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Get a specific snapshot with contents
curl -X GET "https://developers.hostinger.com/api/dns/v1/snapshots/example.com/42" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Restore from a snapshot
curl -X POST "https://developers.hostinger.com/api/dns/v1/snapshots/example.com/42/restore" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

API 参考

区域记录
方法端点描述
GET/api/dns/v1/zones/{domain}获取 DNS 记录
PUT/api/dns/v1/zones/{domain}更新 DNS 记录
DELETE/api/dns/v1/zones/{domain}删除 DNS 记录
POST/api/dns/v1/zones/{domain}/reset将 DNS 重置为默认值
POST/api/dns/v1/zones/{domain}/validate验证 DNS 记录
快照
方法端点描述
GET/api/dns/v1/snapshots/{domain}列出 DNS 快照
GET/api/dns/v1/snapshots/{domain}/{snapshotId}获取包含内容的快照
POST/api/dns/v1/snapshots/{domain}/{snapshotId}/restore从快照恢复

最佳实践

记录管理
  • 在应用更改之前,始终使用 /validate 端点验证记录
  • 在不删除现有记录的情况下添加记录时,使用 overwrite: false
  • 当你想完全替换给定名称/类型的记录时,使用 overwrite: true
  • 使用 @ 作为根域名记录的名称
安全
  • 在进行批量更改之前,创建快照(或记录现有记录)
  • 在重置期间使用 whitelisted_record_types 参数以保留电子邮件记录(MX、TXT)
  • 如果你使用第三方电子邮件服务,在重置时设置 reset_email_records: false
TTL
  • 在计划更改时使用较低的 TTL(300-600 秒)以加快传播
  • 对稳定的记录增加 TTL(14400 秒以上)以减少 DNS 查询负载
  • 请记住:旧的缓存记录会一直保留,直到先前的 TTL 过期
电子邮件记录
  • 小心处理 MX 记录——错误的更改会中断电子邮件投递
  • SPF、DKIM 和 DMARC 记录是 TXT 记录——不要意外覆盖它们

故障排查

记录未生效
  • DNS 传播最多可能需要 48 小时(通常远小于此)
  • 检查旧记录的 TTL —— 解析器会在该时长内缓存
  • 使用 dig 或 nslookup 验证:dig @8.8.8.8 example.com A
422 验证错误
  • 记录内容格式无效(例如,CNAME 必须以 . 结尾)
  • 记录冲突(例如,根域名处的 CNAME 与其他记录并存)
  • 操作对应的记录类型无效
DNS 更改后邮件停止工作
  • 检查 MX 记录:dig example.com MX
  • 验证 SPF TXT 记录是否完好
  • 如有需要,使用快照恢复进行还原
删除未按预期工作
  • 筛选器按 name 和 type 匹配 —— 两者必须同时匹配
  • 如果多条记录共享相同的名称/类型,而你只想删除其中一部分,请改用更新端点

另请参阅

以下深入指南可在本技能目录中找到:

  • email-dns-setup.md —— 完整的邮件 DNS 设置(适用于 Google Workspace、Microsoft 365 和 Hostinger Email 的 MX、SPF、DKIM、DMARC)

参考

评论

支持 Markdown