Cài đặt DNS Server trên Ubuntu 22.04: Internal Network

bởi | LPI, Ubuntu

Home » LPI » Ubuntu » Cài đặt DNS Server trên Ubuntu 22.04: Internal Network

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

Cài đặt DNS Server trên Ubuntu 22.04 Internal Network chuẩn bị
– Đổ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; };
};

Cài đặt DNS Server trên Ubuntu 22.04: Internal Network
– 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; };
};

Cài đặt DNS Server trên Ubuntu 22.04: Internal Network Tạo file Internal Network
+ 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

Cài đặt DNS Server trên Ubuntu 22.04: Internal Network forward zone
– 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.

Cài đặt DNS Server trên Ubuntu 22.04: Internal Network reverse zone
– Restart BIND to apply changes.

root@dns:~# systemctl restart named

– Kiểm tra port 53

root@dns:~# netstat -ltunp | grep 53

Cài đặt DNS Server trên Ubuntu 22.04: Internal Network grep port 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
Cài đặt DNS Server trên Ubuntu 22.04: Internal Network set client
– 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
>

Tham khảo thêm

Cài đặt ban đầu Ubuntu 22.04: Enable root user

Cài đặt ban đầu Ubuntu 22.04: Network Settings

Các Lệnh Cơ Bản Linux