Bài 7 Cấu hình DNS trên Centos

Giới thiệu
DNS (Domain Name System) là một hệ cơ sở dữ liệu phân tán dùng để ánh xạ giữa các tên miền vê các địa chỉ IP. DNS đưa ra một phương pháp đặc biệt để duy trì vê liên kết các ánh xạ nêy trong một thể thống nhất.

BIND (Berkeley Internet Name Distributed) là phần mềm DNS Server được sử dụng nhiều nhất hiện nay trên thế giới. Một chương trình phục vụ DNS trên nền các hệ thống AIX/BSD/HP-UX/Unix/Linux…
Bind chạy nhanh, hiệu suất cao, đáp ứng được số lượng user lớn, cấu hình linh hoạt, …

Phân loại:

  • Máy chủ DNS chính (Primary Name Server): Mỗi một máy chủ tên miền có một tên miền riêng. Tên miền riêng này được đăng ký trên Internet.
  • Máy chủ DNS dự phòng – tên miền thứ hai (Secondary name server): đây là một DNS Server được sử dụng để thay thế cho Primary name server DNS Server  bằng cách sao lưu lại tất cả những bản ghi dữ liệu trên Primary name Server và nếu Primary Name Server bị gián đoạn thì nó sẽ đảm nhận việc phân giải và ánh xạ tên miền và địa chỉ IP.
  • Caching Name Server: Đây là một Server đảm nhiệm việc lưu trữ tất cả những tên miền, địa chỉ IP đã được phân giải và ánh xạ thành công. Nó được sử dụng trong những trường hợp sau:
    • Làm tăng tốc độ phân giải bằng cách sử dụng cache
    • Giảm bớt gánh nặng phân giải tên máy cho các DNS Server
    • Giảm lưu lượng tham gia vào mạng và giảm độ trễ trên mạng (rất quan trọng).

Kiểm tra và cài các package sau:

    • #bind
    • #bind-chroot

1. Demo “DNS SERVER – MASTER”

Xây dựng DNS Server chịu trách nhiệm phân giải cho domain tonphat.info

a. Cấu hình
– Tạo tập tin cấu hình từ tập tin mẫu

#cp /usr/share/doc/bind-9.3.3/sample/etc/named.conf /var/named/chroot/etc

– Hiệu chỉnh tập tin /etc/named/chroot/etc/named.conf, xóa từ dòng 25 đến hết và thêm vào đoạn sau:

zone “tonphat.info” {
type master;
file tonphat.info.zone;
};
zone “1.168.192.in-addr.arpa” {
type master;
file 192.168.1.zone;
};

– Tạo file database được lưu trong thư mục /var/named/chroot/var/named, gồm 2 file là file thuận và file nghịch. hoặc có thể copy từ thực mục chứa tập tin mẫu /usr/share/doc/bind-9.3.3/sample/

Tạo file thuận
#vi /var/named/chroot/var/named/tonphat.info.zone
với nội dung sau:
$TTL 86400
@           IN         SOA              dns.tonphat.info.      dns2.tonphat.info. (

2009060601
3H
15M
1W
1D )

          IN       NS           dns.tonphat.info.
@       IN       A             192.168.1.213
dns     IN       A             192.168.1.106
www   IN       CNAME     tonphat.info.
ftp      IN       CNAME     tonphat.info.

Tạo file nghịch
#vi /var/named/chroot/var/named/192.168.1.zone
với nội dung sau:

$TTL 86400
@           IN                  SOA               dns.tonphat.info.     dns2.tonphat.info. (

2009060601
3H
15M
1W
1D )

                  IN    NS             dns.tonphat.info.
106             IN    PTR           dns.tonphat.info.
213             IN    PTR           tonphat.info.

Cấu trúc như sau:

[Tên_miền]     IN        SOA    [Tên_Primarry_Server]        [Tên_Second_Server]

                  Serial number          

                  Refresh number      

                  Retry number

                  Expire number

                  TTL number

)

Trong đó:

  • Serial number: khi Second server kết nối tới primary server để lấy dự liệu, trước tiên nó sẽ kiểm tra số serial này, nếu số serial này của primary server mà lớn hơn số serial của second server tức là dữ liệu trên second server đã hết hạn sử dụng và nó sẽ phải nạp lại dữ liệu mới. mỗi lần cập nhật dữ liệu trên primary server chúng ta nên tăng số serial này.
  • Refresh number: khoảng thời gian (giây) mà second server phải làm mới lại dữ liệu của mình.
  • Retry number: nếu second server không thể kết nối tới primary server thì nó tự động kết nối lại sau retry giây này.
  • Expire number: Nếu second server không thể kết nối tới primary server sau khoảng thời gian expire giây này, thì second server sẽ không trả lời cho vùng dữ liệu đó khi được truy vấn, vì nó cho rằng dữ liệu này đã quá cũ.
  • TTL number: giá trị này cho phép các server khác cache lại dữ liệu trong 1 khoảng thời gian TTL này.

– Khởi động dịch vụ DNS

#service named start

– Xem file log
#tail -f 10 /var/log/messages

– Chỉnh sửa DNS Client trên DNS Server, xóa bỏ tất cả các dòng trong file /etc/resolv.conf và thêm vào dòng sau:
nameserver 192.168.1.106

– Truy vấn Dns Domain tonphat.info từ máy Windows và Linux, sử dụng lệnh nslookup

2. Demo “DNS SERVER – SLAVE”

Xây dựng Slave DNS Server cho domain tonphat.info

* Chuẩn bị
+ Đặt IP, Hostname
+ Tắt Firewall, SELinux
+ Kiểm tra và cài package bind, bind-chroot

* Thực hiện
#cp /usr/share/doc/bind-9.3.3/sample/etc/named.conf /var/named/chroot/etc

– Hiệu chỉnh tập tin /etc/named/chroot/etc/named.conf, xóa từ dòng 25 đến hết và thêm vào đoạn sau:

zone “tonphat.info” {
type slave;
masters {192.168.1.106;};
file “slaves/tonphat.info.zone”;
};
zone “1.168.192.in-addr.arpa” {
type slave;
masters {192.168.1.106;};
file “slaves/192.168.1.zone”;
};

– Trên Master DNS của bạn thêm option allow-transfer, để cho phép Slave dns được update từ con Master

allow-transfer {192.168.218.136;}; 

– Tranfer các file tập tin record

rndc reload

– Kiểm tra kết quả bằng lệnh

ls –l /var/named/chroot/var/named/slaves

– Restart dịch vụ named

service named restart

– Hiệu chỉnh Dns Client trong file /etc/resolv.conf trỏ vào Slave Dns Server

nameserver 192.168.9.206 –> slave server IP

* Kiểm tra dịch vụ bằng nslookup

3. Demo “DNS SERVER – ỦY QUYỀN”

Yêu cầu: Cấu hình DNS ủy quyền quản lý cho DNS domain con.

B1.Xây dựng DNS Server Master dns.tonphat.info (máy 1) như bài Demo ở mục 1
B2. Xây dựng DNS Server cho domain hcm.tonphat.info (máy 2) như bài Lab ở mục 1, Chú ý:
+ sửa dns thành hcm
+ Đặt hostname, ip, tắt SELinux cho máy 2.

– Trên máy 1 – DNS Server tonphat.info, thêm vào dòng 9 của file /var/named/chroot/var/named/tonphat.info.zone đoạn sau:

hcm IN NS hcmserver.tonphat.info.
hcmserver IN A 192.168.1.206

– Thêm vào cuối file /var/named/chroot/var/named/192.168.1.zone dòng sau:

206 IN PTR hcmserver.tonphat.info

– Restart dịch vụ named

service named restart

–> Kiểm tra từ máy 1 phân giải các record của hcm.tonphat.info

* Cấu hình để máy 2 truy vấn được các record của domain tonphat.info

– Thêm vào dòng 17 của file /etc/named/chroot/etc/named.conf nội dung sau:

forwarders {192.168.1.106;};

– Restart dịch vụ

service named restart

3. Demo “DNS SERVER – Internal View & External View”

Trong thực tế, khi triển khai DNS, ta cần thiết lập đến 2 bộ DNS phân giải riêng biệt một là cho mạng nội bộ và một là cho các truy vấn từ bên ngoài vào.

