Các cài đặt dns ad web server trên linux

Bài viết này giới thiệu với các bạn về cài đặt và cấu hình DNS Server của hệ điều hành Linux. Trong bài viết này sẽ giới thiệu với các bạn các loại dns server cùng với cách cài đặt dns trên bản phân phối CentOS 7 từ đó giúp cho chúng ta có thể tự tìm hiểu và tự học Linux cơ bản dễ dàng hơn.

1. Giới thiệu về DNS, DNS Server và các loại DNS Server

1.1. Giới thiệu về DNS

DNS[Domain Name System] là một hệ thống dùng để phân giải tên miền. Nó dùng để thiết lập mối quan hệ giữa tên tên miền và địa chỉ IP. DNS giúp chúng ta có thể chuyển đổi tên miền [blogd.net] sang một địa chỉ IP [192.168.1.15].

Ví dụ: Khi chúng ta vào google và gõ vào thanh tìm kiếm site "blogd.net" thì ngay lập tức DNS sẽ phân giải và trả về kết quả với IP là 192.168.1.15.

1.2. Giới thiệu về DNS Server

DNS Server là một loại máy chủ dùng để quản lý và xử lý các tên miền thực hiện các bản ghi liên quan của chúng. DNS Server là thành phần chính thực hiện giao thức DNS và cung cấp các dịch vụ phân giải tên miền cho máy chủ và máy khách web trên mạng dựa trên IP. DNS Server dùng để định vị và phân phối các trang web cho người dùng cuối qua Internet, máy chủ DNS được phát triển trên phần cứng thông thường nhưng chạy phần mềm DNS chuyên dụng. Nó luôn được kết nối với Internet.

DNS Server dùng để chứa cơ sở dữ liệu bao gồm các địa chỉ IP ứng với tên miền nhất định được gọi là bản ghi DNS. Nó thực hiện chức năng cơ bản nhất là phân giải tên miền thành địa chỉ IP tương ứng. Trong quá trình phân giải tên miền thì kết quả tìm kiếm nếu có trong các bản ghi DNS thì tên miền được trả về ứng với địa chỉ IP của nó. Nếu tên miền không được đăng ký hoặc thêm vào máy chủ DNS đó, truy vấn sẽ được chuyển đến các máy chủ DNS khác cho đến khi tìm thấy bản ghi tên miền.

Phần mềm DNS Server nổi tiếng nhất là BIND hoàn toàn miễn phí và được phân phối với các hệ thống Linux. Đối với các hệ thống sử dụng Microsoft thì Microsoft DNS là một phần mềm phổ biến của Windows Server.

1.3. Các loại DNS Server

Tất cả các máy chủ DNS thuộc một trong 4 loại DNS Server sau:

  • Recursive resolver
  • Root nameserver
  • TLD nameserver
  • Authoritative nameserver

Khi chúng ta thực hiện tra cứu DNS thì các máy chủ này sẽ phối hợp với nhau để hoàn thành nhiệm vụ cung cấp IP cho tên miền mà chúng ta tìm kiếm.

1.3.1. Giới thiệu về recursive resolver

Một recursive resolver là điểm dừng đầu tiên trong quá trình truy vấn DNS. Nó hoạt động như một cầu nối trung gian giữa máy client và DNS nameserver.

Sau khi nhận được truy vấn DNS từ một client web thì recursive resolver sẽ phản hồi với dữ liệu được lưu trong bộ nhớ cache hoặc gửi yêu cầu đến root nameservers tiếp theo là đến TLD nameservers và cuối cùng đến authoritative nameserver.

Sau khi nhận được phản hồi từ authoritative nameserver chứa địa chỉ IP được yêu cầu, recursive resolver sẽ gửi phản hồi cho Client.

Trong quá trình này, recursive resolver sẽ lưu trữ thông tin nhận được từ authoritative nameserver. Khi một Client yêu cầu địa chỉ IP của một tên miền giống với client trước yêu cầu thì recursive resolver sẽ cung cấp các bản ghi được yêu cầu từ bộ nhớ cache của nó. Bỏ qua quá trình hỏi root nameservers.

1.3.2. Giới thiệu về Root nameservers

Trên thế giới hiện tại có 13 Root nameservers DNS. Các Root nameservers DNS này sẽ chứa các bản ghi gồm toàn bộ các thông tin về tên miền cùng với địa chỉ IP ứng với tên miền đó. Đây cũng chính là điểm dừng đầu tiên trong quá trình phân giải DNS.

