dns について
dnsスキルは、Hostingerでホストされているドメインのレコード管理に使うHostinger DNS APIを解説します。レコードの検証と更新、ゾーンのリセット、バックアップと復元に使うスナップショットを扱います。
主な機能
- 01DNSレコードの取得、作成、更新、削除
- 02変更適用前のレコード検証
- 03レコードタイプを保持するゾーンリセット
- 04DNSスナップショットの一覧と確認
- 05スナップショットからのゾーン復元
- 06TTLとメールDNSレコードのガイド
活用シーン
- 01ドメインの現在のDNSレコードの確認
- 02検証済みDNSゾーン変更の適用
- 03一括編集前のDNS設定のバックアップ
- 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 レコードタイプに対応しています。
| タイプ | 用途 | 例 |
|---|---|---|
| A | IPv4 アドレス | 192.168.1.1 |
| AAAA | IPv6 アドレス | 2001:db8::1 |
| CNAME | 正規名エイリアス | www.example.com. |
| ALIAS | ANAME/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}/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を使用してください - ルートドメインのレコード名には
@を使用してください
安全性
- 一括変更を行う前に、スナップショットを作成する(または既存のレコードを記録する)ようにしてください
- リセット時にメールレコード(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)
参考資料
コメント
Markdown 対応