Khái niệm
– Domain Name System (DNS): phân giải tên miền thành địa chỉ IP và ngược lại – DNS sử dụng UDP/53 và TCP/53
+ UDP/53: port dùng để phục vụ các client để phân giải tên miền
+ TCP/53: port dùng để thực DNS zone transfer file giữa các DNS Server
– Các record cơ bản của DNS Server
+ Record A: phân giải tên miền sang IPv4
+ Record AAAA: phân giải tên miền sang IPv6
+ Record PTR: phân giải IP sang tên miền
+ Record NS: xác định DNS Server ở trong domain
+ Record MX: xác định Mail Server ở trong domain
+ Record CNAME: định nghĩa “bí danh” ứng với tên miền
+ Record SOA (Start of Authority): máy chủ có trách nhiệm với tên miền.
Cài đặt và cấu hình BIND cho Internal Network
Dải mạng Internal Network là: 172.16.200.0/24. Tên miền là [dinhducthanh.local]
Chuẩn bị
– Cấu hình 2 card mạng WAN và LAN cho server
root@localhost:~# vi /etc/netplan/01-netcfg.yaml
– Đổi hostname
root@localhost:~# hostnamectl set-hostname dns.dinhducthanh.local root@localhost:~# reboot
root@dns:~# hostname
dns.dinhducthanh.local
Install BIND
root@dns:~# apt -y install bind9 bind9utils
Cấu hình BIND cho Internal Network
– Cấu hình named.conf khai báo Internal Network
root@dns:~# vi /etc/bind/named.conf include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; # thêm include "/etc/bind/named.conf.internal-zones";
– Cấu hình named.conf.options
root@dns:~# vi /etc/bind/named.conf.options # add : nhập ACL cho local network acl internal-network { 172.16.200.0/24; }; options { directory "/var/cache/bind"; ..... ..... # add local network được đặt trên phần [acl] phía trên # network range bạn cho phép nhận truy vấn từ máy chủ allow-query { localhost; internal-network; }; # network range bạn cho phép chuyển các zone files cho clients # add secondary DNS servers nếu có allow-transfer { localhost; }; # add : allow recursion recursion yes; //======================================================================= // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================= dnssec-validation auto; # nếu không lắng nghe IPV6, đổi [any] thành [none] listen-on-v6 { any; }; };
– Tạo file Internal Network
root@dns:~# vi /etc/bind/named.conf.internal-zones # tạo mới # add zones cho network and domain name của bạn zone "dinhducthanh.local" IN { type master; file "/etc/bind/dinhducthanh.local.lan"; allow-update { none; }; }; zone "200.16.172.in-addr.arpa" IN { type master; file "/etc/bind/200.16.172.db"; allow-update { none; }; };
+ Về cách viết phần [*.*.*.*.in-addr.arpa], hãy viết ngược lại địa chỉ mạng của bạn như sau:
# Dải mạng 10.0.0.0/24
# địa chỉ mạng -> 10.0.0.0
# phạm vi mạng -> 10.0 .0.0 – 10.0.0.255
# cách viết -> 0.0.10.in-addr.arpa
# Dải mạng 192.168.1.0/24
# địa chỉ mạng -> 192.168.1.0
# phạm vi mạng -> 192.168.1.0 – 192.168.1.255
# cách viết -> 1.168.192.in-addr.arpa
– nếu bạn không sử dụng IPv6 đồng thời chặn nhật ký liên quan đến IPv6, có thể thay đổi. set BIND chỉ sử dụng IPv4
root@dns:~# vi /etc/default/named # add OPTIONS="-u bind -4"
Cấu hình Zone Files
– Sau khi Cấu hình BIND cho Internal Network xong. Bước tiếp theo cần cấu hình Zone Files cho từng Zone Internal Network đã được set trong [named.conf]
– Tạo các file forward zone mà server phân giải IP address từ Domain name. Ví dụ này sử dụng Internal network [172.16.200.0/24], Domain name [dinhducthanh.local]. Lưu ý không copy phần comment [#] vào cấu hình của file.
root@dns:~# vi /etc/bind/dinhducthanh.local.lan $TTL 86400 @ IN SOA dns.dinhducthanh.local. root.dinhducthanh.local. ( # Sử dụng serial number bất kỳ # recommended : [YYYYMMDDnn] (update date + number) 2024050901 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) # xác định Name Server IN NS dns.dinhducthanh.local. # Xác định IP của Name Server IN A 172.16.200.2 # Xác định Mail Exchanger Server IN MX 10 mail.dinhducthanh.local. # Xác định từng IP address của từng hostname dns IN A 172.16.200.2 www IN A 172.16.200.3 mail IN A 172.16.200.2
– Tạo các file reverse zone mà server phân giải Domain name từ IP address. Ví dụ này sử dụng Internal network [172.16.200.0/24], Domain name [dinhducthanh.local]. Lưu ý không copy phần comment [#] vào cấu hình của file.
root@dns:~# vi /etc/bind/200.16.172.db $TTL 86400 @ IN SOA dns.dinhducthanh.local. root.dinhducthanh.local. ( 2024050901 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) # Xác định Name Server IN NS dns.dinhducthanh.local. # Xác định từng hostname của từng IP address 2 IN PTR dns.dinhducthanh.local. 3 IN PTR www.dinhducthanh.local. 2 IN PTR mail.dinhducthanh.local.
– Restart BIND to apply changes.
root@dns:~# systemctl restart named
– Kiểm tra port 53
root@dns:~# netstat -ltunp | grep 53
Kiểm tra
Kiểm tra truy vấn DNS trên server và client
Kiểm tra trên DNS server
– Thay đổi cài đặt DNS để kiểm tra truy vấn DNS.
root@dns:~# vi /etc/netplan/01-netcfg.yaml # Thay đổi địa chỉ namserver nameservers: addresses: [172.16.200.2]
root@dns:~# netplan apply
– Kiểm tra truy vấn Name and Address. Nếu [ANSWER SECTION] như kết quả là OK.
root@dns:~# dig dns.dinhducthanh.local.
....
;; ANSWER SECTION:
dns.dinhducthanh.local. 0 IN A 172.16.200.2
....
root@dns:~# dig -x 172.16.200.2
....
;; ANSWER SECTION:
2.200.16.172.in-addr.arpa. 86400 IN PTR mail.dinhducthanh.local.
2.200.16.172.in-addr.arpa. 86400 IN PTR dns.dinhducthanh.local.
....
Kiểm tra truy vấn DNS trên client
– Máy window cài đặt mạng như sau
– Sử dụng CMD để truy vấn DNS
C:\Users\client>nslookup Default Server: dns.dinhducthanh.local Address: 172.16.200.2 > dinhducthanh.local Server: dns.dinhducthanh.local Address: 172.16.200.2 Name: dinhducthanh.local Address: 172.16.200.2 > mail.dinhducthanh.local Server: dns.dinhducthanh.local Address: 172.16.200.2 Name: mail.dinhducthanh.local Address: 172.16.200.2 > www.dinhducthanh.local Server: dns.dinhducthanh.local Address: 172.16.200.2 Name: www.dinhducthanh.local Address: 172.16.200.3 > set type=NS > dinhducthanh.local Server: dns.dinhducthanh.local Address: 172.16.200.2 dinhducthanh.local nameserver = dns.dinhducthanh.local dns.dinhducthanh.local internet address = 172.16.200.2 > set type=MX > dinhducthanh.local Server: dns.dinhducthanh.local Address: 172.16.200.2 dinhducthanh.local MX preference = 10, mail exchanger = mail.dinhducthanh.local mail.dinhducthanh.local internet address = 172.16.200.2 > set type=PTR > 172.16.200.2 Server: dns.dinhducthanh.local Address: 172.16.200.2 2.200.16.172.in-addr.arpa name = dns.dinhducthanh.local 2.200.16.172.in-addr.arpa name = mail.dinhducthanh.local >