NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
17/04/2023
Lượt xem

Hướng dẫn cấu hình BIND làm server DNS nội bộ trên Ubuntu 20.04

17/04/2023
38 phút đọc
Lượt xem

Đánh giá

5/5 - (180 bình chọn)

Bài viết này sẽ giúp bạn hiểu rõ hơn về cách cấu hình BIND như một server DNS nội bộ để quản lý và phân giải tên miền trong mạng riêng trên Ubuntu 20.04. Những hướng dẫn chi tiết dưới đây của Vietnix sẽ giúp bạn cài đặt, cấu hình BIND hỗ trợ quá trình quản lý tên miền và truy cập internet thuận tiện, hiệu quả hơn.

Yêu cầu để cấu hình BIND làm server DNS nội bộ trên Ubuntu 20.04

Để hoàn thành hướng dẫn này, bạn cần phải đáp ứng đủ những yêu cầu sau đây. Hãy đảm bảo rằng mỗi server nằm trong cùng một datacenter với mạng riêng được kích hoạt:

  • Một server Ubuntu 20.04 mới (ns1) đóng vai trò server DNS chính (Primary DNS server).
  • Một server Ubuntu 20.04 thứ hai (ns2) đóng vai trò là server DNS phụ (Secondary DNS server).
  • Ít nhất một server bổ sung. Hướng dẫn này giả định bạn có hai server bổ sung (client servers). Những client servers này phải được tạo trong cùng một datacenter với các server DNS của bạn.
Yêu cầu để cấu hình BIND làm server DNS nội bộ trên Ubuntu 20.04
Yêu cầu để cấu hình BIND làm server DNS nội bộ trên Ubuntu 20.04

Trên mỗi server này, cấu hình một tài khoản quản trị có đặc quyền sudo và thiết lập tường lửa đi kèm.

Lưu ý: Để quá trình cấu hình và thiết lập các yếu tố trên server diễn ra thuận lợi, bạn sẽ cần một máy chủ linh hoạt với toàn quyền điều hành. Do đó sử dụng VPS sẽ là lựa chọn tối ưu nhất.

Hiện tại Vietnix đang là nhà cung cấp VPS tốc độ cao, ổn định và uy tín được nhiều người tin dùng tại thị trường Việt Nam hiện nay. Với đa dạng gói cấu hình cùng mức giá và quyền quản trị ở mức cao nhất, các gói VPS tại Vietnix có thể đáp ứng mọi nhu cầu sử dụng của người dùng hiện nay. Liên hệ ngay với Vietnix để nhận tư vấn gói cấu hình tối ưu nhất theo nhu cầu và ngân sách của bạn cũng như nhận ngay bộ công cụ trị giá tới 26.000.000 VND/Năm.

Ví dụ về cơ sở hạ tầng và mục tiêu của hướng dẫn

Bài hướng dẫn này sẽ giả định những yếu tố sau:

  • Bạn có hai server sẽ được chỉ định làm server tên miền DNS. Trong hướng dẫn này chúng sẽ được gọi dưới tên là ns1 ns2.
  • Bạn có hai client servers bổ sung sẽ sử dụng cơ sở hạ tầng DNS mà bạn tạo ra, được gọi là host1host2. Bạn cũng có thể thêm bao nhiêu client server tùy ý.
  • Tất cả các server này tồn tại trong cùng một datacenter là nyc3.
  • Tất cả các server này đã được bật mạng riêng và đang nằm trên subnet 10.128.0.0/16 (bạn sẽ có thể phải điều chỉnh điều này cho các server của mình).
  • Tất cả các server đều được kết nối với một dự án chạy trên example.com. Hướng dẫn này chỉ ra cách thiết lập một hệ thống DNS nội bộ, riêng tư nên bạn có thể sử dụng bất kỳ tên miền nào khác. Các server DNS luôn ưu tiên định tuyến yêu cầu bên trong, có nghĩa là chúng sẽ không cố gắng kết nối đến miền được chỉ định trên internet công cộng. Tuy nhiên, sử dụng một tên miền bạn sở hữu có thể giúp tránh xung đột với các miền được định tuyến công cộng.

