Saturday, November 23, 2024

Triển khai DNS Server Master và Slave trên Ubuntu bằng Bind9

-

1. DNS Server là gì?

DNS server là một thuật ngữ tiếng Anh được hiểu là hệ thống phân giải tên miền cho Internet. Hệ thống này cho phép thiết lập tương ứng giữa địa chỉ IP và tên miền.

DNS Server hay còn được gọi là Domain Name System là một hệ thống đặt tên theo thứ tự cho máy tính, dịch vụ tham gia vào Internet. Nó liên kết nhiều thông tin đa dạng với tên miền được gán cho chúng sao cho người dùng có thể sử dụng tên miền đó để tìm hiểu các thông tin mà họ cần biết. Điều quan trọng là phải lựa chọn một tên miền có ý nghĩa cho người dùng, có liên kết với các thiết bị mạng khác để định vị và cung cấp thông tin cho người dùng trên toàn thế giới.

Hệ thống DNS server cũng có tác dụng lưu trữ các loại thông tin khác. Hệ thống này là một thành phần thiết yếu trong các chức năng của Internet, các định dạng khác như các thẻ RFID, mã số UPC, tên máy chủ và hàng loạt các định dạng khác có thể sử dụng.

Mỗi website có một tên miền hay đường dẫn URL và một địa chỉ IP khác nhau. Khi mở trình duyệt web và nhập tên website, trình duyệt sẽ đến thẳng website mà không cần phải thông qua việc nhập địa chỉ IP của trang web. Quá trình dịch tên miền thành địa chỉ IP để trình duyệt hiểu và truy cập được vào website là công việc mà DNS server thực hiện mỗi ngày.

Mỗi nhà cung cấp dịch vụ vận hành và duy trì DNS server riêng của mình, nếu một trình duyệt tìm kiếm địa chỉ của một website thì DNS server phân giải tên website này phải là DNS của chính tổ chức quản lý website đó chứ không phải của một nhà cung cấp nào khác.

DNS server là hệ thống đảm bảo cho quá trình truy cập và lưu trữ thông tin trên các website của nhà cung cấp được thuận tiện, dễ dàng phục vụ cho người dùng tìm kiếm các thông tin. Nhờ hệ thống này mà việc truy cập Internet trở lên đơn giản và dễ dàng hơn.

2. Triển khai.

2.1. Triển khai trên DNS Server Master.

Để bắt đầu cấu hình này, chúng ta cần hiểu Bind9 là dịch vụ cache server sẽ ghi nhớ những câu trả lời mỗi khi DNS Server xuất hiện truy vấn hostname và trả lời vào những lần sau. Dịch vụ này đặc biệt hữu ích trong những môi trường có kết nối Internet chậm. Bằng cách sử dụng Cache Server, bạn sẽ giảm thiểu được lưu lượng bang thông và độ trễ mỗi khi máy xuất hiện truy vấn.

Khi cài đặt gói Bind9, cấu hình mặc định của dịch vụ sẽ cho phép bạn chạy Cache Server. Tất cả những gì bạn cần làm là thêm vào địa chỉ IP của DNS Server của ISP (Internet Service Provider – nhà cung cấp dịch vụ Internet).

–  Nhập vào những dòng lệnh sau để cài đặt gói Bind9.

sudo apt-get install bind9 bind9utils bind9-doc -y

Sau đó tiến hành sửa file /etc/bind/named.conf.options, để nhanh họn bạn hãy chạy lệnh dưới.

echo '''acl goodclients {
        192.168.1.1/32;
        localhost;
        localnets;
};

options {
        directory "/var/cache/bind";

        recursion yes;
        allow-query { goodclients; };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
        forward only;
        dnssec-enable yes;
        dnssec-validation no;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};''' > /etc/bind/named.conf.options

Tiến hành Restart lại dịch vụ Bind9 để thay đổi có hiệu lực.

sudo systemctl restart bind9
sudo systemctl enable bind9

–  Chạy Command này để test Cache Server.

dig -x 127.0.0.1

Được kết quả xuất ra như sau.

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> -x 127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54277
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa.		IN	PTR

;; ANSWER SECTION:
1.0.0.127.in-addr.arpa.	0	IN	PTR	localhost.

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Nov 26 15:02:55 UTC 2022
;; MSG SIZE  rcvd: 74

Hãy chỉnh sửa DNS Server của bạn, mình đang sử dụng netplan của Ubuntu nên mình sẽ chỉnh sửa thông tin DNS trong file /etc/netplan/50-cloud-init.yaml

echo '''network:
    ethernets:
        ens192:
            addresses:
            - 192.168.13.207/23
            dhcp4: false
            gateway4: 192.168.12.5
            nameservers:
                addresses:
                - 192.168.13.207
                - 192.168.13.208
                search:
                - hoanghd.com 
    version: 2''' > /etc/netplan/50-cloud-init.yaml

Đừng quên apply nó nhé.

netplan apply

File cấu hình của DNS được đặt tại thư mục /etc/bind với địa chỉ chính xác là /etc/bind/namd.conf, kiểm tra xem đã có những dòng cấu hình bên dưới hay chưa, nếu chưa có thì tiến hành thêm vào hoặc bạn hãy chạy theo lệnh ở dưới.

echo '''include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";''' > /etc/bind/named.conf

Tiếp tục chạy lệnh dưới để chỉnh sửa file /etc/bind/named.conf.local

echo '''zone "hoanghd.com" {
        type master;
        file "/etc/bind/forward.hoanghd";
        allow-transfer { 192.168.13.208; };
        also-notify { 192.168.13.208; };
 };

zone "13.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/reverse.hoanghd";
        allow-transfer { 192.168.13.208; };
        also-notify { 192.168.13.208; };
 };''' > /etc/bind/named.conf.local

+ forward.hoanghd – File Forward Zone

+ reserve.hoanghd – File reserve

+ 192.168.13.208 – Địa chỉ IP Slave DNS Server

Tiếp tục edit file named.conf.local /etc/bind/named.conf.local

–  Tạo Forward Zone File.

Như đã chú thích ở trên, chúng ta bắt đầu tạo thêm File Forward Zone ở địa chỉ : /etc/bind/. Hãy chạy lệnh dưới để tạo ra file /etc/bind/forward.hoanghd.

echo '''$TTL 86400
@   IN  SOA     masterdns.hoanghd.com. root.hoanghd.com. (
        2011071001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)

@       IN  NS          masterdns.hoanghd.com.
@       IN  NS          secondarydns.hoanghd.com.
@       IN  A           192.168.13.207
@       IN  A           192.168.13.208
@       IN  A           192.168.13.239
masterdns       IN  A   192.168.13.207
secondarydns    IN  A   192.168.13.208
wiki            IN  A   192.168.13.239''' > /etc/bind/forward.hoanghd

–  Tạo File Reserve Zone.

Hãy chạy lệnh dưới để tạo ra file /etc/bind/reverse.hoanghd

echo '''$TTL 86400
@   IN  SOA     masterdns.hoanghd.com. root.hoanghd.com. (
        2011071002  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)

@       IN  NS          masterdns.hoanghd.com.
@       IN  NS          secondarydns.hoanghd.com.
@       IN  PTR         hoanghd.com.
masterdns       IN  A   192.168.13.207
secondarydns    IN  A   192.168.13.208
wiki            IN  A   192.168.13.239
101     IN  PTR         masterdns.hoanghd.com.
102     IN  PTR         secondarydns.hoanghd.com.
103     IN  PTR         wiki.hoanghd.com.''' > /etc/bind/reverse.hoanghd

–  Cấu hình Permission, Ownership cho dịch vụ Bind.

Chạy lần lượt từng dòng lệnh dưới đây.

sudo chmod -R 755 /etc/bind
sudo chown -R bind:bind /etc/bind

Khởi động lại dịch vụ Bind9.

sudo systemctl restart bind9

Để chắc chắn rằng file cấu hình hoàn toàn chính xác và chạy được, trước hết chúng ta cần kiểm tra file bằng dòng lệnh, 2 lệnh dưới nếu kết quả không trả về bất cứ gì thì đã cho thấy cấu hình của bạn đã đúng.

