การใช้คำสั่ง nsupdate เพื่อปรับปรุง record ใน DNS Server « SpaLinux.com
การใช้คำสั่ง nsupdate เพื่อปรับปรุง record ใน DNS Server
Saturday 28 June 2008 @ 5:56 pm

จากบทความ คอนฟิก DDNS บนลินุกซ์ เมื่อคอนฟิก DNS Server ให้สามารถรองรับ Dynamic Update จาก DHCP Server ได้นั้น

ถ้าเราต้องการจะแก้ไขข้อมูล (record) ใน DNS Server หลังจากนี้ เช่นเพิ่ม (A record) name-to-ip address mapping เราไม่สามารถจะแก้ไขไฟล์ข้อมูลของแต่ละ zone ได้โดยตรง เพราะคุณสมบัติ DDNS จะไปปรับปรุงรูปแบบของไฟล์คอนฟิก zone ซึ่งถ้าเราไปแก้ไขเองโดยตรงเช่นใช้โปรแกรม vi รูปแบบของไฟล์นี้อาจเสียหายได้

วิธีที่จะทำได้อย่างถูกต้องนั้น ต้องใช้คำสั่ง nsupdate ซึ่งจะใช้ส่งคำสั่งในการเพิ่ม หรือลบข้อมูล (record) จาก DNS Server ได้

ในบทความนี้ จะเพิ่มคอนฟิกให้ nsupdate สามารถเปลี่ยนแปลงข้อมูลของ zone ได้สองโดเมนคือ “your-domain.com” และ “1.168.192.in-addr.arpa”

DNS Server เดิมก่อนการเปลี่ยนแปลง
ตัวอย่างคอนฟิก zone ก่อนที่จะแก้ไขของโดเมน “your-domain.com” และ “1.168.192.in-addr.arpa” ที่รองรับ DDNS อยู่แล้ว

key DDNS_KEY {
 algorithm hmac-md5;
 secret “Ed187bxUigx8kNlFwUHnbKlwrk2GfAkpBfYyNEJcPhbrhexf07f2sBoCyQjz”;
};
zone “your-domain.com” IN {
 type master;
 file “zones/your-domain.com.zone”;
 allow-update { key DDNS_KEY; };
};
zone “1.168.192.in-addr.arpa” IN {
 type master;
 file “zones/192.168.1.zone”;
 allow-update { key DDNS_KEY; };
};

สร้าง TSIG key
เริ่มต้นต้องสร้าง TSIG key เพื่อใช้ encrypt ข้อมูลระหว่างคำสั่ง nsupdate และ DNS server โดยใช้คำสั่ง dnssec-keygen ในการสร้าง

ตัวอย่างการสร้าง TSIG key

[root@server ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST NSUPDATE_KEY
Knsupdate_key.+157+59601

ผลลัพธ์ที่ได้จากการรันคำสั่ง จะมีไฟล์เกิดขึ้นสองไฟล์โดยมีชื่อไฟล์อยู่ในรูปแบบ K{name}.+157+{random} และลงท้ายเป็น key และ private

ตัวอย่างไฟล์ key ที่สร้างได้จากการรันคำสั่ง dnssec-keygen

[root@server ~]# ls -l
total 8
-rw------- 1 root root 56 2008-06-28 17:01 Knsupdate_key.+157+59601.key
-rw------- 1 root root 92 2008-06-28 17:01 Knsupdate_key.+157+59601.private

คำเตือน: ไฟล์ที่สร้างได้ทั้งสองไฟล์ต้องเก็บไว้อย่างปลอดภัย ไม่ให้ผู้ใช้งานอื่นที่ไม่มีสิทธิสามารถมองเห็นข้อมูลข้างในได้ แนะนำให้ตั้ง permission ไว้เป็น 600 และ owner และ group ของไฟล์เป็น root

แก้ไขไฟล์คอนฟิก named.conf

ขั้นต่อไปต้องนำ Key ที่สร้างได้ ไปใส่ไว้ในไฟล์ named.conf บน DNS Server โดยดูได้จากไฟล์ที่ลงท้ายด้วย .private ในบรรทัดที่มีคำว่า Key นำหน้า

[root@server ~]# cat Knsupdate_key.+157+59601.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: CABSl3MHsfjDQN7BnpIjCA==
Bits: AAA=

จากตัวอย่าง Key ที่สร้างได้คือ CABSl3MHsfjDQN7BnpIjCA== ต้องนำ Key นี้ไปเพิ่มในไฟล์ named.conf บน DNS Server เพื่อรองรับการรันคำสั่ง nsupdate ได้

ตัวอย่างการเพิ่มคอนฟิกไฟล์ named.conf

key DDNS_KEY {
 algorithm hmac-md5;
 secret “Ed187bxUigx8kNlFwUHnbKlwrk2GfAkpBfYyNEJcPhbrhexf07f2sBoCyQjz”;
};

key NSUPDATE_KEY {
 algorithm HMAC-MD5;
 secret "CABSl3MHsfjDQN7BnpIjCA==";
};
zone “your-domain.com” IN {
 type master;
 file “zones/your-domain.com.zone”;
 allow-update { key DDNS_KEY; key NSUPDATE_KEY; };
};
zone “1.168.192.in-addr.arpa” IN {
 type master;
 file “zones/192.168.1.zone”;
 allow-update { key DDNS_KEY; key NSUPDATE_KEY; };
};

ใช้คำสั่ง service เพื่อ restart DNS Server หลังจากแก้ไขไฟล์ named.conf

[root@server ~]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]

วิธีการรันคำสั่ง nsupdate
การรันคำสั่ง nsupdate ต้องระบบ –k เพื่อระบุไฟล์ key ที่จะใช้ โดยต้องเป็น key เดียวกับที่ระบุใน DNS Server โดยเลือกเป็นชื่อไฟล์ที่ลงท้ายด้วย private เมื่อใช้คำสั่ง nsupdate จะขึ้นเครื่องหมายมากกว่า “>” เพื่อรอรับคำสั่งที่ต้องการจะเปลี่ยนแปลง

[root@server ~]# nsupdate -k Knsupdate_key.+157+59601.private
>

คำสั่งพื้นฐานของ nsupdate

  • quit – ออกจากโปรแกรม
  • update add – เพื่อข้อมูล (record) เข้าไปใน DNS Server
  • update delete – ลบข้อมูล (record) ออกจาก DNS Server
  • send – ส่งคำสั่งที่พิมพ์ไปแล้วไปยัง DNS Server

การใช้คำสั่ง nsupdate เพื่อแก้ไขข้อมูลใน DNS Server
หมายเหตุ: อย่าลืมระบุเครื่องหมายจุด “.” ต่อท้ายชื่อ

ตัวอย่างการเพิ่ม (A record) เพื่อ map ชื่อ newhost.your-domain.com ไปเป็น ip 192.168.1.52

> update add newhost.your-domain.com. 86400 A 192.168.1.52
> send

ตัวอย่างการลบ (A record) ที่ชื่อ unused.your-domain.com

> update delete unused.your-domain.com. A
> send

ตัวอย่างการเพิ่ม (PTR record) ที่มี ip 192.168.1.52 เป็นชื่อ newhost.your-domain.com

> update add 52.1.168.192.in-addr.arpa. 86400 PTR newhost.your-domain.com.
> send

ตัวอย่างการลบ (PTR record) ที่มี ip 192.168.1.50

> update delete 50.1.168.192.in-addr.arpa. PTR
> send

หลังจากเปลี่ยนแปลงแล้ว สามารถใช้คำสั่ง host เพื่อตรวจสอบข้อมูลที่เปลี่ยนแปลงว่าถูกต้องหรือไม่
ข้อมูลอ้างอิง

Tags:

Comments (0) - Posted in Name Service by editor  



Leave a comment