ภาพรวม
ส่วน API ของ DNS นั้น ช่วยจัดการโซนและบันทึกของ DNS ได้อย่างเต็มที่ ทุกโซนจะถูกโฮสต์บนเซิร์ฟเวอร์ชื่อที่ได้รับอนุญาตของ 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
เส้นทางที่ซ่อนไว้สำหรับจัดการบันทึกเฉพาะโซน
การตรวจสอบสิทธิ์
การร้องขอ API DNS ทั้งหมด ต้องการการตรวจสอบสิทธิ์ด้วยโทเค็นผู้ถือ สร้างโทเค็น 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 (เข้าถึงโดยตรง)
ปฏิบัติการ CRUD เต็มรูปแบบบนบันทึก DNS ส่วนบุคคล โดยใช้บันทึก UUID
ปฏิบัติการที่ใช้ได้
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 นาที) สำหรับการทดสอบที่รวดเร็ว
รูปแบบที่ใช้กันทั่วไป
โดเมนราก (@): ใช้บันทึก A/ AAAA ไม่ใช่ CNAME
โดเมนย่อย www: สามารถใช้ CNAME ไปยังรหัสต้นหรือแยกแยกแผ่น A ได้
อีเมล (MX): เพิ่มความสำคัญเสมอ ตัวเลขต่ำ = ความสำคัญสูง
ชื่อแฟ้ม: ไม่สามารถใช้ร่วมกับประเภทบันทึกอื่น ๆ ที่มีชื่อเดียวกันได้
ความปลอดภัย
การบันทึกของ CAA: ระบุ CA ที่จะออกใบรับรอง
SPF/ DKIM/ DMARC: ปรับแต่งการตรวจสอบสิทธิ์อีเมลเพื่อป้องกันการหลอกลวง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