sudo named-checkconf /etc/bind/named.conf
sudo named-checkconf /etc/bind/named.conf.local

–  Kiểm lỗi file Forward Zone.

$ sudo named-checkzone hoanghd.com /etc/bind/forward.hoanghd
zone hoanghd.com/IN: loaded serial 2011071001
OK

–  Kiểm lỗi Reserve Zone.

$ sudo named-checkzone hoanghd.com /etc/bind/reverse.hoanghd
zone hoanghd.com/IN: loaded serial 2011071002
OK

–  Tiến hành Test DNS Server :

Phương pháp nhập lệnh dig masterdns.hoanghd.com

$ dig masterdns.hoanghd.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> masterdns.hoanghd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21829
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;masterdns.hoanghd.com.		IN	A

;; ANSWER SECTION:
masterdns.hoanghd.com.	86400	IN	A	192.168.13.207

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Nov 26 15:36:27 UTC 2022
;; MSG SIZE  rcvd: 66

Phương pháp nhập lệnh nslookup hoanghd.com

$ nslookup hoanghd.com
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	hoanghd.com
Address: 192.168.13.208
Name:	hoanghd.com
Address: 192.168.13.239
Name:	hoanghd.com
Address: 192.168.13.207

2.2. Triển khai trên DNS Server Master.

Mặc dù chỉ là Server tùy chọn thêm, nhưng Secondary DNS Server rất được khuyến khích nên có trong hệ thống mạng. DNS Server Slave đóng vai trò là Server dự phòng để đề phòng trường hợp máy chủ DNS Master ngừng hoạt động, lúc này máy Secondary sẽ ngay lập tức thế vai và trả lời truy vấn. Cũng giống như máy Master, đầu tiên chúng ta cần tiến hành cấu hình gói bind9.

sudo apt-get install bind9 bind9utils bind9-doc -y 

File cấu hình của DNS được đặt tại thư mục /etc/bind với địa chỉ chính xác là /etc/bind/namd.conf, kiểm tra xem đã có những dòng cấu hình bên dưới hay chưa, nếu chưa có thì tiến hành thêm vào hoặc bạn hãy chạy theo lệnh ở dưới.

echo '''include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";''' > /etc/bind/named.conf

Tiếp tục chạy lệnh dưới để chỉnh sửa file /etc/bind/named.conf.local với 192.168.13.207 là địa chỉ IP của Master DNS Server.

echo '''zone "hoanghd.edu.vn" {
        type slave;
        file "/var/cache/bind/forward.hoanghd";
        masters { 192.168.13.207; };
 };

zone "13.168.192.in-addr.arpa" {
        type slave;
        file "/var/cache/bind/reverse.hoanghd";
        masters { 192.168.13.207; };
 };''' > /etc/bind/named.conf.local

–  Cấu hình Permission, Ownership cho máy chủ Bind, hãy chạy lại lần lượt các dòng lệnh.

sudo chmod -R 755 /etc/bind
sudo chown -R bind:bind /etc/bind

– Khởi động dịch vụ bind9.

sudo systemctl restart bind9
sudo systemctl enable bind9

Để kiểm tra xem Bind9 đã forwarders ra internet được chưa bằng cách sử dụng lệnh dưới, nếu có kết quả trả về tức là bạn đã cấu hình forwarders thành công.

$ dig @192.168.13.207 www.google.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @192.168.13.207 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18076
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: ea05c89990aac9d88f3d21ac63aab6f614be85a7e8443b55 (good)
;; QUESTION SECTION:
;www.google.com.                        IN      A

;; ANSWER SECTION:
www.google.com.         123     IN      A       142.250.204.100

;; Query time: 43 msec
;; SERVER: 192.168.13.207#53(192.168.13.207)
;; WHEN: Tue Dec 27 16:12:22 +07 2022
;; MSG SIZE  rcvd: 87

Hãy chỉnh sửa DNS Server của bạn, mình đang sử dụng netplan của Ubuntu nên mình sẽ chỉnh sửa thông tin DNS trong file /etc/netplan/50-cloud-init.yaml

echo '''network:
    ethernets:
        ens192:
            addresses:
            - 192.168.13.208/23
            dhcp4: false
            gateway4: 192.168.12.5
            nameservers:
                addresses:
                - 192.168.13.207
                - 192.168.13.208
                search:
                - hoanghd.com 
    version: 2''' > /etc/netplan/50-cloud-init.yaml

Đừng quên apply nó nhé.

netplan apply

–  Tiến hành Test DNS Server :

Phương pháp nhập lệnh dig masterdns.hoanghd.com

$ dig masterdns.hoanghd.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> masterdns.hoanghd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58278
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;masterdns.hoanghd.com.		IN	A

;; ANSWER SECTION:
masterdns.hoanghd.com.	86400	IN	A	192.168.13.207

;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Nov 26 15:46:28 UTC 2022
;; MSG SIZE  rcvd: 66

Phương pháp nhập lệnh dig secondarydns.hoanghd.com

$ dig secondarydns.hoanghd.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> secondarydns.hoanghd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2316
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;secondarydns.hoanghd.com.	IN	A

;; ANSWER SECTION:
secondarydns.hoanghd.com. 86400	IN	A	192.168.13.208

;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Nov 26 15:48:52 UTC 2022
;; MSG SIZE  rcvd: 69

Phương pháp nhập lệnh nslookup hoanghd.com

$ nslookup hoanghd.com
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	hoanghd.com
Address: 192.168.13.207
Name:	hoanghd.com
Address: 192.168.13.239
Name:	hoanghd.com
Address: 192.168.13.208

3. Cấu hình cho máy Client.

Hãy chỉnh sửa DNS Server của bạn, mình đang sử dụng netplan của Ubuntu nên mình sẽ chỉnh sửa thông tin DNS trong file /etc/netplan/50-cloud-init.yaml

echo '''network:
    ethernets:
        ens160:
            addresses:
            - 192.168.13.206/23
            dhcp4: false
            gateway4: 192.168.12.5
            nameservers:
                addresses:
                - 192.168.13.207
                - 192.168.13.208
                search:
                - hoanghd.com 
    version: 2''' > /etc/netplan/50-cloud-init.yaml

Đừng quên apply nó nhé.

netplan apply

–  Test DNS Server từ máy Client.

Bây giờ bạn có thể tiến hành test DNS Server từ máy Client bằng các dòng lệnh dưới.

– Lệnh dig masterdns.hoanghd.com

$ dig masterdns.hoanghd.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> masterdns.hoanghd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38360
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;masterdns.hoanghd.com.		IN	A

;; ANSWER SECTION:
masterdns.hoanghd.com.	86400	IN	A	192.168.13.207

;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Nov 26 15:54:50 UTC 2022
;; MSG SIZE  rcvd: 66

– Lệnh secondarydns.hoanghd.com

$ dig secondarydns.hoanghd.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> secondarydns.hoanghd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60829
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;secondarydns.hoanghd.com.	IN	A

;; ANSWER SECTION:
secondarydns.hoanghd.com. 86400	IN	A	192.168.13.208

;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Nov 26 15:55:14 UTC 2022
;; MSG SIZE  rcvd: 69

– Lệnh dig wiki.hoanghd.com

$ dig wiki.hoanghd.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> wiki.hoanghd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22486
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;wiki.hoanghd.com.		IN	A

;; ANSWER SECTION:
wiki.hoanghd.com.	86400	IN	A	192.168.13.239

;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sat Nov 26 15:55:33 UTC 2022
;; MSG SIZE  rcvd: 61

– Lệnh nslookup hoanghd.com

$ nslookup hoanghd.com
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	hoanghd.com
Address: 192.168.13.207
Name:	hoanghd.com
Address: 192.168.13.208
Name:	hoanghd.com
Address: 192.168.13.239

– Lệnh nslookup wiki.hoanghd.com

$ nslookup wiki.hoanghd.com
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	wiki.hoanghd.com
Address: 192.168.13.239

Như vậy là cả 2 máy chủ DNS Server Master và DNS Server Slave đã có thể sẵn sàng để sử dụng.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories