Skip to main content

Hướng dẫn cài DNS Server lên Red Hat CentOS 7

DNS Server là một máy chủ được cài đặt dịch vụ DNS (hay Domain Name System), là Hệ thống tên miền được phát minh vào năm 1984 cho Internet. Mục đích đạt được đó là gắn kết giữa địa chỉ IP toàn số (ví dụ 123.234.012.3) và một cái tên miền (ví dụ voduy.com) có giá trị trên toàn thế giới hoặc trong một phạm vi cục bộ nào đó là tùy do người cài đặt DNS Server cấu hình.

Phân chia:

DNS Server được chia ra nhiều cấp độ dựa trên phạm vi hoạt động và mục đích hướng đến phục vụ nhóm khách hàng nào của con máy chủ DNS Server đó. Tựu chung thì chúng cũng hoạt động như nhau, đó là phân giải tên miền ra IP hoặc ngược lại IP ra tên miền.

Cấp độ 1: ở vị trí cao nhất, phạm vi hoạt động của DNS Server này là trên toàn thế giới, khách hàng phục vụ nhắm đến là toàn nhân loại. Đây là 13 DNS ROOT Server được đặt tại US, nhiệm vụ của chúng đó là chỉ ra đâu là cặp DNS NameServer cấp độ 2 của một tên miền nào đó đã đăng ký với chúng.
DNS ROOT Server thường có dạng A.ROOT-SERVERS.NET, B.ROOT-SERVERS.NET, H.ROOT-SERVERS.NET...

Cấp độ 2: 1 Cặp (hoặc hơn 3-4) DNS NameServer được lập ra nhằm phân giải một hoặc một số tên miền nào đó cụ thể. NameServer có dạng ns1.your-domain.gq, ns2.your-domain.gq... Các NameServer này thường có đối tượng phục vụ cần nhắm đến là các Open DNS Server cấp độ 3

Cấp độ 3: là các Open DNS Server được mở ra ví dụ như 8.8.8.8, 8.8.4.4... nhằm mục đích trung gian đi hỏi một tên miền dùm cho các khách hàng còn lại của thế giới. Chúng thường là các IP dễ nhớ để có thể add vào máy của client đầu cuối mà sử dụng.

Cấp độ 4: là các DNS Server còn lại của các quản trị viên lập ra để chạy trong nội bộ mạng LAN của họ, giúp phân giải các máy chủ dịch vụ của họ trong hệ thống cục bộ

Nguyên tắc hoạt động DNS:
Ví dụ một hoạt động sử dụng DNS của Client mình có thể mô tả như sau:

Bước 1: Đầu tiên Client không biết voduy.com trỏ về IP nào, nó quyết định hỏi 8.8.8.8 là 1 DNS Server được gắn sẳn trên card mạng của nó. Gói tin sẽ được chuyển đến địa chỉ 8.8.8.8 trở thành một truy vấn.

Bước 2: cứ giả sử rằng chính 8.8.8.8 cũng không biết voduy.com hiện trỏ về IP nào, nó sẽ đi đến quyết định hỏi 13 DNS ROOT Server được đặt tại US rằng voduy.com dùng cặp NameServer nào để phân giải tên miền, gói tin được chuyển đến ví dụ H.ROOT-SERVERS.NET

Bước 3: tại H.ROOT-SERVERS.NET, tất nhiên 13 DNS ROOT Server không hề có thông tin voduy.com được trỏ về IP nào mà nó chỉ biết mỗi một điều voduy.com đã được đăng ký dưới cặp NameServer nào để phân giải IP. Nó sẽ đọc danh sách các cặp NameServer của voduy.com cho 8.8.8.8 biết. Ví dụ là cặp josh.ns.cloudflare.comiris.ns.cloudflare.com

Bước 4: DNS Server 8.8.8.8 đã có tên cặp NameServer trên nó quyết định hỏi xem josh.ns.cloudflare.com hoặc con còn lại voduy.com trỏ IP về đâu

Bước 5: DNS Server josh.ns.cloudflare.com hoặc iris.ns.cloudflare.com sẽ trả lời dựa theo bản ghi mà người quản trị voduy.com đã ghi cho nó, gửi cho 8.8.8.8 biết IP của voduy.com trỏ về đâu, ví dụ voduy.com trỏ về 104.24.96.135

Bước 6: DNS Server 8.8.8.8 biết được voduy.com trỏ về 104.24.96.135 liền trả lời lại truy vấn của client rằng voduy.com trỏ về 104.24.96.135, client sẽ biết được voduy.com hiện đang ở 104.24.96.135 nó gửi gói tin đến đó để truy vấn.

Bước 7: DNS Server 8.8.8.8 biết được voduy.com trỏ về 104.24.96.135 nó sẽ ghi lại vào cache, lần tiếp theo có client khác mà hỏi voduy.com trỏ về đâu, nó sẽ sẳn sàng báo luôn là về 104.24.96.135. Còn nếu sau một thời gian nó xóa cache đi, nó lại quên mất IP đó nó sẽ lặp lại từ bước 2, đi hỏi 13 DNS ROOT Server.

Bạn có thể sử dụng tool online Dnswatch để xem quá trình truy tìm IP của một domain.

Bạn vào dnswatch.info gõ tên domain ví dụ voduy.com vào và nhấn truy vấn Resolve sẽ thấy log hoạt động của tool giống như mình đã mô tả trong ví dụ trên:

Searching for voduy.com. A record at H.ROOT-SERVERS.NET. [198.97.190.53] ...took 88 ms
Searching for voduy.com. A record at c.gtld-servers.net. [192.26.92.30] ...took 14 ms
Searching for voduy.com. A record at josh.ns.cloudflare.com. [173.245.59.126] ...took 5 ms

A record found: 104.24.96.135 
A record found: 104.24.97.135
Domain	Type	TTL	Answer
voduy.com.	NS	172800	josh.ns.cloudflare.com.
voduy.com.	NS	172800	iris.ns.cloudflare.com.
voduy.com.	A	300	104.24.96.135
voduy.com.	A	300	104.24.97.135

Cài đặt BIND (hay NAMED) làm DNS Server:
Như bạn đã thấy ở trên, cũng là DNS Server nhưng mỗi một nơi DNS Server sẽ đóng một vai trò khác nhau. Ở khuôn khổ bài viết này mình sẽ hướng dẫn bạn có thể cài một DNS Server với nhiệm vụ NameServer phân giải tên miền ra IP với phần mềm BIND (Berkeley Internet Name Distributed) hoặc tên là named, là phần mềm DNS Server được sử dụng nhiều nhất hiện nay trên thế giới. 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,…

Chuẩn bị hệ điều hành:

Trước khi cài đặt Named lên CentOS 7 xin bạn nhớ kỹ chuẩn bị sẳn một môi trường như sau trên hệ điều hành CentOS 7 này:
1. Đặt hostname cụ thể đây là server gì (xem hướng dẫn) ví dụ đây mình dùng hostname ns1.your-domain.gq
2. Set Date ngày giờ hệ điều hành cho đúng (xem hướng dẫn)
3. Disable SElinux để trong quá trình thực hành không bị phát sinh nhiều lỗi lạ (xem hướng dẫn)
4. Update System hệ thống cập nhật ở trạng thái mới nhất (xem hướng dẫn)
5. Firewall đã allow port 53/udp để công khai dịch vụ DNS Server (xem hướng dẫn)
Nếu bạn muốn làm nhanh chỉ để test thì có thể tạm Disable Firewall trên CentOS 7:

systemctl stop firewalld
service iptables stop


Cài đặt NAMED:

Sau khi đã chuẩn bị xong bạn tiến hành cài named lên CentOS 7:

yum -y install bind bind-utils bind-libs

Tạo thư mục sao lưu lại cấu hình named hiện đang có:

mkdir -p /backupconfig
cd /backupconfig
mkdir named

Sao lưu lại:

service named stop > /dev/null 2>&1
cp /etc/named.conf /backupconfig/named >/dev/null 2>&1

Cấu hình NAMED:

Tiếp theo ta cấu hình /etc/named.conf bằng file ở link nhanh sau

wget http://1.voduy.com/c/centos7/named/named.conf -O /etc/named.conf
chown root:named /etc/named.conf
chmod 640 /etc/named.conf
chkconfig named on
service named start

Hoặc bạn tạo file /etc/named.conf với nội dung như sau:

nano /etc/named.conf

options {
    directory		"/var/named";
    dump-file		"/var/named/data/cache_dump.db";
    pid-file		"/var/run/named/named.pid";
    statistics-file	"/var/named/data/named_stats.txt";
    version		"get lost";
    allow-transfer	{"none";};
    recursion		no;

};

include "/etc/rndc.key";

(Hai cách làm trên đều như nhau, nội dung file là không khác)

Vậy là xem như bạn đã cài xong DNS Server, chỉ có điều DNS Server này chưa có bản ghi nào nói về domain nào cả, tiếp theo mình sẽ tạo bản ghi cho nó phân giải cho domain của mình là your-domain.gq

Sử dụng DNS Server:

Ta thêm domain vào DNS SERVER bằng cách chèn thêm dưới file /etc/named.conf

nano /etc/named.conf

options {
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    pid-file        "/var/run/named/named.pid";
    statistics-file "/var/named/data/named_stats.txt";
    version     "get lost";
    allow-transfer  {"none";};
    recursion       no;
 
};
 
include "/etc/rndc.key";
zone "your-domain.gq" {type master; file "/etc/named/your-domain.gq.db";};

Và thêm cấu hình bản ghi IP cho domain your-domain.gq trong file /etc/named/your-domain.gq.db

nano /etc/named/your-domain.gq.db

$TTL 14400
@    IN    SOA    ns1.your-domain.gq.    root.your-domain.gq. (
                                            2016082403
                                            7200
                                            3600
                                            1209600
                                            180 )

ns1	14400	IN	A		1.1.1.7
ns2	14400	IN	A		1.1.1.7
@	14400	IN	NS		ns1.your-domain.gq.
@	14400	IN	NS		ns2.your-domain.gq.
@	14400	IN	A		1.1.1.7
mail	14400	IN	A		1.1.1.7
www	14400	IN	A		1.1.1.7
pop	14400	IN	A		1.1.1.7
ftp	14400	IN	A		1.1.1.7
@	14400	IN	MX	10	mail.your-domain.gq.
@	14400	IN	TXT		"v=spf1 a mx ip4:1.1.1.7 ?all"
_domainkey	14400	IN	TXT		"t=y; o=~;"
mail._domainkey	14400	IN	TXT		"k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxsEAma123xgiE9MdN8iDfmdOhBXS4Jv3glAjXGiG2OVGAXkwNZwPg4TIAd5+nmljdXqqBP2Ai/mgusNKH//tLxrTfLX0cwgcf409otjFa/GTD2dhhQZc2jmUDgSYatpT4ZG1NvDmgohw3WFwxg32KPCiZ3j/6ckQ8E9WnJTWsmQIDAQAB"

Giải thích các thông số trên cho bạn hiểu:
Điều 1: Thông báo với thế giới rằng subdomain ns1.your-domain.gq và ns2.your-domain.gq trỏ về IP nào đó ví dụ 1.1.1.7

ns1	14400	IN	A		1.1.1.7
ns2	14400	IN	A		1.1.1.7

Điều 2: Thông báo với thế giới rằng domain your-domain.gq sẽ dùng cặp nameserver ns1.your-domain.gq và ns2.your-domain.gq để tự phân giải chính mình tại IP tương ứng định nghĩa ở Điều 1

@	14400	IN	NS		ns1.your-domain.gq.
@	14400	IN	NS		ns2.your-domain.gq.

Điều 3: Thông báo với thế giới rằng domain your-domain.gq và cả www.your-domain.gq mail.your-domain.gq pop.your-domain.gq ... sẽ trỏ về 1.1.1.7

@	14400	IN	A		1.1.1.7

Điều 4: Thông báo với thế giới rằng domain your-domain.gq sẽ dùng mail tại Mail Server có địa chỉ mail.your-domain.gq mà IP của mail.your-domain.gq đã được định nghĩa ở Điều 3

@	14400	IN	MX	10	mail.your-domain.gq.

Điều 5: Thông báo với thế giới rằng domain your-domain.gq sẽ dùng mail tại Mail Server có địa chỉ 1.1.1.7 nên mail từ IP khác 1.1.1.7 mà gửi đi dưới domain your-domain.gq này sẽ bị đánh spam:

@	14400	IN	TXT		"v=spf1 a mx ip4:1.1.1.7 ?all"

Điều 6: Thông báo với thế giới rằng domain your-domain.gq sẽ dùng domainkey cho mail, mail nào gửi từ domain your-domain.gq mà không có KEY tương ứng như dưới đây sẽ bị đánh spam

mail._domainkey	14400	IN	TXT		"k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxsEAma123xgiE9MdN8iDfmdOhBXS4Jv3glAjXGiG2OVGAXkwNZwPg4TIAd5+nmljdXqqBP2Ai/mgusNKH//tLxrTfLX0cwgcf409otjFa/GTD2dhhQZc2jmUDgSYatpT4ZG1NvDmgohw3WFwxg32KPCiZ3j/6ckQ8E9WnJTWsmQIDAQAB"

(Điều 1 đến 4 bạn có thể tìm hiểu kỹ hơn ở bài về trỏ domain)
(Điều 5 và 6 bạn có thể tìm hiểu về SPF và DKIM để biết mục đích của nó để làm gì)

Sau khi cấu hình xong tên miền và IP như bạn muốn, tiến hành chạy lại dịch vụ để named nhận bản ghi:

service named restart

Kiểm tra hoạt động DNS Server:

Kiểm tra lại bằng công cụ nslookup tại máy Windows hoặc tại chính server của bạn

TẠI WINDOWS: (ví dụ hỏi 1.1.1.7 rằng domain mail.your-domain.gq đang trỏ về đâu?)

cmd> nslookup mail.your-domain.gq 1.1.1.7
Server:  UnKnown
Address:  1.1.1.7

Name:mail.your-domain.gq
Address:  1.1.1.7

Kết quả trả lời Name: mail.your-domain.gq đang trỏ về Address: 1.1.1.7

TẠI LINUX:

[root]# nslookup mail.your-domain.gq 1.1.1.7
Server: 1.1.1.7
Address:1.1.1.7#53

Name:   mail.your-domain.gq
Address: 1.1.1.7

Kết quả trả lời Name: mail.your-domain.gq đang trỏ về Address: 1.1.1.7

Bạn có thể hỏi một số câu hỏi truy vấn khác ví dụ:
Domain your-domain.gq đang trỏ về đâu?

cmd> nslookup -type=A your-domain.gq 1.1.1.7 
Name:your-domain.gq
Address:  1.1.1.7

Mail Server của your-domain.gq tên gì?

cmd> nslookup -type=MX your-domain.gq 1.1.1.7 
your-domain.gq  MX preference = 10, mail exchanger = mail.your-domain.gq

Những IP nào được phép gửi mail đi dưới domain your-domain.gq?

cmd> nslookup -type=TXT your-domain.gq 1.1.1.7
your-domain.gq  text = "v=spf1 a mx ip4:1.1.1.7 ?all"

DKIM của domain your-domain.gq là gì?

cmd> nslookup -type=TXT mail._domainkey.your-domain.gq 1.1.1.7
mail._domainkey.your-domain.gq  text ="k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxsEAma123xgiE9MdN8iDfmdOhBXS4Jv3glAjXGiG2OVGAXkwNZwPg4TIAd5+nmljdXqqBP2Ai/mgusNKH//tLxrTfLX0cwgcf409otjFa/GTD2dhhQZc2jmUDgSYatpT4ZG1NvDmgohw3WFwxg32KPCiZ3j/6ckQ8E9WnJTWsmQIDAQAB"
Cám ơn bạn đã đọc hết bài viết, hãy bấm chia sẻ lên mạng xã hội để nhớ rằng bạn đã từng nắm được kiến thức do bài viết này cung cấp rồi:
Share

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Share