Với những giả định trên, các ví dụ trong hướng dẫn này sẽ sử dụng một lược đồ đặt tên dựa trên subdomain nyc3.example.com để tham chiếu đến subnet riêng hoặc zone. Do đó, tên miền đầy đủ của host1 trên mạng riêng sẽ là host1.nyc3.example.com. Bảng sau chứa các chi tiết liên quan được sử dụng trong các ví dụ thuộc toàn bộ hướng dẫn này:

HostRolePrivate FQDNIP Address
ns1Primary DNS Serverns1.nyc3.example.com10.128.10.11
ns2Secondary DNS Serverns2.nyc3.example.com10.128.20.12
host1Generic Host 1host1.nyc3.example.com10.128.100.101
host2Generic Host 2host2.nyc3.example.com10.128.200.102
Bảng hướng dẫn chi tiết

Chú ý: Bạn có thể thay thế dữ liệu thành tên server và địa chỉ IP riêng của mình. Đồng thời cũng không nhất thiết phải sử dụng tên lược đồ làm tên zone của datacenter. Bài viết quy định như vậy chỉ để thể hiện rằng các server này thuộc mạng riêng của một datacenter cụ thể. Nếu server trong nhiều datacenter, bạn có thể thiết lập một DNS nội bộ cho mỗi datacenter tương ứng.

Khi kết thúc hướng dẫn này, bạn sẽ có một server DNS chính là ns1 và một server phụ ns2 (đóng vai trò như server dự phòng).

Ngoài ra, để không bị nhầm lẫn lệnh giữa các server, bài viết này sẽ quy định mã màu như sau:

Bất kỳ lệnh nào chạy trên ns1 sẽ có nền màu xanh lam:

ns1$

Tương tự, bất kỳ lệnh nào chạy trên ns2 sẽ có nền màu đỏ:

ns2$

Lệnh nào chạy trên một trong các client servers sẽ có nền màu xanh lá:

$

Cuối cùng, bất kỳ lệnh nào chạy trên nhiều servers sẽ có nền màu xanh navy:

$

Cuối cùng, hãy nhớ rằng bất kỳ khi nào một lệnh hoặc code block chứa văn bản được làm nổi bật như thế này thì đây là văn bản quan trọng. Chúng sẽ đánh dấu các chi tiết cần phải thay thế bằng cài đặt của riêng bạn hoặc văn bản được đó cần được sửa đổi hoặc thêm vào tệp cấu hình. Giả sử, văn bản host1.nyc3.example.com sẽ cần được thay thế bằng FQDN server của riêng bạn.

Bây giờ, hãy bắt đầu bằng cách cài đặt BIND trên cả server DNS chính và server DNS phụ của bạn, ns1 và ns2.

Bước 1: Cài đặt BIND trên server DNS

Trên cả hai server DNS (ns1 ns2), hãy cập nhật gói apt bằng cách:

sudo apt update

Sau đó hãy cài đặt BIND vào mỗi server:

Sudo apt install bind9 bind9utils bind9-doc

Hãy thiết lập BIND sang chế độ IPv4. Trên cả hai server, hãy chỉnh sửa tệp cài đặt mặc định named bằng trình chỉnh sửa văn bản. Ví dụ sau sử dụng nano:

sudo nano /etc/default/named

Thêm -4 vào cuối của dòng OPTIONS:

OPTIONS="-u bind -4"

Lưu và thoát khi bạn đã hoàn tất. Nếu sử dụng nano, bạn có thể ấn tổ hợp phím CTRL + X, YENTER

Khởi động lại BIND để áp dụng các thay đổi:

sudo systemctl restart bind9

Bây giờ, BIND đã được cài đặt thành công, hãy chuyển sang bước 2.

Bước 2: Hiệu chỉnh server DNS chính

Cấu hình của BIND bao gồm nhiều tệp như tệp cấu hình chính và named.conf. Tên các tệp này bắt đầu bằng named vì đó là tên của tiến trình mà BIND chạy (với named được rút gọn từ “name daemon”, như trong “domain name daemon”). Bạn sẽ bắt đầu bằng cách cấu hình tệp named.conf.options.

Cấu hình tệp Options

Trên server ns1, mở file named.conf.options:

sudo nano /etc/bind/named.conf.options

