Posted by : Admin Thứ Năm, 24 tháng 10, 2013

Nội dung

1. Giới thiệu
2. Cấu hình DNS (bind version 9)
* Caching name server
* Authoritative DNS server và zone file
* 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 (8).

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:


Code:
###-------------------------------------------------------------- 
     // 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
Code:
###----------------------------------------------------------------------  
     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 { non
e; }; 
     }; 
     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
Code:
###-----------------------------------------------------------------  
 $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
Code:
###-------------------------------------------------------------------  
 $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
Code:
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.
Code:
localhost has address 127.0.0.1
$ host 127.0.0.1
Code:
1.0.0.127.in-addr.arpa domain name pointer  localhost.
// thử Internet
$nslookup www.google.com
Code:
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
Code:
###---------------------------------------------------------- 
     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):

Code:
###------------------------------------------------- 
 $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
Code:
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
Code:
localhost.domain.name has address 127.0.0.1
// thử zone file
$ host mail
Code:
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
Code:
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!
Code:
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; 
 } 
     };
Phần 5: Những option thông dụng


Tham khảo, thông tin thêm

1. DNS query sử dụng port 53, giao thức UDP
2. DNS update (master/slave) sử dụng port 53, giao thức TCP
3. Danh sách DNS root server: địa điểm, IP, traffic load
4. chroot bind (FC: yum install bind-chroot)
5. reverse DNS delegation (RFC 2317, BCP 0020)
6. DNS for Rocket Scientists
7. DNS and BIND, 3rd ed., NXB O'Reilly.

Nguồn : http://james.dyndns.ws/index.php
James Nguyen.

Leave a Reply

Subscribe to Posts | Subscribe to Comments

Welcome to My Blog

Tổng số lượt xem trang

Social Icons

Social Icons

Message From Admin

các bạn có thể tham gia bình luận,góp ý...những bình luận nào mang tính thô tục,chửi bậy..không tốt,admin sẽ xóa không báo trước Thân!

- Copyright © Hệ thống mạng unix/Linix -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -