Home »
Linux
DNS Linux
Nội dung
1. Giới thiệu
2. Cấu hình DNS (bind version 9)
o Caching name server
o Authoritative DNS server và zone file
o Master, slave server
3. Tham khảo
1. Giới thiệu
2. Cấu hình DNS (bind version 9)
o Caching name server
o Authoritative DNS server và zone file
o Master, slave server
3. Tham khảo
Giới thiệu
Bài viết này giới thiệu cách dùng bind để cấu hình DNS cho máy Linux. Chú ý rằng cấu hình bind (named.conf và zone file) không phụ thuộc vào hệ điều hành, có thể dùng những file cấu hình này cho những HĐH khác ngoài Linux. Cấu hình này đã được kiểm tra trên Linux (RH 9, FC 1, TSL 2.1), FreeBSD (R-5.1) và Solaris (Cool.
Chú ý: đây là cấu hình không chroot. Xem bind-chroot phần "Tham khảo, thông tin thêm".
Bắt đầu viết: tháng 5 năm 2003.
Thay đổi lần cuối vào lúc: Sun Feb 1 12:47:44 JST 2004.
Cài đặt và cấu hình
Phần 1: Cài đặt
Compile từ source (xem http://www.isc.org/index.pl?/sw/bind/), hoặc dùng binary gói sẵn cho mỗi distro.
Riêng cho người dùng FC:
###--------------------------------------------------------------
// từ RPM
rpm -ivh bind-version***.rpm
rpm -ivh caching-nameserver-version***.rpm
// đang nối Internet
yum install bind caching-nameserver
###-------------------------------------------------------------
Riêng cho người dùng Trustix
swup --install bind caching-nameserver
Phần 2: Caching nameserver
Phần này ghi cách làm "caching name server", một kiểu DNS đơn giản, thích hợp cho những ai tập làm DNS lần đầu tiên, hoặc những ai muốn làm DNS cho máy cá nhân. Theo cấu hình này, mỗi khi có yêu cầu (query) về thông tin DNS, server sẽ tìm kiếm theo thứ tự: 1) dữ liệu trong bộ đệm (cache), nếu không có hoặc dữ liệu đã hết hạn thì 2) hỏi DNS cấp cao nhất (root server).
Những file cần thiết
1. /etc/named.conf: file cấu hình DNS
2. /var/named/named.ca: danh sách root server
3. /var/named/localhost.zone: localhost zone file
4. /var/named/0.0.127.rev: localhost reverse zone file
Riêng cho người dùng FC: Những file ghi trên có trong gói caching-nameserver-***.rpm
Chuẩn bị file /etc/named.conf như sau
###----------------------------------------------------------------------
acl localnet {
127.0.0.1;
};
options {
// nơi đặt zone files
directory "/var/named";
// chỉ dùng trong mạng localnet
allow-transfer { localnet; };
allow-query { localnet; };
};
controls {
inet 127.0.0.1
allow { localhost; }
keys { rndckey; };
};
zone "." IN {
// hỏi root server
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "0.0.127.rev";
allow-update { none; };
};
include "/etc/rndc.key";
###-----------------------------------------------------------------
tiếp theo, copy file named.ca vào /var/named. File named.ca là danh sách tất cả những DNS root server, thường được kèm sẵn trong phần mềm bind. Ngoài ra, có thể download file named.ca ở http://www.root-servers.org (xem phần tham khảo).
soạn file localhost.zone và copy vào /var/named
###-----------------------------------------------------------------
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
###--------------------------------------------------------------------
soạn file 0.0.127.rev và copy vào /var/named
###-------------------------------------------------------------------
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
###-----------------------------------------------------------
xong khởi động DNS daemon.
Cho người dùng FC:
1. khởi động: /etc/init.d/named start
2. ví dụ về script khởi động có trong gói bind-***.rpm
Cách sử dụng: soạn file /etc/resolve.conf có nội dung như sau
# dùng my DNS server, không cần DNS server của ISP Smile
nameserver 127.0.0.1
sau đó thử một vài query. Nếu thấy kết quả như sau đây, DNS server của bạn đã hoạt động.
###------------------------------------------------------
// thử localhost
$ host localhost.
localhost has address 127.0.0.1
$ host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
// thử Internet
$nslookup www.google.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.google.com canonical name = www.google.akadns.net.
Name: www.google.akadns.net
Address: 66.102.9.104
Name: www.google.akadns.net
Address: 66.102.9.99
###-----------------------------------------------------------
Phần 3:Authoritative server và zone file
Phần này ghi cách cấu hình một DNS server cho domain "domain.name", có thể query từ bất kỳ máy nào trong LAN. Giả sử IP của DNS server là 192.168.1.1, phục vụ cho LAN 192.168.1.0/24.
Cấu hình này cũng có thể dùng để phục vụ những query từ Internet, nếu DNS server có interface mang địa chỉ global IP. Do đó sự an toàn thông tin và sự rõ ràng trong cấu hình được chú trọng (đặc biệt sử dụng "view statement").
Chuẩn bị file /etc/named.conf
###----------------------------------------------------------
acl localnet {
127.0.0.1;
192.168.1.0/24; // private IP
};
options {
directory "/var/named";
allow-transfer { localnet; };
allow-query { localnet; };
version ""; // hide the version
};
controls {
inet 127.0.0.1
allow { localhost; }
keys { rndckey; };
};
// không log những lame-server
logging {
category lame-servers { null; };
};
// phục vụ localnet
// localnet gồm những máy đã định nghĩa bằng "acl localnet"
view "internal" {
match-clients { localnet; };
recursion yes;
zone "." IN {
// hỏi root server
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "0.0.127.rev";
allow-update { none; };
};
zone "domain.name" IN {
type master;
file "internal/domain.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "internal/1.168.192.rev";
allow-update { none; };
};
};
// phục vụ những client không thuộc localnet (ví dụ Internet)
view "global" {
match-clients { any; };
allow-query { any; };
// server này chỉ trả lời query về domain.name
recursion no;
// ----------------------------
// những dòng sau đây chỉ sử dụng với "recursion yes;"
// trả lời cả những query về những domain khác
// bằng cách hỏi root DNS servers
// zone "." IN {
// type hint;
// file "named.ca";
// };
// ----------------------------
zone "domain.name" IN {
type master;
file "global/domain.zone";
allow-update { none; };
};
};
###----------------------------------------------------------
Những zone file cần thiết: (/var/named/internal/)mydomain.zone, 1.168.192.rev; (/var/named/global/)mydomain.zone
domain.zone (internal):
###-------------------------------------------------
$TTL 86400
$ORIGIN domain.name.
@ IN SOA ns.domain.name. dnsmaster.domain.name. (
2003051100 ; tăng (ví dụ +1) khi thay đổi thông tin
3H ; update thông tin từ master server
3600 ; làm lại, nếu không connect được với master
1W ; thời hạn giữ thông tin của slave
1D ) ; thời hạn cache của client, giảm -1 mỗi giây
IN A 192.168.1.1
IN MX 10 mail.domain.name.
IN NS ns.domain.name.
localhost IN A 127.0.0.1
mail IN A 192.168.1.3
ntp IN A 192.168.1.10
www IN CNAME Chibi.domain.name.
Chibi IN A 192.168.1.99
IN HINFO "Linux" "P3 500MHz, RAM 128 MB"
Monster IN A 192.168.1.100
IN HINFO "Linux" "Quad Itanium2 1.5G, 32G DDR SDRAM"
###------------------------------------------------------------------
file 1.168.192.rev (internal)
###--------------------------------------------------------------------
$TTL 86400
$ORIGIN 1.168.192.IN-ADDR.ARPA.
@ IN SOA ns.domain.name. dnsmaster.domain.name. (
2003051500 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day, negative cache
IN NS ns.domain.name.
1 IN PTR hydro.domain.name.
2 IN PTR heli.domain.name.
###----------------------------------------------------------------
Những zone file ở thư mục global: hoàn toàn tương tự.
Cách sử dụng
// chỉ định DNS server: soạn file /etc/resolve.conf như sau
search domain.name
nameserver 192.168.1.1
sau đó thử một vài query. Nếu thấy kết quả như sau đây, DNS server của bạn đã hoạt động.
###---------------------------------------------------------------
// thử localhost
$ host localhost
localhost.domain.name has address 127.0.0.1
// thử zone file
$ host mail
mail.domain.name has address 192.168.1.3
$ host -t hinfo chibi
chibi.domain.name host information "Linux" "P3 500MHz, RAM 128 MB"
// thử reverse zone
$ host 192.168.1.2
2.17.168.192.in-addr.arpa domain name pointer heli.domain.name.
// thử Internet
$ dig www.google.com soa
// sẽ thấy kết quả
; <<>> DiG *.*.* <<>> www.google.com soa
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7662
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN SOA
;; ANSWER SECTION:
www.google.com. 820 IN CNAME www.google.akadns.net.
;; AUTHORITY SECTION:
google.akadns.net. 821 IN SOA asia3.akam.net.
hostmaster.akamai.com. 1091842826 3600 300 172800 900
;; Query time: 7 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: *****
;; MSG SIZE rcvd: 132
###------------------------------------------------------------
Phần 4: Master, slave DNS server
Cấu hình master/slave DNS server thường chỉ cần thiết cho những hệ thống có yêu cầu về tính an toàn và ổn định, cho những hệ thống cỡ lớn.
Chú ý: phân biệt master/slave DNS server với primary/secondary DNS server!
Master server (IP 192.168.1.1) của domain.name
zone "domain.name" IN {
type master;
file "internal/domain.zone";
};
Slave server (IP 192.168.1.2) của domain.name
zone "domain.name" IN {
type slave;
file "internal/domain.zone";
masters {
192.168.1.1;
}
};
Cấu hình load Balancing DNS Round-Robin
www0 IN A xxx.xxx.xxx.1
www1 IN A xxx.xxx.xxx.2
www2 IN A xxx.xxx.xxx.3
www3 IN A xxx.xxx.xxx.4
www IN CNAME www0.domain-test.com.
IN CNAME www1.domain-test.com.
IN CNAME www2.domain-test.com.
IN CNAME www3.domain-test.com.
IN CNAME www4.domain-test.com.
Tin liên quan