Ở trên khối options, hãy tạo mới một khối ACL với tên trusted. Đây là nơi bạn sẽ định nghĩa danh sách máy khách, từ đó cho phép các truy vấn đệ quy DNS (tức là các server của bạn nằm trong cùng datacenter với ns1). Để thêm ns1, ns2, host1host2 vào danh sách máy khách được tin tưởng, thực hiện lệnh dưới đây. Lưu ý thay thế những địa chỉ IP riêng trong ví dụ bằng địa chỉ của bạn.

acl "trusted" {
        10.128.10.11;    # ns1 
        10.128.20.12;    # ns2
        10.128.100.101;  # host1
        10.128.200.102;  # host2
};

options {

        . . .

Bây giờ bạn đã có danh sách server DNS tin cậy, giờ thì hãy chỉnh sửa khối options:

        . . .
};

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

Bên dưới directory, thêm các dòng cấu hình được làm nổi bật (và thay thế địa chỉ IP riêng của ns1 thích hợp):

        . . .

};

options {
        directory "/var/cache/bind";
        
        recursion yes;                 # enables recursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" clients
        listen-on { 10.128.10.11; };   # ns1 private IP address - listen on private network only
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

        . . .
};

Lưu ý rằng khối forwarders sẽ bao gồm hai địa chỉ IP: 8.8.8.88.8.4.4. Khối này xác định forwarders, một cơ chế đặc biệt mà BIND sử dụng để giảm lưu lượng liên kết tới các server bên ngoài. BIND cũng có thể sử dụng forwarders để cho phép các truy vấn bởi các server không có truy cập trực tiếp vào internet. Điều này có thể giúp tăng tốc độ phản hồi cho các truy vấn.

Hai địa chỉ IP trong khối này đại diện cho Public DNS Server của Google, nhưng địa chỉ IP của bất kỳ Public DNS Server nào khác cũng có thể hoạt động ở đây. Ví dụ, bạn có thể sử dụng địa chỉ IP của server DNS của Cloudflare (1.1.1.1) để thay thế.

Sau khi hoàn thành, lưu và đóng tệp named.conf.options. Lúc này, những server của riêng bạn (server trusted) mới có thể truy vấn tới server DNS. Tiếp theo, bạn sẽ chỉ định các DNS zone của mình bằng cách cấu hình tệp named.conf.local.

Cấu hình tệp Local

Trong ns1, mở tệp named.conf.local để chỉnh sửa:

sudo nano /etc/bind/named.conf.local

Ngoại trừ một vài comments, tệp này sẽ trống. Ở đây bạn sẽ chỉ định các forward zones và reverse zones của mình. Các DNS zone chỉ định phạm vi cụ thể để dễ quản lí và xác định các bản ghi DNS. Vì tất cả các tên miền ví dụ trong hướng dẫn này đều nằm trong phân vùng con nyc3.example.com, nên bạn sẽ sử dụng nó để làm forward zone. Địa chỉ IP riêng của các server trong ví dụ này đều nằm trong IP 10.128.0.0/16, ví dụ sau sẽ thiết lập một reverse zone để bạn có thể xác định đảo ngược trong phạm vi đó.

Thêm forward zone với các dòng sau, hãy nhớ thay thế tên zone thành của bạn và địa chỉ IP riêng của server DNS thứ cấp trong allow-transfer:

zone "nyc3.example.com" {
    type primary;
    file "/etc/bind/zones/db.nyc3.example.com"; # zone file path
    allow-transfer { 10.128.20.12; };           # ns2 private IP address - secondary
};

Giả sử subnet riêng của bạn là 10.128.0.0/16, hãy thêm reverse zone bằng các dòng sau (lưu ý rằng tên reverse zone của bạn bắt đầu bằng 128.10 là sự đảo ngược của octet 10.128):

    . . .
};

zone "128.10.in-addr.arpa" {
    type primary;
    file "/etc/bind/zones/db.10.128";  # 10.128.0.0/16 subnet
    allow-transfer { 10.128.20.12; };  # ns2 private IP address - secondary
};

Nếu các server của bạn trải dài trên nhiều subnet riêng nhưng lại nằm trong cùng một datacenter, hãy đảm bảo chỉ định thêm một zone và zone file cho mỗi subnet riêng biệt. Khi bạn đã thêm tất cả các zone mong muốn, hãy lưu và đóng tệp named.conf.local.

Bây giờ khi các zones đã được chỉ định trong BIND, bạn cần tạo các reverse zone files và forward zone files tương ứng.

Khởi tạo forward zone file

Forward zone file là nơi bạn xác định các bản ghi DNS để tra cứu DNS chuyển tiếp. Tức là, khi DNS nhận được một truy vấn tên, ví dụ như host1.nyc3.example.com, nó sẽ tìm kiếm trong forward zone file để phản hồi địa chỉ IP riêng tương ứng của host1.

Tạo một thư mục nơi chứa các zone file. Theo như tệp cấu hình named.conf.local, ví trí của zone file sẽ là /etc/bind/zones:

sudo mkdir /etc/bind/zones

Bạn sẽ dựa trên forward zone file tại mẫu db.local. Sao chép nó đến vị trí đúng bằng các lệnh sau:

sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com

Tiếp đến, hãy chỉnh sửa forward zone file:

sudo nano /etc/bind/zones/db.nyc3.example.com

Nó sẽ chứa những thông tin như sau:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.      ; delete this line
@       IN      A       127.0.0.1       ; delete this line
@       IN      AAAA    ::1             ; delete this line

Đầu tiên, bạn hãy chỉnh sửa bản ghi SOA. Thay localhost đầu tiên bằng FQDN của ns1, sau đó thay root.localhost bằng admin.nyc3.example.com. Mỗi khi chỉnh sửa một zone file, bạn cần tăng giá trị Serial trước khi khởi động lại quá trình named. Ở đây, tăng nó lên 3:

