Cài đặt và cấu hình DNS Server trên CentOS 7

Tác giả CCNACCNP, T.Tư 12, 2019, 06:00:06 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 6 Khách đang xem chủ đề.

Cài đặt và cấu hình DNS Server trên CentOS 7


1. Giới thiệu.

DNS là viết tắt của từ tiếng Anh Domain Name System, là hệ thống phiên dịch tên miền thành địa chỉ IP và ngược lại. Ví dụ nếu chúng ta gõ vietnetwork.vn trong trình duyệt thì máy chủ DNS sẽ phiên dịch tên miền thành địa chỉ IP 221.132.27.140. Vì các địa chỉ IP khó nhớ nên người ta sử dụng tên miền thay thế.


Hướng dẫn chi tiết này sẽ giúp bạn thiết lập máy chủ DNS trên CentOS 7. Tuy nhiên, các bước được này cũng có thể được sử dụng để cài đặt máy chủ DNS trên RHEL và các hệ điều hành Unix khác.

2. Mô hình Lab.

Với mục đích của hướng dẫn này, mình sẽ sử dụng 2 Node. Node 1 sẽ hoạt động như máy chủ DNS chính, Node 2 sẽ đóng vai trò là DNS phụ và một máy khách DNS. Dưới đây là thông số chi tiết.

Máy chủ DNS chính:

Hệ điều hành: CentOS 7 Minimal Server.
Tên máy chủ: masterdns.vietnetwork.vn.local.
Địa chỉ IP: 192.168.1.101/24.

Máy chủ DNS phụ:

Hệ điều hành: CentOS 7 Minimal Server.
Tên máy chủ:secondarydns.vietnetwork.vn.local.
Địa chỉ IP: 192.168.1.102/24.

Máy khách:

Hệ điều hành: CentOS 6.5 Desktop.
Tên máy chủ: client.vietnetwork.local.Địa chỉ IP: 192.168.1.103/24.

2. Cài đặt và cấu hình máy chủ DNS chính.

2.1. Cài đặt.

  • Chúng ta sẽ sử dụng Bind9 và sử dụng lệnh sau để cài đặt.

Mã nguồn [Chọn]
#yum install bind bind-utils -y
2.2. Cấu hình.

  • Chỉnh sửa tập tin cấu hình của Bind '/etc/named.conf'.

Mã nguồn [Chọn]
#vi /etc/named.conf
  • Thêm các dòng như được in đậm như sau.

Mã nguồn [Chọn]
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
    listen-on port 53 { 127.0.0.1; 192.168.1.101;}; ### Master DNS IP ###
#    listen-on-v6 port 53 { ::1; };
    directory     "/var/named";
    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";
    allow-query     { localhost; 192.168.1.0/24;}; ### IP Range ###
    allow-transfer{ localhost; 192.168.1.102; };   ### Slave DNS IP ###

    /*
     - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
     - If you are building a RECURSIVE (caching) DNS server, you need to enable
       recursion.
     - If your recursive DNS server has a public IP address, you MUST enable access
       control to limit queries to your legitimate users. Failing to do so will
       cause your server to become part of large scale DNS amplification
       attacks. Implementing BCP38 within your network would greatly
       reduce such attack surface
    */
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
    type hint;
    file "named.ca";
};

zone "vietnetwork.vn.local" IN {
type master;
file "forward.vietnetwork.vn";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "reverse.vietnetwork.vn";
allow-update { none; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

  • Tạo Forward Zone trong thư mục/var/named/

Mã nguồn [Chọn]
#vi /var/named/forward.vietnetwork.vn
  • Thêm các dòng sau đây.

Mã nguồn [Chọn]
$TTL 86400
@   IN  SOA     masterdns.vietnetwork.vn.local. root.vietnetwork.vn.local. (
        2011071001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          masterdns.vietnetwork.vn.local.
@       IN  NS          secondarydns.vietnetwork.vn.local.
@       IN  A           192.168.1.101
@       IN  A           192.168.1.102
@       IN  A           192.168.1.103
masterdns       IN  A   192.168.1.101
secondarydns    IN  A   192.168.1.102
client          IN  A   192.168.1.103

  • Tạo Reverse Zone trong thư mục/var/named/

Mã nguồn [Chọn]
#vi /var/named/reverse.vietnetwork.vn
  • Thêm các dòng sau đây.

Mã nguồn [Chọn]
$TTL 86400
@   IN  SOA     masterdns.vietnetwork.vn.local. root.vietnetwork.vn.local. (
        2011071001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          masterdns.vietnetwork.vn.local.
@       IN  NS          secondarydns.vietnetwork.vn.local.
@       IN  PTR         vietnetwork.vn.local.
masterdns       IN  A   192.168.1.101
secondarydns    IN  A   192.168.1.102
client          IN  A   192.168.1.103
101     IN  PTR         masterdns.vietnetwork.vn.local.
102     IN  PTR         secondarydns.vietnetwork.vn.local.
103     IN  PTR         client.vietnetwork.vn.local.

  • Kích hoạt và khởi động dịch vụ Bind qua các lệnh dưới đây.

Mã nguồn [Chọn]
systemctl enable named
systemctl start named

2.3. Cấu hình tường lửa.

  • Chúng ta sẽ cho phép Port mặc định của dịch vụ DNS 53 đi qua tường lửa bằng lệnh sau đây.

Mã nguồn [Chọn]
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp

  • Khởi động lại tường lửa.

Mã nguồn [Chọn]
firewall-cmd --reload
2.4. Cấu hình Permissions, Ownership, và SELinux.

  • Chạy thứ tự lần lượt các lệnh sau đây.

Mã nguồn [Chọn]
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf

2.5. Kiểm tra lỗi cấu hình DNS nếu có.

  • Kiểm tra tập tin cấu hình Bind.

Mã nguồn [Chọn]
named-checkconf /etc/named.conf
  • Nếu nó không trả về lỗi nào thì tập tin cấu hình của bạn đã được cấu hình chính xác.
  • Kiểm tra Forward Zone. Nếu kết quả xuất hiện như bên dưới nghĩa là phần cấu hình Forward Zone chúng ta đã cấu hình chính xác.

Mã nguồn [Chọn]
named-checkzone vietnetwork.vn.local /var/named/forward.vietnetwork.vn
zone vietnetwork.vn.local/IN: loaded serial 2011071001
OK

  • Kiểm tra Reverse Zone. Nếu kết quả xuất hiện như bên dưới nghĩa là phần cấu hìnhReverse Zone chúng ta đã cấu hình chính xác.

Mã nguồn [Chọn]
named-checkzone vietnetwork.vn.local /var/named/reverse.vietnetwork.vn

zone vietnetwork.vn.local/IN: loaded serial 2011071001
OK

2.6. Cấu hình DNS Server trong Card mạng.

  • Mở tập tin cấu hình của Card mạng enp0s3 ra.

Mã nguồn [Chọn]
#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
  • Thay đổi nội dung tập tin như sau đây.

Mã nguồn [Chọn]
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="5d0428b3-6af2-4f6b-9fe3-4250cd839efa"
ONBOOT="yes"
HWADDR="08:00:27:19:68:73"
IPADDR0="192.168.1.101"
PREFIX0="24"
GATEWAY0="192.168.1.1"
DNS="192.168.1.101"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

2.7. Cấu hình DNS Server trong /etc/resolv.conf.

  • Mở tập tin /etc/resolv.conf.

Mã nguồn [Chọn]
#vi /etc/resolv.conf
  • Thêm địa chỉ IP của DNS Server như sau đây.

Mã nguồn [Chọn]
nameserver      192.168.1.101
  • Lưu sự thay đổi và đóng tập tin lại.
  • Khởi động lại dịch vụ mạng.

Mã nguồn [Chọn]
#systemctl restart network
2.8. Kiểm tra sự hoạt động của máy chủ DNS chính.

Mã nguồn [Chọn]
#dig masterdns.vietnetwork.vn.local
  • Kết quả sẽ như sau.

Mã nguồn [Chọn]
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> masterdns.vietnetwork.vn.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25179
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;masterdns.unixmen.local.    IN    A

;; ANSWER SECTION:
masterdns.vietnetwork.vn.local. 86400    IN    A    192.168.1.101

;; AUTHORITY SECTION:
vietnetwork.vn.local.        86400    IN    NS    secondarydns.vietnetwork.vn.local.
vietnetwork.vn.local.        86400    IN    NS    masterdns.vietnetwork.vn.local.

;; ADDITIONAL SECTION:
secondarydns.vietnetwork.vn.local. 86400 IN    A    192.168.1.102

;; Query time: 0 msec
;; SERVER: 192.168.1.101#53(192.168.1.101)
;; WHEN: Wed Aug 20 16:20:46 IST 2014
;; MSG SIZE  rcvd: 125

Mã nguồn [Chọn]
nslookup vietnetwork.vn.local
  • Kết quả sẽ như sau.

Mã nguồn [Chọn]
Server:        192.168.1.101
Address:    192.168.1.101#53

Name:    vietnetwork.vn.local
Address: 192.168.1.103
Name:    vietnetwork.vn.local
Address: 192.168.1.101
Name:    vietnetwork.vn.local
Address: 192.168.1.102

Như vậy chúng ta đã cấu hình xong máy chủ DNS chính và bây giờ nó đã sẵn sàng để sử dụng.

3. Cài đặt và cấu hình máy chủ DNS phụ.

3.1. Cài đặt.

  • Chúng ta cũng sẽ sử dụng Bind để cài đặt như ở máy chủ DNS chính.

Mã nguồn [Chọn]
yum install bind bind-utils -y
3.2. Cấu hình máy chủ DNS phụ.

  • Mở tập tin cấu hình của Bind '/etc/named.conf' ra.

Mã nguồn [Chọn]
#vi /etc/named.conf
  • Thực hiện các thay đổi như trong phần được in đậm.

Mã nguồn [Chọn]
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.1.102; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
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";
allow-query     { localhost; 192.168.1.0/24; };
.
.
.
.
zone "." IN {
type hint;
file "named.ca";
};
zone "vietnetwork.vn.local" IN {
type slave;
file "slaves/vietnetwork.vn.fwd";
masters { 192.168.1.101; };
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
file "slaves/vietnetwork.vn.rev";
masters { 192.168.1.101; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
  • Khởi động dịch vụ Bind lên qua lệnh sau.

Mã nguồn [Chọn]
systemctl enable named
systemctl start named

  • Sau khi các bạn cấu hình chính xác giữa máy chủ DNS chínhmáy chủ DNS phụ thì các Forward Zone Reverse Zone sẽ được tự động đồng bộ từ máy chủ DNS chính sang máy chủ DNS phụ. Các bạn có thể sự dụng lệnh sau đây để kiểm tra sự đồng bộ giữa 2 máy chủ DNS.

Mã nguồn [Chọn]
#ls /var/named/slaves/
  • Kết quả sẽ như sau.

Mã nguồn [Chọn]
vietnetwork.vn.fwd  vietnetwork.vn.rev
3.3. Cấu hình DNS Server trong Card mạng.

  • Mở tập tin cấu hình của Card mạng enp0s3 ra.

Mã nguồn [Chọn]
#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
  • Thay đổi nội dung tập tin như sau đây.

Mã nguồn [Chọn]
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="5d0428b3-6af2-4f6b-9fe3-4250cd839efa"
ONBOOT="yes"
HWADDR="08:00:27:19:68:73"
IPADDR0="192.168.1.102"
PREFIX0="24"
GATEWAY0="192.168.1.1"
DNS1="192.168.1.101"
DNS2="192.168.1.102"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

3.4. Cấu hình DNS Server trong /etc/resolv.conf.

  • Mở tập tin /etc/resolv.conf.

Mã nguồn [Chọn]
#vi /etc/resolv.conf
  • Thêm địa chỉ IP của DNS Server như sau đây.

Mã nguồn [Chọn]
nameserver      192.168.1.101
nameserver      192.168.1.102

  • Lưu sự thay đổi và đóng tập tin lại.
  • Khởi động lại dịch vụ mạng.

Mã nguồn [Chọn]
systemctl restart network
3.5. Cấu hình tường lửa.

  • Chúng ta sẽ cho phép Port mặc định của dịch vụ DNS 53 đi qua tường lửa bằng lệnh sau đây.

Mã nguồn [Chọn]
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp

  • Khởi động lại tường lửa.

Mã nguồn [Chọn]
firewall-cmd --reload
3.6. Cấu hình Permissions, Ownership, và SELinux.

  • Chạy thứ tự lần lượt các lệnh sau đây.

Mã nguồn [Chọn]
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf

3.7. Kiểm tra sự hoạt động của máy chủ DNS phụ.

Mã nguồn [Chọn]
dig masterdns.vietnetwork.vn.localKết quả sẽ như sau.

Mã nguồn [Chọn]
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> masterdns.vietnetwork.vn.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18204
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;masterdns.vietnetwork.vn.local.    IN    A

;; ANSWER SECTION:
masterdns.vietnetwork.vn.local. 86400    IN    A    192.168.1.101

;; AUTHORITY SECTION:
vietnetwork.vn.local.        86400    IN    NS    masterdns.vietnetwork.vn.local.
vietnetwork.vn.local.        86400    IN    NS    secondarydns.vietnetwork.vn.local.

;; ADDITIONAL SECTION:
secondarydns.vietnetwork.vn.local. 86400 IN    A    192.168.1.102

;; Query time: 0 msec
;; SERVER: 192.168.1.102#53(192.168.1.102)
;; WHEN: Wed Aug 20 17:04:30 IST 2014
;; MSG SIZE  rcvd: 125

Mã nguồn [Chọn]
dig secondarydns.vietnetwork.vn.local
Kết quả sẽ như sau.

Mã nguồn [Chọn]
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> secondarydns.vietnetwork.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60819
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;secondarydns.vietnetwork.local.    IN    A

;; ANSWER SECTION:
secondarydns.vietnetwork.local. 86400 IN    A    192.168.1.102

;; AUTHORITY SECTION:
vietnetwork.local.        86400    IN    NS    masterdns.vietnetwork.local.
vietnetwork.local.        86400    IN    NS    secondarydns.vietnetwork.local.

;; ADDITIONAL SECTION:
masterdns.vietnetwork.local. 86400    IN    A    192.168.1.101

;; Query time: 0 msec
;; SERVER: 192.168.1.102#53(192.168.1.102)
;; WHEN: Wed Aug 20 17:05:50 IST 2014
;; MSG SIZE  rcvd: 125

Mã nguồn [Chọn]
#nslookup vietnetwork.local
  • Kết quả sẽ như sau.

Mã nguồn [Chọn]
Server:        192.168.1.102
Address:    192.168.1.102#53

Name:    vietnetwork.local
Address: 192.168.1.101
Name:    vietnetwork.local
Address: 192.168.1.103
Name:    vietnetwork.local
Address: 192.168.1.102

4. Cấu hình máy khách DNS.

  • Mở tập tin /etc/resolv.conf ra.

Mã nguồn [Chọn]
#vi /etc/resolv.conf
  • Thêm địa chỉ IP của DNS Server như sau đây.

Mã nguồn [Chọn]
# Generated by NetworkManager
search vietnetwork.local
nameserver 192.168.1.101
nameserver 192.168.1.102

  • Lưu sự thay đổi và đóng tập tin lại.
  • Khởi động lại dịch vụ mạng.

Mã nguồn [Chọn]
systemctl restart network
  • Bây giờ các bạn có thể kiểm tra máy chủ DNS bằng cách chạy bất kỳ một trong các lệnh sau đây.

Mã nguồn [Chọn]
dig masterdns.vietnetwork.local
dig secondarydns.vietnetwork.local
dig client.vietnetwork.local
nslookup vietnetwork.local

Đó là tất cả về các bước về cài đặt và cấu hình DNS server trên Linux. Qua bài viết này các bạn có thể hình dung và triển khai một cặp DNS Server gồm Master Slave hoặc nhiều hơn vậy trong thực tế ở các doanh nghiệp chuyên về lĩnh vực công nghệ thông tin.

Nếu các bạn có ý kiến gì hay hơn cần bổ sung thì hãy đừng quên chia sẻ qua bình luận bên dưới.