Root nameservers chấp nhận truy vấn của recursive resolver gồm một tên miền và thực hiện trả lời bằng cách hướng recursive resolver đến TLD nameservers dựa trên phần mở rộng của tên miền đó [.com, .vn, .net, .org,...]. Các Root nameservers này được giảm sác và theo dõi bỡi Internet Corporation for Assigned Names and Numbers [ICANN].

Lưu ý: Có 13 Root nameservers nhưng có nhiều bản sao của mỗi loại trên toàn thế giới sử dụng định tuyến Anycast để cung cấp các trả lời nhanh chóng.

Tên của DNS-ServerĐịa chỉ IPv4Địa chỉ IPv6Nhà điều hành
A 198.41.0.4 2001:503:ba3e::2:30 VeriSign
B 192.228.79.201 2001:478:65::53 USC-ISI
C 192.33.4.12 2001:500:2::c Cogent Communications
D 199.7.91.13 2001:500:2d::d University of Maryland
E 192.203.230.10 NASA
F 192.5.5.241 2001:500:2f::f ISC
G 192.112.36.4 U.S. DoD NIC
H 128.63.2.53 2001:500:1::803f:235 US Army Research Lab
I 192.36.148.17 2001:7FE::53 Autonomica
J 192.58.128.30 2001:503:c27::2:30 VeriSign
K 193.0.14.129 2001:7fd::1 RIPE NCC
L 199.7.83.42 2001:500:3::42 ICANN
M 202.12.27.33 2001:dc3::35 WIDE Project

1.3.3. Giới thiệu về TLD nameservers

TLD nameservers dùng để duy trì thông tin cho tất cả các tên miền có chung một phần mở rộng như chúng ta đã nói bên trên [.com, .vn, .net, .org,...].

Ví dụ: Trên trình duyệt web chúng ta thực hiện gõ vào thanh tìm kiếm google.com khi nhận được phản hồi từ Root nameservers thì recursive resolver sẽ gửi truy vấn đến TLD nameservers. Tại đây chúng ta nhận được câu trả lời chỉ cách chúng ta đến máy chủ tên có thẩm quyền cho tên miền có phần mở rộng là .com .

Việc quản lý các máy TLD nameservers bởi Internet Assigned Numbers Authority [IANA], một chi nhánh của ICANN. IANA chia các máy chủ TLD thành hai nhóm chính:

  • Các tên miền cấp cao chung: Đây là các tên miền không cụ thể theo quốc gia, một số TLD chung được biết đến nhiều nhất bao gồm .com, .org, .net, .edu và .gov.
  • Tên miền cấp cao nhất của mã quốc gia: Chúng bao gồm bất kỳ tên miền nào dành riêng cho một quốc gia hoặc tiểu bang. Ví dụ bao gồm .vn, .uk, .us, .ru và .jp.

Khi recursive resolver nhận được phản hồi từ TLD nameservers, phản hồi đó sẽ hướng recursive resolver đến authoritative nameserver. Đây chính là bước cuối cùng mà recursive resolver sẽ tìm được tìm địa chỉ IP cần tìm kiếm.

Authoritative nameserves là nơi chứa thông tin cụ thể của các tên miền như là: google.com và nó có thể cung cấp cho recursive resolver địa chỉ IP của máy chủ đó được tìm thấy trong bản ghi DNS. Nếu như tên miền có bản ghi CNAME [alias] nó sẽ cung cấp cho recursive resolver với một miền alias mà tại đây recursive resolver sẽ phải thực hiện tra cứu DNS hoàn toàn mới để tạo một bản ghi từ authoritative nameserver khác.

Ví dụ: Sau khi tìm hiểu khái niệm về Recursive resolver, Root nameserver, TLD nameserver, Authoritative nameserver chúng ta thực hiện xác định 4 loại Server khi truy cập một webste [ví dụ: www.kenh24.vn] chúng ta thực thi lệnh sau:

[root@localhost ~]# dig +trace www.kenh24.vn

;  DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7  +trace www.kenh24.vn
;; global options: +cmd
.			86871	IN	NS	a.root-servers.net.
.			86871	IN	NS	b.root-servers.net.
.			86871	IN	NS	c.root-servers.net.
.			86871	IN	NS	d.root-servers.net.
.			86871	IN	NS	e.root-servers.net.
.			86871	IN	NS	f.root-servers.net.
.			86871	IN	NS	g.root-servers.net.
.			86871	IN	NS	h.root-servers.net.
.			86871	IN	NS	i.root-servers.net.
.			86871	IN	NS	j.root-servers.net.
.			86871	IN	NS	k.root-servers.net.
.			86871	IN	NS	l.root-servers.net.
.			86871	IN	NS	m.root-servers.net.
.			86871	IN	RRSIG	NS 8 0 518400 20191005170000 20190922160000 59944 . QrWG/QmL8Ia6xVHtrRudwauffTIwNvDAN3s3VNP9ERJS4/+bUVVloU2Y uiuYrZwdKAClp9VFk41uaUeX0aDMD4uEZhbkNte5pC+TD6+BdX00G59s 0ihXn4k7EKZUkVNYGR2SX5WvLvmSNx0jj3Kfygk55a83EZuT0QeZxgwM 7qt6zZfPCO4VClGe3i7K61mP+cDA/t5vHWgTPnQXdUsVE9w1Xz25OlhU DO6tFwvI4tGC1sB+hbixi4IaVRj4EA/HF1WNXMuyRLsBibq0inPlDser d4biK1UzP0IaYn9sjOECpC145b9g8suXGnyRjMMt8YWz/F4A7h8k12Rd 2T56Zg==
;; Received 525 bytes from 8.8.4.4#53[8.8.4.4] in 21 ms

vn.			172800	IN	NS	a.dns-servers.vn.
vn.			172800	IN	NS	b.dns-servers.vn.
vn.			172800	IN	NS	c.dns-servers.vn.
vn.			172800	IN	NS	d.dns-servers.vn.
vn.			172800	IN	NS	e.dns-servers.vn.
vn.			172800	IN	NS	f.dns-servers.vn.
vn.			172800	IN	NS	g.dns-servers.vn.
vn.			86400	IN	DS	3260 8 1 913C652B4006DEAC045B945F4FFCBC1065645421
vn.			86400	IN	DS	3260 8 2 5A58C19AF266077FFE16C2668812796FA8193661AF569DBCEB177F91 1B5E6167
vn.			86400	IN	RRSIG	DS 8 1 86400 20191006050000 20190923040000 59944 . Mi1EEOM60ItP4PYWwSW4j2ngtTcEt4HGZ4ffZFv5uCWoS//3+FioZwCY 1Pl1DBgLDs2Nq6UrA76WWI8QhwhQMQQbLv6xx2fB9mcOvgZRFM5At+cE 8Txd0fBikk0AqTvDP0G/w5Fo5LHX+QmF4rJWYv7Wsf4/FXogs4TyliLt fEtX+6U9DqfwzAJQSDyoeFFAmOcE3muVbF+Pg3uwaHqKI4rDrfUF9LTK BthZH3fStYuJZ7jJlWUALsi9y2G+Fo6U4mYJfrApi3ePAPpwEC6W9iuQ HBt4rm7ca0u0+SWptHmCYhjK+i37z036XNbbMLiQ+N87y62r2ny5Tvat 8xvwuQ==
;; Received 817 bytes from 192.5.5.241#53[f.root-servers.net] in 69 ms

kenh24.vn.		43200	IN	NS	ns7.synerfy.vn.
kenh24.vn.		43200	IN	NS	ns8.synerfy.vn.
kenh24.vn.		43200	IN	NS	ns6.synerfy.vn.
VB8HCP5TJ2C2F9ME3Q5PDEH49JR1UKD1.vn. 5400 IN NSEC3 1 1 5 4B433A97 VFARF57JMG471JFVTKQ6AGHOBIEIFH0I NS SOA RRSIG DNSKEY NSEC3PARAM
VB8HCP5TJ2C2F9ME3Q5PDEH49JR1UKD1.vn. 5400 IN RRSIG NSEC3 8 2 5400 20191018101306 20190918092133 21051 vn. EdE5F7X/+0ov07j2jsfFDVSqHRFnQWbl9k+GpCNybDa+BVy3vHGj7+tj FMIxWO3rsS8zzYSo6JEAJetVM0qR30oePT5SCk8R4MS4fdM8i1EqnBwW xj9HQnlTGGcpiJyfNsRq3+/iil6DWmG/6qhvhCiRib2EN+mT8QHsMODZ 6eU=
SA0CSOFPRD5M19IH9KVL1PI1LCPSB9U8.vn. 5400 IN NSEC3 1 1 5 4B433A97 SD1VP058UMTUPH5R4NH9GPTU90CT783L NS DS RRSIG
SA0CSOFPRD5M19IH9KVL1PI1LCPSB9U8.vn. 5400 IN RRSIG NSEC3 8 2 5400 20191001074308 20190901072034 21051 vn. bvGOVgJhaSBJgv6DfkZObfEOicrCAT3ya3C2Rvx63FfYlGaC4txRzk3q DdgQeLSOapCNYnYyBP6zJryZcjNXUAebfgNvpcRwyqhzrcLMv9kgG/fR 1Chnz8Kf/AJICKKadvHJ+p7U0/+8goUHv8nOJ/g8zRHANbXof/ZWYg4V /NI=
;; Received 595 bytes from 203.119.68.105#53[f.dns-servers.vn] in 10 ms

www.kenh24.vn.		3600	IN	A	222.255.27.165
kenh24.vn.		3600	IN	NS	ns6.synerfy.vn.
kenh24.vn.		3600	IN	NS	ns7.synerfy.vn.
kenh24.vn.		3600	IN	NS	ns8.synerfy.vn.
;; Received 168 bytes from 173.193.24.114#53[ns6.synerfy.vn] in 208 ms

Qua kết quả trên chúng ta thấy khi truy vấn một URL từ trình duyệt web thì chúng sẽ thực hiện các bước sau:

  • Bước 1: Khi truy vấn URL [www.kenh24.vn] trên Client thì recursive resolver sẽ là cầu nối trung gian giữa máy client và DNS nameserver.

Theo kết quả trên:

;; Received 525 bytes from 8.8.4.4#53[8.8.4.4] in 21 ms
  • Bước 2: Recursive resolver thực hiện truy vấn Root nameserver cho [www.kenh24.vn].

Chúng ta được kết quả sau:

;; Received 817 bytes from 192.5.5.241#53[f.root-servers.net] in 69 ms
  • Bước 3: Root nameserver sẽ chỉ dẫn recursive resolver của chúng ta đến TLD nameserver của tên miền .vn.

Kết quả tìm kiếm TLD nameserver:

;; Received 595 bytes from 203.119.68.105#53[f.dns-servers.vn] in 10 ms
  • Bước 4: Recursive resolver của chúng ta truy vấn lên TLD nameserver .vn tiếp theo nó sẽ được giới thiệu tới Authoritative nameserver nơi chứa thông tin cụ thể của tên miền [www.kenh24.vn].

Kết quả xác định Authoritative nameserver:

;; Received 168 bytes from 173.193.24.114#53[ns6.synerfy.vn] in 208 ms

Sau khi recursive resolver truy vấn các Authoritative nameserver cho www.kenh24.vn và nhận câu trả lời thì recursive resolver sẽ lưu trữ câu trả lời trong khoảng thời gian tồn tại [TTL] được chỉ định trong cấu hình của chúng ta.

Đây là chính quá trình diễn ra sau khi chúng ta nhập một URL vào trình duyệt web.

2. Cài đặt DNS Server

Trong bài này chúng ta cần chuẩn bị 3 máy sau để tiến hành cài đặt DNS Server:

  • Primary DNS Server:

    Operating System: CentOS 7 core
    Hostname: primarydns.blogd.local
    IP Address: 10.0.0.1
    
  • Secondary DNS Server:

    Operating System: CentOS 7 cor
    Hostname: secondarydns.blogd.local
    IP Address: 10.0.0.2 
    
  • Client:

    Operating System: CentOS 6.5 desktop
    Hostname: clientdns.blogd.local
    IP Address: 10.0.0.3
    

Trên Primary DNS Server:

Bước 1: Đầu tiên chúng ta tiến hành cài đặt gói bind bằng cách chạy lệnh yum như sau:

[root@primarydns ~]# yum -y install bind bind-utils
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.viethosting.com
 * extras: mirrors.viethosting.com
 * updates: mirrors.viethosting.com
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 32:9.9.4-74.el7_6.2 will be installed
--> Processing Dependency: bind-libs = 32:9.9.4-74.el7_6.2 for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: python-ply for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: policycoreutils-python for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: policycoreutils-python for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: liblwres.so.90[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: libisccfg.so.90[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: libisccc.so.90[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: libisc.so.95[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: libdns.so.100[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: libbind9.so.90[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
---> Package bind-utils.x86_64 32:9.9.4-74.el7_6.2 will be installed
--> Running transaction check
...

Đặc biệt trong gói bind sẽ chứa file named.root lưu trữ thông tin của 13 root server nơi chứa các bản ghi gồm toàn bộ các thông tin về tên miền cùng với địa chỉ IP ứng với tên miền đó.

Tiếp theo chúng ta cần thực hiện cấu hình Primary Name Server chúng ta sử dụng trình soạn thảo văn bản vi để chỉnh sửa file cấu hình chính tên là named.conf [/etc/named.conf]:

[root@primarydns ~]# vi /etc/named.conf
//
// 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.
//
// See the BIND Administrator's Reference Manual [ARM] for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        listen-on port 53 { 127.0.0.1; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; };

        /*
         - 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;

        /* 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";
};

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

Bước 2: Các thông tin cấu hình DNS chúng ta cần thêm các thông tin vào nằm trong phần option:

options {
        listen-on port 53 { 127.0.0.1; 10.0.0.1; }; # 10.0.0.1 la dia chi ip cua primary DNS Server
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; 10.0.0.0/8; }; # day dia chi nay cho phep truy van DNS server

        /*
         - 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; # chuyen tu yes thanh no khi DNS Server fail resolve internet
        dnssec-validation yes; # chuyen tu yes thanh no khi DNS Server fail redsolve internet

        /* 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";
};

Lưu ý: Các file cấu hình có directory là /var/named

Trong đó:

  • listen-on port 53: Đây là địa chỉ ip của máy tính với port đang nghe truy vấn DNS. Chỉ cần thêm địa chỉ ip của máy DNS server là được, còn 127.0.0.1 thì có thể giữ nguyên hoặc bỏ đi.
  • allow-query: Cho phép những địa chỉ truy vấn. Nếu muốn tất cả đều có thể truy vấn được thì có thể đặt là {any;}.

Khi thông tin mà DNS Server không tìm thấy thì sẽ truy vấn lên 13 root server lớn của thế giới chúng ta có thể thấy zone "." trong file named.conf

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

Thông tin của các root server này được chứa trong file named.ca:

[root@primarydns ~]# cat /var/named/named.ca
;  DiG 9.9.4-RedHat-9.9.4-38.el7_3.2  +bufsize=1200 +norec @a.root-servers.net
; [2 servers found]
;; global options: +cmd
;; Got answer:
;; ->>HEADER Running transaction check
---> Package bind.x86_64 32:9.9.4-74.el7_6.2 will be installed
--> Processing Dependency: bind-libs = 32:9.9.4-74.el7_6.2 for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: python-ply for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: policycoreutils-python for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: policycoreutils-python for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: liblwres.so.90[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
--> Processing Dependency: libisccfg.so.90[][64bit] for package: 32:bind-9.9.4-74.el7_6.2.x86_64
...

Tiếp theo chúng ta cần thực hiện cấu hình Secondary Name Server chúng ta sử dụng trình soạn thảo văn bản vi để chỉnh sửa file cấu hình chính tên là named.conf [/etc/named.conf]:

//
// See the BIND Administrator's Reference Manual [ARM] for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        listen-on port 53 { 127.0.0.1; 10.0.0.2; }; # 10.0.0.2 la dia chi cua DNS slave
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; 10.0.0.0/8; };

        /*
         - 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;

        /* 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";
};

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

Tiếp theo chúng ta cần bổ sung vào file cấu hình Secondary Name Server phần zone "slavethuan"zone "slavenghich" như bên dưới:

zone "blogd.server" IN {
        type slave;
        file "slave.thuan";
        masters {10.0.0.1;};
};

zone "0.0.10.in-addr.arpa" IN {
        type slave;
        file "slave.nghich";
        masters {10.0.0.1;};
};

Bước 2: Sau khi đã chỉnh sửa file cấu hình trên Secondary DNS Server chúng ta tiếp tục quay lại Primary DNS Server bổ sung thông tin allow-transfer vào file /etc/named.conf như bên dưới:

options {
        listen-on port 53 { 127.0.0.1; 10.0.0.1; }; # 10.0.0.1 la dia chi ip cua primary DNS Server
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; 10.0.0.0/8; }; # day dia chi nay cho phep truy van DNS server
        allow-transfer { localhost; 10.0.0.2; }; # dia chi DNS slave
        /*
         - 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; # chuyen tu yes thanh no khi DNS Server fail resolve internet
        dnssec-validation yes; # chuyen tu yes thanh no khi DNS Server fail redsolve internet

        /* 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";
};

Bước 3: Khi chúng ta đã chỉnh sửa file cấu hình trên Primary DNS ServeSecondary DNS Server thì chúng ta thực hiện transfer các tập tin recordbằng cách chạy lệnh sau:

[root@primarydns ~]# rndc reload
server reload successful
[root@secondarydns ~]# rndc reload
server reload successful

Tiếp theo chúng ta khởi động lại named trên cả Primary DNS ServeSecondary DNS Server:

[root@primarydns ~]# systemctl restart name
[root@secondarydns ~]# systemctl restart named

Thực hiện kiểm tra trên Primary DNS Serve:

[root@primarydns ~]# cd /var/named/
[root@primarydns named]# ls -l
total 24
drwxrwx---. 2 named named   23 Sep 10 15:52 data
drwxrwx---. 2 named named   31 Sep 13 20:55 dynamic
-rw-r-----. 1 root  named 2281 May 22  2017 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
-rw-r--r--. 1 root  root   174 Sep 10 16:27 phangiainghich
-rw-r--r--. 1 root  root   412 Sep 10 16:26 phangiaithuan
drwxrwx---. 2 named named    6 Jul 30 00:21 slaves

Và thực hiện trên Secondary DNS Server:

[root@secondarydns ~]# cd /var/named/
[root@secondarydns named]# ls -l
total 24
drwxrwx---. 2 named named   23 Sep 13 20:55 data
drwxrwx---. 2 named named   60 Sep 13 20:56 dynamic
-rw-r-----. 1 root  named 2281 May 22  2017 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
-rw-r--r--. 1 named named  253 Sep 13 20:55 slave.nghich
drwxrwx---. 2 named named    6 Jul 30 00:21 slaves
-rw-r--r--. 1 named named  527 Sep 13 20:55 slave.thuan

Sau khi kiển tra chúng ta thấy đã có file slaves trên cả 2 DNS Server.

Tiếp theo chúng ta thực hiện sửa thông tin DNS trên clientdns về IP=10.0.0.2.

[root@clientdns ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
HWADDR=00:0C:29:54:B7:2A
TYPE=Ethernet
UUID=c5f55314-5787-459b-83ce-be18b56e1e7e
ONBOOT=yes
NM_CONTROLLED=yes
BOADCAST=10.255.255.255
IPADDR=10.0.0.3
NETMASK=255.0.0.0
NETWORK=10.0.0.0
GATEWAY=10.0.0.1
DNS1=10.0.0.2
[root@clientdns ~]# systemctl restart network

Mở trình duyệt web vào truy cập thành công web nhu sau:

Trên clientdns chúng ta sử dụng lệnh nslookup để kiểm tra thông tin Slave DNS:

[root@clientdns ~]# nslookup
> www.blogd.server
Server:		10.0.0.2
Address:	10.0.0.2#53

www.blogd.server	canonical name = server1.blogd.server.
Name:	server1.blogd.server
Address: 10.0.0.1

3. DNS Open-resolver

DNS Open-resolver là một DNS Server sẵn sàng giải quyết các vấn đề tra cứu DNS đệ quy cho bất kỳ ai trên internet. DNS Open-resolver có thể bị lạm dụng cho các cuộc tấn công DDoS.

Để kiểm tra xem DNS server có được định cấu hình cho phép truy vấn đệ quy hay không, chúng ta có thể sử dụng công cụ dig để gửi yêu cầu DNS cho tên miền google.com đến địa chỉ IP của DNS Server Primary 10.0.0.1 và đến địa chỉ DNS Server Secondary 10.0.0.2:

[root@primarydns ~]# dig google.com @10.0.0.1

;  DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7  google.com @10.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADERHEADERHEADERHEADERHEADER

Bài Viết Liên Quan

Chủ Đề