Thursday, February 9, 2012

Cấu hình Linux DNS Server (P1)

BIND là một phần mềm đang được sử dụng rộng rãi trong việc triển khai DNS service cho hệ thống mạng. Ngoài BIND ra còn một số phần mềm mã nguồn mở khác cũng cho phép ta thiết lập, cấu hình một DNS server như PowerDNS, djbdns,...

Post này sẽ hướng dẫn cấu hình một master DNS server trên BIND 9 trong một trường hợp cụ thể. Yêu cầu để có thể làm đc là đã hiểu được khác niệm cơ bản về DNS.

Giả sử tôi có mô hình mạng gồm các server và host như sau:

Domain: mydomain.local
Hosts                     |   DNSname                     |     IP address
-----------------------------------------------------------------------------------------------------
DNS server                 dns.mydomain.local        10.0.0.2/24
Mail server                 mail.mydomain.local        10.0.0.3/24
Web/ftp server           www.mydomain.local        10.0.0.4/24
----------------------------------------------------------------------------------------------------
1.Cài đặt BIND

Có thể cài đặt thông qua yum (đang setup trên CentOS) hoặc từ build từ source

2.Xác định số zone files

Ta sẽ phải thiết lập các zone files để phục vụ cho việc phân giải tên (thuận / nghịch)

Ta sẽ cần tối thiểu các zone files sau:

-2 zone file cho việc phân giải thuận từ IP sang tên host. Một file dùng cho mydomain.local. Một file dùng cho localhost.

-2 zone file cho việc phân giải nghịch từ tên sang IP. Một file dùng cho subnet 10.0.0.0/24. Một file dùng cho localhost.

-Một zone file phân giải các root servers. Download tại http://www.internic.net/zones/named.root

Ta sẽ đặt tên các file đó như sau:

-Phân giải thuận: mydomain.local.zone (dùng cho mydomain.local) và localhost.zone (dùng cho localhost)

-Phần giải nghịch: localhost.rev.zone (dùng cho localhost) và mydomain.local.rev.zone (dùng cho 10.0.0.0/24 subnet)

Nội dung các file như sau:



[root@dns named]# ls *.zone
localhost.rev.zone  mydomain.local.rev.zone
localhost.zone      mydomain.local.zone
[root@dns named]# more mydomain.local.zone
$TTL 2d  ; set TTL value for zone
$ORIGIN  mydomain.local. ; domain name
; SOA record
@    IN    SOA    dns.mydomain.local.    admin.mydomain.local. (
    2011261200; serial number
    2h;
    10m;
    7d;
    1h;
)
    IN    NS        dns.mydomain.local.
    IN    MX    10    mail.mydomain.local.
;defining ip address maps to each host name
dns    IN    A    10.0.0.2
mail    IN    A    10.0.0.3
www    IN    A    10.0.0.4
ftp    IN    CNAME    www.mydomain.local.
--------------------------------------------
[root@dns named]# more mydomain.local.rev.zone
;Zone file for mydomain.local
;Name: mydomain.local.rev.zone
$TTL 2d
$ORIGIN 0.0.10.in-addr.arpa.
@    IN    SOA    dns.mydomain.local.    admin.mydomain.local    (
    2011261200; serial number
    2h
    10m
    7d
    1h
)
    IN    NS    dns.mydomain.local.
2    IN    PTR    dns.mydomain.local.
3    IN    PTR    mail.mydomain.local.
4    IN    PTR    www.mydomain.local.
------------------------------------------------------
[root@dns named]# more localhost.zone
;Zone file for localhost
;Name: localhost.zone
$TTL 2d
$ORIGIN localhost.
@    IN    SOA    localhost    root.localhost    (
    2011261200; serial number
    2h
    10m
    7d
    1h
)
@  1D  IN  NS @
   1D  IN  A  127.0.0.1
--------------------------------------------------
[root@dns named]# more localhost.rev.zone
;Reverse map for localhost
;Filename: localhost.rev.zone
$TTL 2d
@    IN    SOA    localhost    root.localhost    (
    2011261200; serial number
    2h
    10m
    7d
    1h
)
@  3W  IN  NS      localhost.
1  3W  IN  PTR     localhost.





3.Thiết lập file cấu hình named.conf

[root@dns etc]# more named.conf
options {
    directory "/var/named"; // set the container folder
    allow-transfer {"none";};
    dump-file "/var/log/named_dump.db";
};

###### zones definitions #######
zone "." in {
        type hint;
        file "named.root";
};

zone "mydomain.local" in {
        type master;
        file "mydomain.local.zone";
};

zone "localhost" in {
    type master;
    file "localhost.zone";
};

zone "0.0.10.in-addr.arpa" in {
        type master;
        file "mydomain.local.rev.zone";
};

zone "0.0.127.in-addr.arpa" in {
    type master;
    file "localhost.rev.zone";
};


Như vậy đã có đầy đủ các thành phần để xây dựng một Master DNS server đơn giản với BIND.

Cần điều chỉnh DNS của host về địa chỉ IP của DNS server là 10.0.0.2.

Test thử:

[root@mail ~]# more /etc/resolv.conf
nameserver 10.0.0.2
domain mydomain.local
[root@mail ~]# nslookup
> www.mydomain.local
Server:        10.0.0.2
Address:    10.0.0.2#53

Name:    www.mydomain.local
Address: 10.0.0.4
> ftp
Server:        10.0.0.2
Address:    10.0.0.2#53

ftp.mydomain.local    canonical name = www.mydomain.local.
Name:    www.mydomain.local
Address: 10.0.0.4
> 10.0.0.3
Server:        10.0.0.2
Address:    10.0.0.2#53

3.0.0.10.in-addr.arpa    name = mail.mydomain.local.
>



Lưu ý: nếu cài gói bind-chroot thì thư mục root của BIND sẽ nằm ở /varnamed/chroot

[root@dns chroot]# pwd
/var/named/chroot
[root@dns chroot]# ls
dev  etc  proc  var

1 comment:

  1. có cách nào triển khai dns server mà không sửa file resolv.conf, chỉ được sửa file interfaces không ạ

    ReplyDelete