. . .
;
$TTL    604800
@       IN      SOA     ns1.nyc3.example.com. admin.nyc3.example.com. (
                              3         ; Serial

                              . . .

Tiếp theo, xóa 3 bản ghi ở cuối tệp (sau bản ghi SOA). Nếu bạn không chắc chắn xóa những dòng nào thì hãy tìm bằng chú thích ‘delete this line’.

Ở cuối tệp, thêm các bản ghi server với các dòng sau (thay tên bằng tên của bạn). Lưu ý rằng cột thứ hai chỉ định rằng đây là các bản ghi NS:

. . .

; name servers - NS records
    IN      NS      ns1.nyc3.example.com.
    IN      NS      ns2.nyc3.example.com.

Bây giờ, thêm các bản ghi A cho các server thuộc về zone này. Điều này bao gồm bất kỳ server nào có tên kết thúc bằng nyc3.example.com (thay tên và địa chỉ IP riêng). Thực hiện thêm các bản ghi A cho ns1, ns2, host1host2 như sau:

. . .

; name servers - A records
ns1.nyc3.example.com.          IN      A       10.128.10.11
ns2.nyc3.example.com.          IN      A       10.128.20.12

; 10.128.0.0/16 - A records
host1.nyc3.example.com.        IN      A      10.128.100.101
host2.nyc3.example.com.        IN      A      10.128.200.102

Forward zone file cuối cùng của bạn sẽ chứa nội dung sau:

$TTL    604800
@       IN      SOA     ns1.nyc3.example.com. admin.nyc3.example.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
     IN      NS      ns1.nyc3.example.com.
     IN      NS      ns2.nyc3.example.com.

; name servers - A records
ns1.nyc3.example.com.          IN      A       10.128.10.11
ns2.nyc3.example.com.          IN      A       10.128.20.12

; 10.128.0.0/16 - A records
host1.nyc3.example.com.        IN      A      10.128.100.101
host2.nyc3.example.com.        IN      A      10.128.200.102

Lưu và đóng tệp db.nyc3.example.com. Sau đó hãy chuyển sang bước tiếp theo.

Khởi tạo reverse zone file

Reverse zone files là nơi bạn xác định các bản ghi DNS PTR để tra cứu các DNS ngược. Đó là, khi DNS nhận được một truy vấn bằng địa chỉ IP, ví dụ như 10.128.100.101, nó sẽ tìm kiếm trong các reverse zone files để phản hồi FQDN tương ứng, trong trường hợp này là host1.nyc3.example.com.

Trên ns1, với mỗi reverse zone files được chỉ định trong tệp named.conf.local, hãy tạo một reverse zone file. Bạn sẽ dựa trên reverse zone file mẫu db.127 để tạo các tệp khác. BIND sử dụng tệp này để lưu trữ thông tin cho giao diện loopback cục bộ; 127 là octet đầu tiên của địa chỉ IP đại diện cho localhost (127.0.0.1). Sao chép tệp này vào vị trí đúng với các lệnh sau (thay thế tên tệp đích để phù hợp với định nghĩa reverse zone của bạn):

sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128

Chỉnh sửa reverse zone file tương ứng với các reverse zones được xác định trong tệp named.conf.local:

sudo nano /etc/bind/zones/db.10.128

Ban đầu, tệp sẽ chứa nội dung như sau:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.      ; delete this line
1.0.0   IN      PTR     localhost.      ; delete this line

Tương tự như forward zone file, bạn sẽ phải chỉnh sửa bản ghi SOA và tăng giá trị số phiên bản (serial):

@       IN      SOA     ns1.nyc3.example.com. admin.nyc3.example.com. (
                              3         ; Serial

                              . . .

Bây giờ hãy xóa hai bản ghi ở cuối tệp (sau bản ghi SOA). Nếu không chắc chắn dòng nào cần được xóa, hãy chú ý tới những dòng đánh dấu bởi “Delete this line“.

Ở cuối tệp, thêm các bản ghi server bằng các dòng sau (thay thế bằng tên của riêng bạn). Lưu ý rằng cột thứ hai chỉ ra rằng đây là các bản ghi NS:

. . .

; name servers - NS records
      IN      NS      ns1.nyc3.example.com.
      IN      NS      ns2.nyc3.example.com.

Tiếp theo, thêm các bản ghi PTR cho tất cả các server có địa chỉ IP trên subnet của zone file đang chỉnh sửa. Trong phạm vi bài viết này sẽ bao gồm tất cả các server vì chúng đều ở trong subnet 10.128.0.0/16. Lưu ý rằng cột đầu tiên bao gồm hai octet cuối cùng của địa chỉ IP riêng của server theo thứ tự đảo ngược. Hãy đảm bảo thay thế các tên và địa chỉ IP riêng để phù hợp với server của bạn:

. . .

; PTR Records
11.10   IN      PTR     ns1.nyc3.example.com.    ; 10.128.10.11
12.20   IN      PTR     ns2.nyc3.example.com.    ; 10.128.20.12
101.100 IN      PTR     host1.nyc3.example.com.  ; 10.128.100.101
102.200 IN      PTR     host2.nyc3.example.com.  ; 10.128.200.102

Reverse zone file cuối cùng của bạn sẽ chứa nội dung sau:

$TTL    604800
@       IN      SOA     nyc3.example.com. admin.nyc3.example.com. (
                                                  3         ; Serial
                                        604800         ; Refresh
                                          86400         ; Retry
                                     2419200         ; Expire
                                       604800 )       ; Negative Cache TTL
; name servers
      IN      NS      ns1.nyc3.example.com.
      IN      NS      ns2.nyc3.example.com.

; PTR Records
11.10   IN      PTR     ns1.nyc3.example.com.    ; 10.128.10.11
12.20   IN      PTR     ns2.nyc3.example.com.    ; 10.128.20.12
101.100 IN      PTR     host1.nyc3.example.com.  ; 10.128.100.101
102.200 IN      PTR     host2.nyc3.example.com.  ; 10.128.200.102

Lưu và đóng reverse zone file (lặp lại phần này nếu bạn cần thêm reverse zone file). Bạn đã hoàn tất chỉnh sửa tệp của mình, tiếp theo bạn có thể kiểm tra các tệp của mình để tìm lỗi.

Kiểm tra cú pháp cấu hình BIND

Chạy câu lệnh sau để kiểm tra cú pháp của tệp named.conf*:

sudo named-checkconf

Nếu tệp cấu hình của bạn không có lỗi cú pháp, sẽ không có bất kỳ thông báo lỗi nào xuất hiện và bạn sẽ trở lại dấu nhắc shell. Nếu có vấn đề với tệp cấu hình, hãy xem lại thông báo lỗi và phần Configure Primary DNS Server, sau đó thử lại lệnh named-checkconf.

Lệnh named-checkzone có thể được sử dụng để kiểm tra tính chính xác của các zone file. Đối số đầu tiên chỉ định tên zone, và đối số thứ hai chỉ định zone file tương ứng, hai đối số này đều được xác định trong tệp named.conf.local.

Ví dụ, để kiểm tra cấu hình forward zone nyc3.example.com, hãy chạy lệnh sau (thay đổi tên để phù hợp với forward zone và tệp của bạn):

sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
Output
zone nyc3.example.com/IN: loaded serial 3
OK

Để kiểm tra cấu hình reverse zone 128.10.in-addr.arpa, hãy chạy lệnh sau (thay đổi số để phù hợp với reverse zone và tệp của bạn):

sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128

Khi tất cả các tệp cấu hình và vùng không có lỗi, bạn đã sẵn sàng để khởi động lại dịch vụ BIND.

Khởi động lại BIND

Để khởi động lại BIND, thực hiện lệnh sau:

sudo systemctl restart bind9

Nếu bạn đã cấu hình tường lửa UFW, hãy mở truy cập đến BIND bằng cách nhập lệnh:

sudo ufw allow Bind9

Server DNS chính của bạn đã sẵn sàng để phản hồi lại truy vấn DNS. Hãy chuyển sang bước tiếp theo để hiệu chỉnh server DNS thứ cấp.

Bước 3: Cấu hình server DNS thứ cấp

Trong hầu hết các môi trường, việc thiết lập một server DNS phụ sẽ hỗ trợ phản hồi các yêu cầu nếu server chính không khả dụng. Thêm vào đó, quá trình định cấu hình server DNS phụ đơn giản hơn nhiều so với việc thiết lập server chính.

Trên ns2, chỉnh sửa tệp named.conf.options

sudo nano /etc/bind/named.conf.options

Phía trên cùng của tệp, thêm ACL với địa chỉ IP riêng của tất cả server tin cậy:

acl "trusted" {
        10.128.10.11;   # ns1
        10.128.20.12;   # ns2 
        10.128.100.101;  # host1
        10.128.200.102;  # host2
};

options {

Phía dưới directory, thêm dòng bên dưới:

    . . .

        recursion yes;
        allow-recursion { trusted; };
        listen-on { 10.128.20.12; };      # ns2 private IP address
        allow-transfer { none; };          # disable zone transfers by default

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

    . . .

Lưu và đóng tệp named.conf.options. Tệp này phải giống với tệp named.conf.options của ns1 trừ khi nó được cấu hình để nghe trên địa chỉ IP riêng của ns2.

Bây giờ hãy chỉnh sửa tệp named.conf.local:

sudo nano /etc/bind/named.conf.local

Xác định các zone phụ tương ứng với các zone trên server DNS chính. Lưu ý rằng với loại slave, tệp sẽ không chứa đường dẫn và có một lệnh masters sẽ được đặt thành địa chỉ IP riêng của server DNS chính. Nếu bạn đã xác định nhiều reverse zone trong server DNS chính, hãy đảm bảo thêm tất cả chúng vào đây:

zone "nyc3.example.com" {
    type slave;
    file "db.nyc3.example.com";
    masters { 10.128.10.11; };  # ns1 private IP
};

zone "128.10.in-addr.arpa" {
    type slave;
    file "db.10.128";
    masters { 10.128.10.11; };  # ns1 private IP
};

Lưu ý: Vietnix sẽ tránh các thuật ngữ như “master” và “slave” bất cứ khi nào có thể vì chúng mang lại ý nghĩa khá tiêu cực. Trong các phiên bản BIND gần đây hơn, bạn có thể sử dụng primaries thay vì masterssecondary thay vì slave. Tuy nhiên, phiên bản BIND được cài đặt từ repositories Ubuntu 20.04 mặc định sẽ không nhận ra các tuỳ chọn này, nghĩa là bạn phải sử dụng thuật ngữ cũ trừ khi nâng cấp lên phiên bản cao hơn.

Bây giờ hãy lưu và đóng tệp named.conf.local.

Chạy câu lệnh sau để kiểm tra tính hợp lệ của tệp cấu hình:

sudo named-checkconf

Nếu không có bất cứ lỗi này, hãy khởi động lại BIND:

sudo systemctl restart bind9<br>

Cuối cùng, hãy cho phép các kết nối DNS đến server bằng cách thay đổi tường lửa UFW:

sudo ufw allow Bind9

Bước tiếp theo bạn phải cấu hình các clients server để sử dụng các server DNS riêng của bạn.

Bước 4: Hiệu chỉnh DNS Clients

Trước khi tất cả các server trong danh sách ACL đáng tin cậy có thể truy vấn tới server DNS của bạn, bạn sẽ cần thực hiện cấu hình mỗi server để sử dụng ns1 và ns2 với vai trò name server.

Giả sử các server khách đang chạy Ubuntu, bạn sẽ cần biết được thiết bị nào đang liên kết với mạng riêng của mình. Bạn có thể thực hiện điều này bằng cách truy vấn subnet riêng tư với lệnh ip address. Chạy lệnh sau trên mỗi máy khách của bạn, thay thế subnet bằng mạng của riêng bạn:

ip address show to 10.128.0.0/16
Output
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1
           valid_lft forever preferred_lft forever

Trong ví dụ này, interface riêng tư là eth1. Bạn có thể thay đổi thành interface riêng tư tương ứng trên các server của riêng bạn.

Trên Ubuntu 20.04, mạng được cấu hình với Netplan, một bản tính năng trừu tượng cho phép bạn viết chuẩn hoá cấu hình mạng và áp dụng nó cho phần mềm mạng backend tương thích. Để cấu hình DNS, bạn cần viết một tệp cấu hình Netplan.

Tạo một tệp mới trong /etc/netplan gọi là 00-private-nameservers.yaml:

sudo nano /etc/netplan/00-private-nameservers.yaml

Bên trong tệp cấu hình Netplan, thêm nội dung sau. Bạn sẽ cần sửa đổi interface của mạng riêng, các địa chỉ của server DNS ns1ns2 và khu vực DNS:

Lưu ý: Netplan sử dụng định dạng chuỗi dữ liệu YAML cho các tệp cấu hình. Do YAML sử dụng lùi đầu dòng và khoảng trắng để xác định cấu trúc dữ liệu của nó, vì vậy hãy đảm bảo rằng định nghĩa của bạn sử dụng lùi đầu dòng nhất quán để tránh lỗi. Bạn có thể khắc phục sự cố tệp YAML của mình bằng cách sử dụng một trình kiểm tra YAML như YAML Lint.

network:
    version: 2
    ethernets:
        eth1:                                    # Private network interface
            nameservers:
                addresses:
                - 10.128.10.11                # Private IP for ns1
                - 10.132.20.12                # Private IP for ns2
                search: [ nyc3.example.com ]    # DNS zone

Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, cho Netplan sử dụng tệp cấu hình mới bằng cách sử dụng lệnh netplan try. Nếu có vấn đề gây mất kết nối mạng, Netplan sẽ tự động hoàn tác các thay đổi sau một khoảng thời gian chờ đợi:

sudo netplan try
Output
Warning: Stopping systemd-networkd.service, but it can still be activated by:
  systemd-networkd.socket
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in 120 seconds

Nhấn ENTER để chấp nhận cấu hình mới.

Bây giờ, kiểm tra resolver DNS của hệ thống để xác định liệu cấu hình DNS của bạn đã được áp dụng hay chưa bằng cách chạy lệnh sau:

sudo systemd-resolve --status

Kéo xuống cho đến khi bạn tìm thấy phần interface mạng riêng của mạng. Địa chỉ IP riêng của các server DNS sẽ được liệt kê đầu tiên, tiếp theo là một số giá trị dự phòng. Tên miền của sẽ được liệt kê ở sau DNS Domain:

Output
. . .
Link 3 (eth1)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 10.128.10.11
                      10.128.20.12
                      67.207.67.2
                      67.207.67.3
          DNS Domain: nyc3.example.com
. . .

Bây giờ, máy khách Ubuntu của bạn đã được hiệu chỉnh để sử dụng server DNS nội bộ.

Bước 5: Kiểm tra thử Clients

Sử dụng lệnh nslookup để kiểm tra xem các máy khách của bạn có thể truy vấn tới server hay không. Bạn nên thực hiện điều này trên tất cả các máy khách mà bạn đã cấu hình và nằm trong danh sách ACL được tin tưởng.

Bây giờ, hãy bắt đầu bằng một truy vấn chuyển tiếp.

Tra cứu chuyển tiếp

Để thực hiên tra cứu chuyển tiếp nhằm lấy địa chỉ IP của host1.nyc3.example.com, bạn có thể chạy lệnh sau:

nslookup host1

Khi truy vấn tên host1, DNS sẽ tự mở rộng thành host1.nyc3.example.com vì tuỳ chọn tìm kiếm (Search option) đã được đặt thành tên miền riêng của bạn và các DNS sẽ cố gắng tìm kiếm tên miền đó trước khi tìm kiếm host trên các nơi khác. Lệnh sẽ trả về kết quả như sau:

Output
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   host1.nyc3.example.com
Address: 10.128.100.101

Tiếp theo bạn có thể thực hiện kiểm thử tra cứu ngược.

Tra cứu ngược

Để kiểm thử tra cứu ngược, hãy truy vấn server DNS với địa chỉ IP riêng của host1:

nslookup 10.128.100.101

Bạn sẽ nhận được kết quả như sau:

Output
11.10.128.10.in-addr.arpa   name = host1.nyc3.example.com.

Authoritative answers can be found from:

Nếu tất cả các tên và địa chỉ IP resolve đều đúng giá trị, điều đó có nghĩa các zone file của bạn đã được cấu hình đúng. Nếu bạn không may gặp lỗi, hãy xem lại các zone file trên server DNS chính (ví dụ như db.nyc3.example.comdb.10.128)
Bước cuối cùng, hãy tìm hiểu cách duy trì các bản ghi zone của bạn.

Bước 6: Duy trì bản ghi DNS

Bây giờ khi đã có một DNS nội bộ hoạt động, bạn cần duy trì các bản ghi DNS để phản ánh chính xác môi trường server của bạn.

Thêm Host vào DNS

Bất cứ khi nào muốn thêm một server vào môi trường của mình (trong cùng một datacenter), bạn sẽ phải thêm nó vào DNS. Đây là danh sách các bước mà bạn cần thực hiện:

Server chính

  • Forward zone file: Thêm A record cho server mới, tăng giá trị của Serial.
  • Reverse zone file: Thêm PTR record cho server mới, tăng giá trị của Serial.
  • Thêm địa chỉ IP riêng của server mới vào ACL đáng tin cậy (named.conf.options)

Để kiểm tra các tệp cấu hình:

sudo named-checkconf
sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128

Tải lại BIND:

sudo systemctl reload bind9

Bây giờ server chính của bạn đã được cấu hình cho host mới.

Server phụ

Hãy thêm địa chỉ IP riêng của server mới vào mục trusted ACL trong tệp named.conf.options.

Kiểm tra cú pháp tệp cấu hình:

Sudo named-checkconf

Sau đó hãy tải lại BIND:

Sudo systemctl reload bind9

Bây giờ server phụ của bạn đã chấp nhận kết nối từ host mới.

Cấu hình server mới để sử dụng DNS của bạn bằng cách:

  • Hiệu chỉnh /etc/resolv.conf
  • Kiểm thử bằng lệnh nslookup

Xoá host khỏi DNS

Nếu bạn muốn loại bỏ một host khỏi môi trường hoặc chỉ muốn loại nó khỏi DNS, chỉ cần loại bỏ tất cả những gì đã được thêm khi bạn thêm host vào DNS (tức là ngược lại với các bước trước đó).

Lời kết

Sau khi đã cấu hình DNS nội bộ xong, hãy đảm bảo rằng các máy chủ DNS của bạn được bảo trì đúng cách. Nếu cả hai máy chủ trở nên không khả dụng, các dịch vụ và ứng dụng của bạn phụ thuộc vào chúng cũng sẽ ngừng hoạt động. Chúc bạn thực hiện cấu hình thành công và đừng quên theo dõi những bài viết hướng dẫn tiếp theo của Vietnix nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG