Azmawee 127.0.0.1

"Mauiwagen. Das Server." – pub 4096R/712DAA69

Dynamic DNS dengan nsupdate (bind)

Mari kita mulakan….

1. Create key dalam server client, USER = user@email.com

# dnssec-keygen -a HMAC-MD5 -b 512 -n USER user.email.com.
Kuser.email.com.+157+16287
# more Kuser.email.com.+157+16287.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: HJd+RVWNsPB4obNtOlSF6C/QWK5+1EWMI6h/YHrYVQZ10KRmfISGXLioA+3kCLjoje0HmkjtkqxVNeSEKZKjhw==
Bits: AAA=

2. Save kat mana2 Key dia, Key ni kena set dalam DNS server yang handdle domain anda, atau bagi kat DNS admin server tu.

3. Masuk DNS server, cd /etc/namedb, touch keys.conf, isi keys.conf lebih kurang macam ni:

key user.email.com. {
algorithm HMAC-MD5;
secret “HJd+RVWNsPB4obNtOlSF6C/QWK5+1EWMI6h/YHrYVQZ10KRmfISGXLioA+3kCLjoje0HmkjtkqxVNeSEKZKjhw==”;
};

* File keys.conf ni perlu ditukar owner kepada bind:wheel, jadi,

# chown bind:wheel keys.conf

* boleh chmod 600 file keys.conf ni untuk tambah security.

4. Edit atau create zone file untuk domain anda, dan letak dalam /etc/namedb/dynamic/

* Contoh zone file:

$TTL 1H
@    1H    IN   SOA   ns1.domain.com. admin.domain.com. (
2011122801 ; Serial
30M        ; Refresh
15M        ; Retry
1W         ; Expire
30M )      ; MIN TTL
;
IN   NS      ns1.domain.com.
IN   NS      ns2.domain.com.
@           IN   MX  20  mx.domain.com.
;
@           IN   A       192.168.1.1
ns1         IN   A       192.168.1.1
ns2         IN   A       192.168.1.2
www         IN   A       192.168.1.1
mx          IN   A       192.168.1.1
pop3        IN   A       192.168.1.1
smtp        IN   A       192.168.1.1

4. Edit /etc/namedb/named.conf, tambah ini:

include “keys.conf”;

zone “domain.com” {
type master;
file “/etc/namedb/dynamic/domain.com”;
allow-update { key user.domain.com.; };
};

* Contoh kat bawah ni untuk lebih control/security kalau ada multiple user untuk update subdomain masing-masing.

zone “domain.com” {
type master;
file “/etc/namedb/dynamic/domain.com”;
update-policy {
grant user2.email.com. name subdomain2.domain.com. A TXT;
grant user3.email.com. name subdomain3.domain.com. A TXT;
grant user.email.com. subdomain example.com. ANY;
};
};

**  key user2.email.com. hanya boleh update A record subdomain1.domain.com sahaja, key user3.email.com. untuk subdomain3.domain.com sahaja, dan key user.email.com boleh update semua subdomain A record dalam domain tu, jadi boleh control la sikit tak mau kasi user lain kacau subdomain lain.

5. Restart named dalam dns server:

# sh /etc/rc.d/named restart

6. Dalam server client, create satu file untuk update records domain anda,

* Contoh file nama update.domain:

server ns1.domain.com
zone domain.com
update delete domain.com. A
update delete *.domain.com. A
update add domain.com. 300 A 10.10.10.6
update add *.domain.com. 300 A 10.10.10.6
show
send

7. Run nsupdate untuk update A record domain anda dengan command ni:

# nsupdate -k /path/kepada/Kuser.email.com.+157+16287.private -v update.domain

8. Sekiranya berjaya akan keluar output semacam ini:

Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;win-2u.com.                    IN      SOA

;; UPDATE SECTION:
*.domain.com.           0       ANY     A
*.domain.com.           300 IN   A       10.10.10.6

9. nslookup domain anda untuk tengok latest A record, kalau tak update lagi kene tunggu ttl value domain anda expired (untuk check ttl value, run dig domain.com).

10. Bawah ni ada autoupdate script untuk host/client yang menggunakan pppoe connection (streamyx/unifi), chmod 775 dan linkkan dengan ip-up script anda, support freebsd userland ppp dan mpd5:

https://azmawee.com/script/dyn_nsupdate/dyn_nsupdate.sh.txt
* Jutaan terimakasih kepada Najwa Latiff, kerana mencipta lagu yang sedap didengar dan dilayan semasa percubaan semua kerja-kerja di atas, saya juga sudah membeli album original anda!!

** Jutaan terimakasih juga kepada benzy (freenode #mybsd) kerana menjadi kambing hitam dalam percubaan script ini, dan melaporkan beberapa bugs.

# Sebarang komen, pingat, cacian, roti gardenia, pizza (kalau boleh domino pizza thin crust ye), nasi beriyani, maggi (perisa ayam), kopi o, kereta F1, sport rim, iphone 4S (ohh prestige.. prestige…), Skylanders (ni pada sapa yang tahu aje), susu enfagrow no 3 (utk anak saya), duit (kalau boleh RM1 juta dah la) dan lain2 tu boleh contact saya di:

– maui[at]mybsd.org.my ; azmawee[at]azmawee.com

, , , , , , , , , , , ,

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz
MaUi^ - pub 4096R/712DAA69
Fingerprint 8BF7 D0AF CA45 5313 A3BF ACFB B90B 66C7 712D AA69

0110010101100001011100110111010001100101011100100010000001100101011001110110011100100000011011100110111100101110001000000011000000110110