BIND 9 on FreeBSD 4.x

BIND 9 ?

ที่จริงก็ไม่ได้อยากอัปเกรดเท่าไหร่ แต่ทางศูนย์คอมพิวเตอร์เขาขอมา เลยจัดให้ :P .. จะว่าไปแล้ว BIND 9 ก็น่าสนใจตรงที่มันใช้ rndc + chroot ได้ และมีความปลอดภัยสูงขึ้น .. ถ้าเป็น FreeBSD >= 5.3 เข้าใจว่ามี BIND 9 มาให้เลย ส่วน FreeBSD 4.x และ 5.x < 5.3 นี่ต้องติดตั้งจาก ports เอา

เริ่มติดตั้ง

# cd /usr/ports/dns/bind9
# make
# make install

เซ็ตอัป rndc

rndc ใช้ irq มาทำเป็น entropy pool ยิ่งอุปกรณ์มีข้อมูลเข้า/ออก random มากๆ ยิ่งดี เขาแนะนำให้ใช้ irq ของ keyboard, mouse, disk, หรือ network interface cards .. ผมไม่ค่อยแนะนำให้ใช้ keyboard/mouse เท่าไหร่ เพราะพวกเซิร์ฟเวอร์หลายๆ ตัวไม่ได้ต่อไว้ด้วยซ้ำ ข้อมูลอาจจะไม่ random อย่างที่ต้องการ .. เลือก disk หรือ network interface cards น่าจะดีกว่า

# grep -i irq /var/run/dmesg.boot

เพิ่ม irq เป็น entropy pool ของ rndc

# rndcontrol -s 12
# rndcontrol -s 14

ถ้าจะให้ใช้ได้ตั้งแต่ boot ก็แก้ /etc/rc.conf เพิ่ม

rand_irqs="12 14"

จากนั้นก็สร้าง config ของ rndc

cd /usr/local/etc
rndc-confgen > rndc.conf

แล้วก็สร้าง key

rndc-confgen -a

จะได้ไฟล์ rndc.key แล้วก็แก้ rndc.conf อีกนิดหน่อย เพื่อเอา key ใน rndc.key มาใส่

vi /usr/local/etc/rndc.conf

options {
     default-key "rndc-key";
    default-server 127.0.0.1;
    default-port 953;
};

server 127.0.0.1 {
    key "rndc-key";
}

ก๊อป key “rndc-key” {…} จาก /usr/local/etc/rndc.key มาใส่ใน /usr/local/etc/rndc.conf เป็นอันเสร็จเรื่องของ rndc

เซ็ตอัพ BIND 9

ถ้าใช้ BIND 8 มาก่อน เอา config และ zone files ของ BIND 8 มาแก้นิดๆ หน่อยๆ แล้วใช้กับ BIND 9 เลยก็ได้ ดังนั้น ก๊อปปี้ named.conf ของ BIND 8 มาไว้ที่ /usr/local/etc/named.conf แล้วก็แก้อีกนิด เพื่อเอา rndc มาใช้

include "/usr/local/etc/rndc.key";

controls {
    inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndc-key" };
};

และใน options { … } เพิ่ม pid-file ” … ” กับ dump-file ” … ” เข้าไปด้วย

options {
    ...
    directory "/path/to/namedb"
    pid-file "/path/to/namedb/named.pid"
    dump-file "/var/tmp/named_dump.db"
    ...
};

เสร็จแล้ว อย่าลืมเช็ค zone {… } กับ zone file ให้ตรงกัน

แก้ไฟล์เสร็จก็ เปลี่ยน owner/groups ของไฟล์เป็น uid ที่จะรัน named .. ปกติจะใช้ user bind รัน named ก็

chown -R bind:bind /path/to/namedb
chmod 750 /path/to/namedb

เช็ค named.conf

named-checkconf /usr/local/etc/named.conf

ทดสอบ

/usr/local/sbin/named -c /usr/local/etc/named.conf -u bind -g

ถ้า named รันได้โดยไม่มี error/warning ก็เป็นอันเรียบร้อย … สุดท้ายก็แก้ /etc/rc.conf

vi /etc/rc.conf
named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-c /usr/local/etc/named.conf -u bind"

ทีนี้ตอน boot ก็จะรัน BIND 9 แทน BIND 8 .. เสร็จแล้ว :)