概要
すべてのゾーンはVPS.orgの権威あるネームサーバにホストされ,自動的にBIND9ゾーンファイルを生成し,配置する。
ネームサーバインフラストラクチャ
ns1.vps.org (38.248.6.195) - DNSSEC インライン署名を有する主マスター
ns2.vps.org (38.248.6.196) - 二次奴隷
ns3.vps.org (38.248.6.197) - 二次奴隷
主要な特徴
自動 BIND9 ゾーンファイル生成と展開
TSIG 認証を介したゾーン転送 (マスタースレーブ複製)
すべての主要なDNSレコードタイプ (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA) をサポートします
ドメイン名フィルタリングとUUIDベースのゾーン識別
ゾーン特有のレコード管理のためのネストされたルート
認証
すべての DNS API 要求には Bearer トークン認証が必要です。アカウントのダッシュボードから API トークンを生成してください。 /account/developers/ 次の権限を持って:
dns:list - DNS ゾーンとレコードを表示
dns:create - 新しいゾーンとレコードを作成
dns:update - 既存のゾーンとレコードを修正
dns:delete - ゾーンとレコードを削除
dns:* - DNS管理権限
例
Authorization: Bearer vps_abc123def456...
重要: API トークンは作成中に一度だけ表示されます。安全に保管してください。トークンを失った場合は、新しいものを作成してください。
すべてのDNSゾーンを一覧表示する
認証されたユーザが所有するすべての DNS ゾーンのページリストを取得します。ドメイン名でフィルタリングをサポートします。
クエリパラメータ
パラメータ
タイプ
必須
説明
domain
string
いや
Filter zones by exact domain name (e.g., example.com)
リクエスト例
curl -X GET "https://admin.vps.org/api/v1/dns-zones/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
コピー
import requests
url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
response = requests.get(url, headers=headers)
print(response.json())
コピー
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
headers: {'Authorization': 'Bearer YOUR_API_TOKEN'}
});
const zones = await response.json();
console.log(zones);
コピー
回答例
[
{
"uuid": "abc123-def456-ghi789",
"domain": "example.com",
"created_at": "2024-01-15T10:30:00Z",
"record_count": 12
},
{
"uuid": "xyz789-uvw456-rst123",
"domain": "myapp.io",
"created_at": "2024-06-20T14:15:00Z",
"record_count": 8
}
]
応答フィールド
フィールド
タイプ
説明
uuid
string
Unique zone identifier (used in API requests)
domain
string
Domain name for this DNS zone
created_at
datetime
Zone creation timestamp (ISO 8601 format)
record_count
integer
Total number of DNS records in this zone
応答ステータスコード
200
Successfully retrieved DNS zones list
401
Unauthorized - Invalid or missing API token
403
Forbidden - Token lacks dns:list permission
DNS ゾーンの詳細を取得
特定のDNSゾーンに関する詳細な情報を取得します。すべてのレコードを含む。
パスパラメータ
パラメータ
タイプ
必須
説明
uuid
string
はい
Unique zone identifier
回答例
{
"uuid": "abc123-def456-ghi789",
"domain": "example.com",
"created_at": "2024-01-15T10:30:00Z",
"record_count": 5,
"records": [
{
"uuid": "rec-001",
"record_type": "A",
"name": "@",
"value": "192.0.2.1",
"ttl": 3600,
"priority": null,
"created_at": "2024-01-15T10:30:00Z"
},
{
"uuid": "rec-002",
"record_type": "MX",
"name": "@",
"value": "mail.example.com",
"ttl": 3600,
"priority": 10,
"created_at": "2024-01-15T10:32:00Z"
}
]
}
応答ステータスコード
200
Successfully retrieved zone details
404
Zone not found or not owned by user
DNS ゾーンを作成
ドメインのための新しい DNS ゾーンを作成します。ゾーンは直ちに VPS.org のネームサーバに展開されます。
リクエストボディパラメータ
パラメータ
タイプ
必須
説明
domain
string
はい
Domain name (e.g., example.com)
リクエスト例
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "newdomain.com"}'
コピー
import requests
url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {"domain": "newdomain.com"}
response = requests.post(url, headers=headers, json=data)
print(response.json())
コピー
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({domain: 'newdomain.com'})
});
const zone = await response.json();
console.log(zone);
コピー
回答例
{
"uuid": "new-zone-uuid",
"domain": "newdomain.com",
"created_at": "2026-01-18T16:45:00Z",
"record_count": 0,
"records": []
}
応答ステータスコード
201
DNS zone created successfully
400
Bad Request - Invalid domain name or zone already exists
403
Forbidden - Token lacks dns:create permission
DNS ゾーンを削除
DNS ゾーンと関連付けられたすべてのレコードを永久に削除します。この操作は元に戻せません。
パスパラメータ
パラメータ
タイプ
必須
説明
uuid
string
はい
Unique zone identifier
応答ステータスコード
204
Zone deleted successfully (no response body)
403
Forbidden - Token lacks dns:delete permission
404
Zone not found
ゾーンの DNS レコードをリスト
特定のゾーン (ネストされたルート) のすべての DNS レコードを検索します。
パスパラメータ
パラメータ
タイプ
必須
説明
uuid
string
はい
Zone UUID
リクエスト例
curl -X GET "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
回答例
[
{
"uuid": "rec-001",
"record_type": "A",
"name": "@",
"value": "192.0.2.1",
"ttl": 3600,
"priority": null,
"created_at": "2024-01-15T10:30:00Z"
},
{
"uuid": "rec-002",
"record_type": "MX",
"name": "@",
"value": "mail.example.com",
"ttl": 3600,
"priority": 10,
"created_at": "2024-01-15T10:32:00Z"
}
]
ゾーンで DNS レコードを作成
特定のゾーン (ネストされたルート) に新しい DNS レコードを追加します。
リクエストボディパラメータ
パラメータ
タイプ
必須
説明
record_type
string
はい
Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name
string
はい
Record name (@ for root, subdomain, or FQDN)
value
string
はい
Record value (IP address, hostname, text)
ttl
integer
No
Time to live in seconds (default: 3600)
priority
integer
For MX/SRV
Priority (required for MX and SRV records)
リクエスト例
curl -X POST "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"record_type": "A",
"name": "www",
"value": "192.0.2.1",
"ttl": 3600
}'
コピー
import requests
url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"record_type": "A",
"name": "www",
"value": "192.0.2.1",
"ttl": 3600
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
コピー
応答ステータスコード
201
DNS record created successfully
400
Bad Request - Invalid parameters or validation error (e.g., MX record missing priority)
DNS レコードの管理 (直接アクセス)
個々のDNSレコードに対してレコードUUIDを使用してフル CRUD 操作を行う。
利用可能な操作
GET /api/v1/dns-records/{uuid}/ - Retrieve record details
PUT /api/v1/dns-records/{uuid}/ - Full update (all fields required)
PATCH /api/v1/dns-records/{uuid}/ - Partial update (only changed fields)
DELETE /api/v1/dns-records/{uuid}/ - Delete record
クエリパラメータ (GET /api/v1/dns-records/ の場合)
Parameter
タイプ
説明
zone
string
Filter records by zone UUID
record_type
string
Filter by record type (A, AAAA, MX, etc.)
例: レコードの TTL を更新
curl -X PATCH "https://admin.vps.org/api/v1/dns-records/{rec-uuid}/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ttl": 1800}'
Supported DNS Record Types
タイプ
Purpose
Example Value
Priority Required
A
Maps domain to IPv4 address
192.0.2.1
いや
AAAA
Maps domain to IPv6 address
2001:0db8::1
いや
CNAME
Creates alias to another domain
example.com
いや
MX
Mail server for domain
mail.example.com
はい
TXT
Text record (SPF, DKIM, verification)
v=spf1 include:_spf.google.com ~all
いや
NS
Nameserver delegation
ns1.example.com
いや
SRV
Service location record
10 5060 sip.example.com
はい
CAA
Certificate authority authorization
0 issue "letsencrypt.org"
いや
ベストプラクティス
TTL 設定
生産(安定): 3600-86400 秒 (1-24 時間)
マイグレーション前: 300-600 秒 (5-10 分) - 計画変更前に TTL を低下
開発: テスト時間を短縮するために300〜1800秒(5〜30分)
共通パターン
ルートドメイン (@): CNAME ではなく A/AAAA レコードを使う
www サブドメイン: CNAME をルートまたは別々の A レコードに指向できる
メール (MX): 常に優先度を含む。小さい数字は高い優先度
CNAME: 同じ名前の他のレコードタイプと共存できません
セキュリティ
CAAレコード 証明書を発行できる CA を指定
ファイルを開く メール認証を設定してスプーフィングを防止しますName
定期的な監査: DNS レコードを季節ごとにチェックし、使われていないエントリを削除します
エラーハンドリング
よくあるエラー
ステータスコード
エラー
溶液
400
無効なドメイン名
ドメインが DNS 名前付け規約に従っているか確認
400
MX レコードには優先度が必要です
含む priority MXとSRVレコードのフィールド
401
無効な API トークン
チェックトークンフォーマット (以下で始まる必要があります) vps_)
403
許可がない
必要なものを含む新しいトークンを生成 dns:* 権限
404
ゾーン/レコードが見つかりません
UUID を確認し、リソースがあなたのアカウントに属していることを確認します
エラー応答の例
{
"detail": "MX records require a priority value",
"error_code": "validation_error",
"field": "priority"
}
DNS 変更をテスト
レコードの拡散を確認
# Query A record
dig example.com A
# Query specific nameserver
dig @ns1.vps.org example.com
# Query MX records
dig example.com MX
# Check all records
dig example.com ANY
オンラインツールを使う
whatsmydns.net: Check global DNS propagation
dnschecker.org: Multi-location DNS lookup
mxtoolbox.com: Email-related DNS testing