mcpField
D
dns

dns

github.com/hostingerクラウド・DevOps27141 回インストール1 日前に更新
リポジトリ

dns について

dnsスキルは、Hostingerでホストされているドメインのレコード管理に使うHostinger DNS APIを解説します。レコードの検証と更新、ゾーンのリセット、バックアップと復元に使うスナップショットを扱います。

主な機能

  1. 01DNSレコードの取得、作成、更新、削除
  2. 02変更適用前のレコード検証
  3. 03レコードタイプを保持するゾーンリセット
  4. 04DNSスナップショットの一覧と確認
  5. 05スナップショットからのゾーン復元
  6. 06TTLとメールDNSレコードのガイド

活用シーン

  1. 01ドメインの現在のDNSレコードの確認
  2. 02検証済みDNSゾーン変更の適用
  3. 03一括編集前のDNS設定のバックアップ
  4. 04誤った変更後のDNSレコード復元

MCP 対応

このスキルは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(Time-To-Live)

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}/resetDNS をデフォルトにリセット
POST/api/dns/v1/zones/{domain}/validateDNS レコードを検証
スナップショット
メソッドエンドポイント説明
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 を使用してください
  • ルートドメインのレコード名には @ を使用してください
安全性
  • 一括変更を行う前に、スナップショットを作成する(または既存のレコードを記録する)ようにしてください
  • リセット時にメールレコード(MX、TXT)を保持するには、whitelisted_record_types パラメーターを使用してください
  • サードパーティのメールサービスを使用している場合は、リセット時に reset_email_records: false を設定してください
TTL
  • 変更を速く反映させる場合は、低い TTL(300~600 秒)を使用してください
  • DNS クエリの負荷を減らすには、安定したレコードの TTL を高く(14400 秒以上)設定してください
  • 以前にキャッシュされたレコードは、前の 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)

参考資料

コメント