VD: Domain cùa công ty hiện tại là tonphat.info. Trong hệ thống có xây dựng các dịch vụ mail, web và tình huống đặt ra là khi người dùng trong hệ thống sử dụng dịch vụ sẽ đi bằng IP lan còn khi ở bên ngoài hệ thống sẽ đi bằng IP wan trên internet. Thông thường cần đến hai DNS server riêng biệt hoặc 2 zone khác nhau tonphat.local và tonphat.info trong dns server. Tuy nhiên Bind DNS hỗ trợ chúng ta tính năng view dùng để xác định với đối tượng nào sẽ sử dụng bộ phận giải nào.

Đơn cử ở đây tôi dùng hai view: internal và external ý nghĩa là đối tượng trong Lan khi truy vấn sẽ dùng bộ internal còn đối tượng ngoài internet vào sẽ truy vấn dùng bộ external.
Ta triển khai như sau:
Trong file named.conf, thiết lập internals dùng để xác định nhóm các đối tượng được xem là dành cho LAN. Ở đây mạng Lan tôi có net là 10.0.0.0/24

acl internals {

10.0.0.0/24;

localhost;

};

Bây giờ ta tiến hành cấu hình thêm vào bên dưới một tí:
view "internal" {

match-clients { internal; };

// xác định nhóm đối tượng sẽ áp vào view internal có thể thay bằng subnet hoặc địa chỉ ip cụ thể không nhất thiết là tạo trước nhóm internals như trên

zone "tonphat.info" IN

{

type master;

file "tonphat.info.zone.lan";

};

zone "0.0.10.in-addr.arpa" IN

{

type master;

file "10.0.0.zone.lan";

};

};

Với mạng bên ngòai:

view "external-view" {

match-clients { any; }; //xác định là tất cả

zone "tonphat.info" IN

{

type master;

file "tonphat.info.zone.wan";

};

zone "0.0.10.in-addr.arpa" IN

{

type master;

file "10.0.0.zone.wan";

};

};

Cách cấu hình tương tự như các phần trên cho 4 file này. Tuy nhiên để dễ dàng kiểm chứng thì các bạn phải cấu hình các ip thật sự khác nhau như đang làm trên thực tế để dễ kiểm chứng kết quả trả về

tonphat.info.zone.wan

10.0.0.zone.wan

tonphat.info.zone.lan

10.0.0.zone.lan

Tiếp đến là kiểm tra thành quả bằng nslookup:

Do lúc đầu quên nên giờ tôi gắn thêm 1 card cùng net với máy client vơi mục đích là kiểm tra kết quả cho các truy vấn khác ngoài mạng Lan.

Và sau đó cấu hình thêm trong named.conf thuộc mục Options nhà để cho phép lắng nghe các truy cập trên tất cả các card mạng:

listen-on { any; }; // có thể thay bằng IP nếu muốn

Và giờ chỉ việc kiểm tra bằng nslookup trên máy client

Posted on 22/03/2011, in Linux and tagged , , , , , , , . Bookmark the permalink. 22 phản hồi.

  1. Anh, sao cp file named.conf vào /var/…. mà lại cấu hình file named.conf ở /etc/… e không hiểu..

  2. #cp /usr/share/doc/bind-9.3.3/sample/etc/named.conf /var/named/chroot/etc

    – Hiệu chỉnh tập tin /etc/named/chroot/etc/named.conf, xóa từ dòng 25 đến hết và thêm vào đoạn sau:
    – sao copy vào /var/named/chroot/etc mà lại cấu hình ở /etc/named/chroot/etc/named..
    ở /etc/named/chroot/etc/named.conf của em không có file này

    mà a cho e cái yahoo được hok. để tiện hỏi bài🙂. tks

  3. em chào anh!
    em có 1 usb-3g của viettel.em muốn cà dat và sử dụng trên centOS .
    ANH có thể chỉ giúp em cách cài dat duoc không ạ
    em xin cảm ơn

  4. bạn cho mình hỏi chút.Mình cấu hình thì lúc start sịch vụ named thì ngon lành và khi nslookup thì
    dịch từ tên host sang ip thì ok nhưng khi dịch từ ip sang tên host thì nó báo như sau:
    Server can’t find 1.1.168.192.in-addr.arpa. :NXDOMAIN..
    Mình đã restart lại mấy lần mà nó vẫn báo vậy
    bạn xem giúp mình xem có sai sót ở đâu không .????
    -file /var/named/chroot/etc/named.conf
    acl mynet {
    192.168.1.0/24;
    127.0.0.1;
    };

    options {
    allow-transfer {none;};
    directory “/var/named”;
    query-source port 53;
    query-source-v6 port 53;
    dump-file “var/named/data/cache_dump.db”;
    statistics-file “var/named/data/named_stats.txt”;
    memstatistics-file “var/named/data/named_mem_stats.txt”;
    notify yes;
    };

    zone “.” IN {
    type hint;
    file “named.root”;
    };

    zone “test.com” IN {
    type master;
    file “test.com.db”;
    };

    zone “localhost” IN {
    type master;
    file “localhost.db”;
    };

    zone “0.0.127.in-addr.arpa” IN {
    type master;
    file “0.0.127.in-addr.arpa.db”;

    };

    zone “1.168.192.in-addr.arpa” {
    type master;
    file “1.168.192.in-addr.arpa.db”;
    };

    -file /var/named/chroot/var/named/test.com.db

    $TTL 86400 ; 1 day
    @ IN SOA dns.test.com root (
    20080213 ; serial (d. adams)
    10800 ; refresh
    3600 ; retry
    604800 ; expiry
    86400 ) ; minimum
    IN NS dns.test.com
    dns 1D IN A 192.168.1.1
    www 1D IN CNAME dns

    -file /var/named/chroot/var/named/1.168.192.in-addr.arpa.db

    $TTL 86400 ;1 day
    @ IN SOA dns.test.com root. (
    20080213 ; serial
    10800 ; refresh
    3600 ; retry
    604800 ; expire
    86400 ; ttk
    )

    @ IN NS dns.test.com.
    124 IN PTR dns.test.com.

    -còn mấy cái file named.root và 2 cái file 0.0.127.in-addr.arpa.db, localhost.db mình vứt vào cùng 2 cái file test.com.db và 1.168.192.in-addr.arpa.db

    Cám ơn bạn rất nhiều

  5. he he he ! mình biết chỗ sai rồi .Đọc đi đọc lại mấy cái tài liệu của bạn rồi cũng đã làm được ! thank bạn rất nhiều

  6. chào bạn! mình làm đến phần DNS slave thì mình có thắc mắc sau

    bạn cho mình hỏi 2 cái này thì cho vào phần nào của file named.conf

    -allow-transfer {192.168.218.136;};

    -rndc reload

    Thank bạn nhiều !!!!!!!!!!!!!!!!!!!!

  7. allow-transfer dùng để khai báo danh sách cac ip cho phép trnafer zone có mẫu như sau nhé
    zone “example.com” in{
    ….
    // explicity allow the slave(s) in each zone
    allow-transfer (192.168.0.3;);
    };
    Còn rndc reload là command nhé bạn

  8. Hóa ra là vậy.Chắc mình phải gọi bạn bằng thầy mất thôi ^.^.Cám ơn thầy nhiều

  9. hoi kho hieu ty ! cu huong dan cu the la cau hinh DNS thi co ban la phai co phan dich thuan la tu ten mien sang IP va nguoc la tu IP sang ten mien cho re hieu !

  10. cam on ban vi bai viet 7 nhe

  11. Ủa? bạn ơi! mình làm view internal và external xong hết rồi nhưng khi qua client để nslookup thì báo là “Got SERVFAIL reply from 127.0.0.1, trying next server” là sao hả bạn?

  12. Cam on ban nhieu vi bai viet rat bo ich !
    chuc ban thanh cong trong su nghiep nha !!

  13. chào bạn mình cũng cấu hình như bạn nhưng khi mình start named thì lại ko được bạn ạ, nó báo Error in named configuration:
    none:0: open: /etc/named.conf: permission denied
    bạn có thể giúp mình ko?

    • Vụ án này thì mình chưa bị bao h mà theo như thông báo thì bạn thử check permission của file /etc/named.conf xem sao. Với cho thêm xíu thông tin đi vd như xài bản Linux nào, cài gói gì rồi, log ghi nhận chi tiết sao, có cấu hình gì đặc biệt không…

  14. có hình hay video kèm theo phải tót hơn k a. Dù sao cũng thank vì bài viết

  15. chauthanhnhonhon

    anh ơi em muốn tạo nhiều tên miền trên web server. anh giúp em được nha!

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: