Như đã đề cập ở bài viết trước, cũng là DNS Server nhưng nếu đặt 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
) . Còn 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
Sao lưu
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ố
Đ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ì)
Restart dịch vụ
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 lại
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"