PDA

View Full Version : Hướng dẫn cài đặt dịch vụ DNS trên Linux


Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player


thienannt
11th March 2011, 08:23 PM
Bài viết này sẽ hướng dẫn các bạn cài đặt dịch vụ DNS trên HĐH Linux ở mức cơ bản bằng dòng lệnh.

Một số khái niệm về DNS.
DNS: Domain Name Service, là dịch vụ dùng để phân giải tên miền (Domain) sang địa chỉ IP và ngược lại.
Domain: Là tên miền, ví dụ yahoo.com; microsoft.com.
Tại sao chúng ta cần DNS: DNS được sử dụng để giúp chúng ta thuận tiện, dễ nhớ hơn khi cần truy cập đến một trang web nào đó. Ví dụ: thay vì phải nhớ một dãy số dài dòng như 113.161.70.104 khi cần truy cập đến website SaigonCTT forums, chúng ta chỉ cần nhớ địa chỉ forum.saigonctt.com.vn.

Các bước cài đặt.

B1: Download gói BIND (Berkeley Internet Name Domain) source từ trang isc.org để cài

cd ~ && wget http://ftp.isc.org/isc/bind9/9.8.0/bind-9.8.0.tar.gz


B2: Bung gói tarball và thực hiện việc cài.


tar –zxf bind-9.8.0.tar.gz && mkdir /bind

cd bind-9.8.0

./configure --prefix=/bind && make && make install



B3: Thực hiện việc cấu hình file named.conf (file khai báo các thông số và zone cho BIND)


vi /bind/etc/named.conf


Paste đoạn này vào


options {
listen-on port 53 { any; };
directory /var/named;
};
zone “titeo.com” {
type master;
allow-query { any; };
file “titeo.com.zone”;
};

zone “70.161.113.in-addr.arpa” {
type master;
allow-query { any; };
file “70.161.113.zone”;
};

Trong ví dụ trên, mình đã khai báo những thông tin sau:
Dịch vụ BIND listen connection trên port 53 từ tất cả địa chỉ (any)
Thư mục chứa các zone files sẽ là /var/named/
Khai báo zone titeo.com, loại là master (primary) cho phép mọi địa chỉ query domain này, thông tin zone được lưu trong file titeo.com.zone (/var/named/titeo.com.zone)
Khai báo reverse lookup zone (IP sang tên) trong file /var/named/70.161.113.zone.


B4: Cấu hình file zone titeo.com.zone, khai báo các DNS record cho domain này


vi /var/named/titeo.com.zone


Paste đoạn này vào



; titeo.com
;
$TTL 7D
@ IN SOA ns1.titeo.com. root.titeo.com. (
2011031101 ; serial#
3600 ; refresh, seconds
3600 ; retry, seconds
3600 ; expire, seconds
3600 ) ; minimum, seconds

titeo.com. NS ns1.titeo.com.
titeo.com. MX 10 mail.titeo.com.

ns1 A 113.161.70.104
mail A 113.161.70.104
www CNAME ns1

Trong file cấu hình B4, mình đã khai báo những thông tin:
Domain titeo.com có name server là ns1.titeo.com ở địa chỉ IP 113.161.70.104.
Mail server của titeo.com là mail.titeo.com ở địa chỉ IP 113.161.70.104.
www .titeo.com. là alias của ns1.titeo.com.


B5: Cấu hình phần reverse lookup zone


vi /var/named/70.161.113.zone


Paste đoạn này vào



; Zone file for 113.161.70.x
$TTL 7D
@ IN SOA ns1.titeo.com. root.titeo.com. (
2011031101 ; serial number
3600 ; refresh, seconds
3600 ; retry, seconds
3600 ; expire, seconds
3600 ) ; minimum, seconds
NS ns1
104 PTR mail.titeo.com.

Với thông tin cấu hình ở bước 5, khi sử dụng lệnh


dig –x 113.161.70.104

Thông tin trả về sẽ là mail.titeo.com.


B6: change owner /var/named


chown --R named:named /var/named



B7: Viết script để start/stop dịch vụ BIND


vi /etc/init.d/named

Paste đoạn này vào


#!/bin/bash
#
# Init file for named server daemon
#
# chkconfig: 2345 68 32
# description: named server daemon

case "$1" in
start)
/bind/sbin/named -4 -c /bind/etc/named.conf
echo "Named Start"
;;
stop)
if [ -e /bind/var/run/named/named.pid ]; then
kill `cat /bind/var/run/named/named.pid`
echo "Named Stop"
else
echo "Named is not running"
fi
;;
restart)
if [ -e /bind/var/run/named/named.pid ]; then
kill `cat /bind/var/run/named/named.pid`
echo
fi
sleep 5
/bind/sbin/named -4 -c /bind/etc/named.conf
echo "Named ReStart"
;;
*)
echo "Use with start|stop|restart"
esac

Để save lại gõ :wq
Sau đó trên dòng lệnh gõ tiếp


chmod 755 /etc/init.d/named

/etc/init.d/named start



B8: Chỉnh DNS Client trên máy Linux


vi /etc/resolv.conf

Xóa sạch file này (dd) và thêm vào dòng:


nameserver 127.0.0.1



B9: Test
Các bạn có thể dùng những lệnh sau để test:
dig titeo.com
dig mx titeo.com
dig yahoo.com
Nếu xảy ra lỗi thì hãy xem thông tin lỗi trong file /var/log/messages


tail -20 /var/log/messages


Good luck !

dalatnov
12th March 2011, 08:43 AM
Cảm ơn bài viết rất chi tiết!

tuxuong
14th March 2011, 07:43 PM
Cảm ơn bạn , bạn viết tiếp 1 bài compile PHP , MYSQL và APACHE cho anh em thực hành với nào .

thienannt
14th March 2011, 07:56 PM
Cảm ơn bạn , bạn viết tiếp 1 bài compile PHP , MYSQL và APACHE cho anh em thực hành với nào .

http://forum.saigonctt.com.vn/showthread.php?t=53

Nó đây. :-)

thienannt
15th April 2011, 11:09 AM
e chưa hiểu lắm về việc thêm 127.0.0.1 vào /etc/resolv.conf, không thêm vào hay add IP của google như 8.8.8.8 được k thầy


/etc/resolv.conf là file dùng cho DNS Client. Nên nếu bạn để là nameserver 8.8.8.8 th́ lúc này một softwares nào đó trong server DNS sẽ query DNS ở google. Không phải bằng chính BIND bạn vừa cài xong.

Việc bạn để nameserver 127.0.0.1 trong /etc/resolv.conf trên con DNS server sẽ redirect các query DNS client trên con đấy vào chính chtŕnh Bind của bạn.

thienannt
16th April 2011, 09:36 AM
thầy cho hỏi thêm câu nữa là ḿnh có cần thêm vào ḍng search domain ví dụ như search saigonctt.com.vn (tên doman ḿnh cấu h́nh là DNS server) vào trên ḍng nameserver 127.0.01 không, và có thể thay 127.0.0.1 bằng IP tĩnh của DNS server hay không, cảm ơn thầy!

- Ḍng search không có cũng không sao.
- nameserver nên để 127.0.0.1

yatyao
3rd June 2011, 10:20 AM
thầy ơi, vậy sao ḿnh nên gán IP 127.0.0.1 vào file resolv.conf mà không nên gán 1 IP tĩnh vào? Nếu gán IP tĩnh th́ nó có bất lợi ǵ không?

thienannt
3rd June 2011, 04:53 PM
thầy ơi, vậy sao ḿnh nên gán IP 127.0.0.1 vào file resolv.conf mà không nên gán 1 IP tĩnh vào? Nếu gán IP tĩnh th́ nó có bất lợi ǵ không?

Theo ḿnh nghĩ th́ không có ǵ khác nhau. Nhưng gán IP 127 v́ 1 số lư do sau:

1) Nếu bạn move hệ thống này qua 1 IP khác, lúc này không cần phải cấu h́nh lại resolv.conf
2) Khi để là 127 th́ mặc định các rules trong IPtables thường ưu tiên xử lư localhost trước và 1 số software cũng theo cách xử lư này -> performance.