Thứ năm, 03/07/2014 | 00:00 GMT+7

Cách sử dụng NSD, một server DNS chỉ ủy quyền, trên Ubuntu 14.04

Việc cài đặt một server DNS chịu trách nhiệm về domain có thể là một nhiệm vụ phức tạp ngay cả đối với những administrator dày dạn kinh nghiệm. Quản lý vùng DNS là một nhiệm vụ quan trọng, nhưng có thể gây bối rối, đặc biệt là khi cố gắng bắt đầu.

Phần mềm như server DNS Bind cực kỳ linh hoạt và có thể được cấu hình để vận hành nhiều thành phần trong hệ thống phân cấp DNS tổng thể. Tuy nhiên, tính linh hoạt đó cũng nghĩa là Bind không được tối ưu hóa cho bất kỳ tác vụ nào. Điều này có một vài tác dụng phụ.

Hầu hết thời gian có rất nhiều chức năng mà cấu hình của bạn không cần. Sự phức tạp bổ sung này làm cho việc quản lý khó khăn hơn. Điều đó cũng nghĩa là bản thân phần mềm sẽ ít phản hồi hơn cho bất kỳ tác vụ nào.

Để giải quyết vấn đề này, các server DNS thay thế đã được tạo ra chuyên về một lĩnh vực phân giải DNS. Một phần mềm được gọi là NSD là một server DNS chỉ có thẩm quyền, lý tưởng để quản lý các vùng DNS một cách có thẩm quyền. Không cần phải lo lắng về đệ quy hoặc bộ nhớ đệm, server này hoạt động với hiệu suất cao và dấu chân thấp hơn.

Trong hướng dẫn này, ta sẽ trình bày cách cài đặt và cấu hình NSD để quản lý an toàn các vùng DNS của ta trên server Ubuntu 14.04.

Yêu cầu và Mục tiêu

Trước khi bắt đầu với hướng dẫn này, bạn nên làm quen với một số khái niệm và thuật ngữ DNS cơ bản . Nếu bạn cần trợ giúp để hiểu server DNS chỉ có thẩm quyền được sử dụng để làm gì, hãy xem hướng dẫn của ta về sự khác biệt giữa các loại server DNS .

Là một server DNS chỉ có thẩm quyền, NSD không cung cấp bất kỳ chức năng bộ nhớ đệm, chuyển tiếp hoặc đệ quy nào. Nó chỉ phản hồi các yêu cầu lặp đi lặp lại cho các vùng mà nó kiểm soát. Nó cũng có thể tham chiếu các trình phân giải đến các server định danh khác cho các vùng mà nó đã ủy quyền.

Với mục đích của hướng dẫn này, ta sẽ cấu hình hai server với phần mềm NSD để hoạt động như server chính và phụ cho các khu vực của ta . Ta cũng sẽ cung cấp dữ liệu cấu hình cho phép khách hàng tiếp cận web server trên server lưu trữ thứ ba.

Ta sẽ sử dụng domain giả example.com cho hướng dẫn này. Bạn nên thay thế domain của riêng mình để theo dõi. Máy mà ta sẽ cấu hình sẽ có các thuộc tính sau:

Mục đích DNS FQDN Địa chỉ IP
Server định danh chính ns1.example.com. 192.0.2.1
Server định danh phụ ns2.example.com. 192.0.2.2
Web server www.example.com . 192.0.2.3

Sau khi hoàn thành hướng dẫn này, bạn nên có hai server đầu tiên được cấu hình với NSD để hoạt động như một server chỉ có thẩm quyền cho các vùng của bạn. Bạn có thể sử dụng tên server mà ta cấu hình để truy cập server của bạn từ internet, cũng như tìm ra tên server bằng cách truy vấn địa chỉ IP. Bất kỳ ứng dụng client phân giải nào có khả năng tiếp cận server của ta sẽ có thể lấy dữ liệu domain từ server của ta .

Đặt tên server trên server định danh

Bước đầu tiên mà ta cần làm là chuẩn bị. Trước khi lo lắng về cấu hình DNS, ta cần đảm bảo server định danh của ta có thể phân giải chính xác tên server của chúng theo cách ta yêu cầu.

Trên server DNS đầu tiên của bạn, hãy chỉnh sửa file /etc/hosts để cài đặt FQDN của máy tính này:

sudo nano /etc/hosts 

Trong trường hợp của ta , ta cần ánh xạ địa chỉ IP 192.0.2.1 với tên đầy đủ của server định danh của ta , ns1.example.com . Ta có thể thực hiện việc này bằng cách thay thế dòng chỉ định tên server của ta bằng địa chỉ IP công cộng, FQDN và alias rút gọn cho server của ta :

127.0.0.1       localhost 192.0.2.1       ns1.example.com ns1 

Lưu file khi bạn hoàn tất.

Tiếp theo, ta cần kiểm tra lại file /etc/hostname :

sudo nano /etc/hostname 

Điều này phải chứa giá trị của tên server không đủ tiêu chuẩn của ta . Sửa đổi nó nếu cần:

ns1 

Lưu file khi bạn hoàn tất.

Nếu bạn đã sửa đổi file /etc/hostname ở trên, hãy yêu cầu hệ thống đọc lại file :

sudo hostname -F /etc/hostname 

Ta đã hoàn tất với server DNS đầu tiên của bạn vào lúc này. Lặp lại các bước trên server thứ hai.

Sửa đổi file /etc/hosts để chỉ định server của server DNS thứ hai:

sudo nano /etc/hosts 
127.0.0.1       localhost 192.0.2.2       ns2.example.com ns2 

Kiểm tra cả file /etc/hostname . Tên này chỉ nên có tên ngắn gọn không đủ tiêu chuẩn:

sudo nano /etc/hostname 
ns2 

, hãy yêu cầu hệ thống đọc lại file nếu bạn phải sửa đổi bất kỳ điều gì:

sudo hostname -F /etc/hostname 

Server của bạn hiện có thể phân giải tên riêng của chúng mà không cần sử dụng DNS. Đến đây bạn đã sẵn sàng để cài đặt NSD trên server của bạn .

Cài đặt NSD trên cả hai server định danh

Bước tiếp theo là thực sự cài đặt phần mềm trên server định danh của bạn.

Trước khi bắt đầu, ta thực sự phải thực hiện thêm một bước chuẩn bị. Gói NSD trong repos cài đặt phần mềm, cấu hình một số thành phần và cố gắng khởi động dịch vụ. Dịch vụ dự kiến sẽ chạy với quyền user được gọi là nsd , nhưng gói này không tạo account user này.

Để tránh lỗi khi cài đặt, ta sẽ tạo user này trước khi cài đặt phần mềm. Trên mỗi máy của bạn, hãy tạo user hệ thống nsd bằng lệnh :

sudo useradd -r nsd 

Thao tác này sẽ tạo đúng account cần thiết để hoàn tất cài đặt thành công.

Bây giờ, ta chỉ cần cài đặt phần mềm NSD. May mắn là NSD có trong repository lưu trữ Ubuntu 14.04, vì vậy ta có thể sử dụng apt để kéo nó xuống. Ta sẽ cập nhật index gói local của bạn và sau đó download gói thích hợp:

sudo apt-get update sudo apt-get install nsd 

Thao tác này sẽ cài đặt phần mềm và thực hiện một số cấu hình ban đầu. Nó cũng sẽ bắt đầu dịch vụ, mặc dù ta chưa cấu hình nó để phục vụ bất cứ thứ gì.

Cấu hình Server NSD Chính

Ta sẽ bắt đầu bằng cách cài đặt server ns1 , server này sẽ được cấu hình làm server DNS chính cho các vùng của ta .

Điều đầu tiên ta nên làm là đảm bảo tất cả các khóa SSL và certificate mà NSD sử dụng để giao tiếp an toàn giữa phần daemon của ứng dụng và bộ điều khiển được tạo.

Để làm điều này, hãy nhập:

sudo nsd-control-setup 

Có thể đã có các khóa và certificate trong folder /etc/nsd , nhưng lệnh này sẽ tạo ra bất kỳ thứ gì bị thiếu.

Cấu hình file nsd.conf

Tệp cấu hình chính cho NSD là file có tên nsd.conf nằm trong folder /etc/nsd .

Có một file chỉ chứa một vài comment đã có trong folder này, nhưng ta sẽ sử dụng file ví dụ được comment đầy đủ hơn làm mẫu của ta . Sao chép file này ngay bây giờ để overrides file hiện tại:

sudo cp /usr/share/doc/nsd/examples/nsd.conf /etc/nsd/nsd.conf 

Bây giờ, hãy mở file mới trong editor của bạn với các quyền sudo:

sudo nano /etc/nsd/nsd.conf 

Bên trong, bạn sẽ thấy một số dòng cấu hình đã comment được sắp xếp thành các phần. Các phần chính là server , remote-control , key , patternzone . Ta sẽ sử dụng hầu hết những thứ này cho cấu hình của ta .

Để bắt đầu, ta nên cấu hình các thuộc tính cơ bản của server DNS trong phần server . Ta sẽ xử lý lưu lượng IPv4 cơ bản trên cổng DNS mặc định 53. Ta sẽ sử dụng user nsd mà ta đã cài đặt trước đó. Hầu hết trong số này sẽ là giá trị mặc định, nhưng ta sẽ bỏ ghi chú các dòng liên quan để làm cho giá trị của chúng rõ ràng.

Ta cũng muốn cài đặt rõ ràng folder chứa dữ liệu vùng của ta cũng như các vị trí file log và pid của ta . Có nhiều lựa chọn cấu hình khác mà bạn có thể đặt cho phần này, nhưng ta sẽ giữ nó tương đối đơn giản. Vui lòng áp dụng các thay đổi bổ sung.

Phần server của ta sẽ trông như thế này:

server:     do-ip4: yes     port: 53     username: nsd     zonesdir: "/etc/nsd"     logfile: "/var/log/nsd.log"     pidfile: "/run/nsd/nsd.pid" 

Tiếp theo, ta hãy xem phần remote-control . Phần này hơi nhầm lẫn vì nó không chỉ được sử dụng để điều khiển daemon từ xa. Ta sẽ cấu hình điều này để kiểm soát daemon local .

Đầu tiên, ta cần kích hoạt tài nguyên và đặt giao diện cũng như số cổng của nó. Tất cả điều này có thể được thực hiện bằng cách bỏ ghi chú các dòng thích hợp và thay đổi chỉ thị control-enable thành “yes” .

Tiếp theo, ta có thể bỏ ghi chú các dòng chỉ định file khóa và certificate . Chúng trùng với tên file được tạo khi ta chạy lệnh nsd-control-setup và không cần phải sửa đổi khi chúng được bỏ ghi chú.

Giá trị của ta cho phần này sẽ giống như sau:

remote-control:     control-enable: yes     control-interface: 127.0.0.1     control-port: 8952     server-key-file: "/etc/nsd/nsd_server.key"     server-cert-file: "/etc/nsd/nsd_server.pem"     control-key-file: "/etc/nsd/nsd_control.key"     control-cert-file: "/etc/nsd/nsd_control.pem" 

Tiếp theo, ta sẽ cấu hình phần key . Phần này sẽ chứa các khóa bí mật mà NSD sẽ sử dụng để thực hiện an toàn việc chuyển vùng giữa các server chính và phụ của ta .

Ta cần đặt tên và thuật toán sẽ được sử dụng. Ta sẽ sử dụng tên demokey cho ví dụ của ta . Ta cũng sẽ sử dụng thuật toán mặc định ( hmac-sha256 ) mà họ đã chọn.

Đối với bản thân bí mật, ta sẽ đưa ra lời khuyên trong comment về cách tạo một cách an toàn. Thoát khỏi editor . Trong terminal của bạn, hãy chạy lệnh sau:

dd if=/dev/random of=/dev/stdout count=1 bs=32 | base64 

Bạn sẽ nhận được một khóa được tạo ngẫu nhiên trong kết quả của lệnh:

0+1 records in 0+1 records out 19 bytes (19 B) copied, 0.000571766 s, 33.2 kB/s +kO0Vu6gC+9bxzMy3TIZVLH+fg== 

Sao chép kết quả màu đỏ ở trên và mở lại file cấu hình của bạn. Sử dụng kết quả đã sao chép làm giá trị của tham số secret . Phần này sẽ giống như sau:

key:     name: "demokey"     algorithm: hmac-sha256     secret: "+kO0Vu6gC+9bxzMy3TIZVLH+fg==" 

Tiếp theo, ta sẽ cài đặt một mẫu đơn giản vì ta có một số thông tin lặp lại liên quan đến server phụ của ta . Ta sẽ thông báo và chuyển các khu vực của ta sang cùng một khu vực phụ mỗi lần, vì vậy việc tạo ra một mô hình có ý nghĩa.

Ta sẽ gọi mẫu của ta là tosecondary để mô tả mẫu sẽ được sử dụng để làm gì. Ta sẽ đặt tên và file cho từng vùng riêng lẻ, vì vậy ta không cần phải lo lắng về điều đó trong mẫu.

Ta muốn đặt tham số notify trong mẫu của ta để tham chiếu địa chỉ IP của server phụ của ta . Ta cũng muốn sử dụng khóa mà ta đã chỉ định để chuyển các vùng một cách an toàn với TSIG. Ta sẽ cài đặt tham số provide-xfr theo cùng một cách.

Cuối cùng, phần pattern của ta sẽ trông như thế này:

pattern:     name: "tosecondary"     notify: 192.0.2.2 demokey     provide-xfr: 192.0.2.2 demokey 

Cuối cùng, ta đến phần zone của ta . Ở đây, ta cấu hình cách NSD sẽ xử lý các vùng cụ thể của ta và các file liên quan của chúng.

Đầu tiên, ta sẽ cấu hình vùng chuyển tiếp của ta . Ta cần cài đặt vùng cho vùng example.com của ta . Điều này đơn giản như chỉ định chính domain dưới tham số name , chỉ định tên mà ta sẽ sử dụng cho file vùng và bao gồm mẫu ta đã tạo ở trên để chuyển domain này sang server phụ của ta .

Vùng chuyển tiếp đã hoàn thành cho bản demo của ta sẽ trông như thế này:

zone:     name: "example.com"     zonefile: "example.com.zone"     include-pattern: "tosecondary" 

Tiếp theo, ta có thể chăm sóc vùng đảo ngược. Vùng đảo ngược về cơ bản là một file vùng cho phép phần mềm DNS ánh xạ địa chỉ IP trở lại tên server cho client . Nhìn chung, với các hosting như DigitalOcean, việc này do nhà cung cấp hosting đảm nhận.

Ví dụ: với DigitalOcean, bạn không được giao trách nhiệm cho một loạt địa chỉ IP để cài đặt ánh xạ ngược. Thay vào đó, DigitalOcean tự động tạo các ánh xạ ngược cần thiết nếu bạn đặt tên server của server trong console thành FQDN mà bạn muốn nó được ánh xạ lại.

Bạn có thể tìm hiểu thêm về ánh xạ ngược bằng cách đọc phần “Một chút về vùng đảo ngược” của hướng dẫn chỉ dành cho người có thẩm quyền Bind . Ta sẽ chỉ cho bạn cách cài đặt các vùng đảo ngược cho NSD cho mục đích thông tin và để linh hoạt hơn, mặc dù điều này sẽ chỉ phù hợp trong các tình huống mà bạn đã được ủy quyền kiểm soát các ánh xạ ngược cho một khối IP.

Đối với vùng đảo ngược, ta lấy ba octet đầu tiên của địa chỉ IP, đảo ngược chúng và thêm chúng dưới dạng ủy quyền domain phụ vào domain đặc biệt in-addr.arpa . Đây là cách hệ thống DNS tìm kiếm địa chỉ IP bằng các phương pháp tra cứu giống như các domain thông thường. Đối với trường hợp của ta , ta sẽ tạo một vùng đảo ngược xác định ánh xạ 2.0.192.in-addr.arpa . Điều này sẽ trông rất giống với đặc điểm kỹ thuật vùng chuyển tiếp:

zone:     name: "2.0.192.in-addr.arpa"     zonefile: "192.0.2.zone"     include-pattern: "tosecondary" 

Lưu file khi bạn hoàn tất.

Tạo file vùng chuyển tiếp

Bây giờ, ta cần tạo file vùng chuyển tiếp. Trong cấu hình của ta , ta đặt tên file vùng là “example.com.zone”. Ta sẽ phải tạo một file với tên này trong folder /etc/nsd của ta .

Mở file đó trong editor của bạn với các quyền sudo:

sudo nano /etc/nsd/example.com.zone 

Điều đầu tiên ta cần làm là cài đặt một vài thông số lên trên. Ta sẽ đặt tham số $ORIGIN trỏ đến domain mà ta đang cấu hình ở định dạng FQDN (hoàn chỉnh với dấu chấm kết thúc). Ta cũng muốn đặt thời gian tồn tại mặc định. Ta sẽ sử dụng 1800 giây hoặc 30 phút:

$ORIGIN example.com. $TTL 1800 

Tiếp theo, ta cần SOA của ta , hoặc bắt đầu profile thẩm quyền. Nó sẽ trông như thế này:

@       IN      SOA     ns1.example.com.      admin.example.com. (                         2014070201        ; serial number                         3600                    ; refresh                         900                     ; retry                         1209600                 ; expire                         1800                    ; ttl                         ) 

Điều này xác định một số giá trị trên toàn vùng. ns1.example.com. giá trị được sử dụng để chỉ định vị trí domain của một trong những server có thẩm quyền cho vùng này. admin.example.com. được sử dụng để chỉ định một địa chỉ email nơi có thể liên hệ với các administrator khu vực.

Trong trường hợp này, địa chỉ email là admin@example.com . Trong file vùng DNS, ký hiệu “@” phải được đổi thành dấu chấm. Dấu chấm kết thúc cũng rất quan trọng, vì chúng luôn có khi chỉ định FQDN.

Các giá trị trong ngoặc đơn xác định một số giá trị cho vùng của ta . Cái duy nhất ta sẽ đề cập ở đây là số sê-ri. Giá trị này phải được tăng lên mỗi khi bạn thực hiện thay đổi đối với file vùng. Ở đây, ta đang chứng minh bằng cách sử dụng ngày của văn bản này (ngày 02 tháng 7 năm 2014) cộng với một số sửa đổi.

Tiếp theo, ta cần sử dụng bản ghi NS để xác định server định danh có thẩm quyền cho vùng này. Hãy nhớ sử dụng FQDN cho domain của bạn, bao gồm cả dấu chấm kết thúc:

                    IN      NS      ns1.example.com.                     IN      NS      ns2.example.com. 

Tiếp theo, ta cần cài đặt các bản ghi A sẽ thực sự cho khách hàng biết cách truy cập server định danh mà ta đã chỉ định. Đây là những gì ánh xạ tên server của ta với địa chỉ IP thực của chúng:

ns1                 IN      A       192.0.2.1 ns2                 IN      A       192.0.2.2 

Cuối cùng, ta muốn thêm bất kỳ bản ghi A bổ sung nào cho các server khác của ta . Trong trường hợp của ta , ta sẽ cài đặt domain cơ sở ( example.com ) và tên server www để ánh xạ tới web server của ta :

@                   IN      A       192.0.2.3 www                 IN      A       192.0.2.3 

Khi bạn hoàn thành, file đã hoàn thành của bạn sẽ trông như thế này:

$ORIGIN example.com. $TTL 1800 @       IN      SOA     ns1.example.com.      admin.example.com. (                         2014070201        ; serial number                         3600                    ; refresh                         900                     ; retry                         1209600                 ; expire                         1800                    ; ttl                         ) ; Name servers                     IN      NS      ns1.example.com.                     IN      NS      ns2.example.com.  ; A records for name servers ns1                 IN      A       192.0.2.1 ns2                 IN      A       192.0.2.2  ; Additional A records @                   IN      A       192.0.2.3 www                 IN      A       192.0.2.3 

Lưu file khi bạn hoàn tất.

Tạo file vùng đảo ngược

Tiếp theo, ta sẽ tạo một file tương tự cho vùng đảo ngược của ta . Lưu ý điều này chỉ cần thiết nếu bạn đã được giao trách nhiệm về ánh xạ ngược của một khối địa chỉ.

Tạo file vùng đảo ngược mà bạn đã tham chiếu trong file nsd.conf của bạn và mở file đó với quyền sudo trong editor của bạn:

sudo nano /etc/nsd/192.0.2.zone 

, ta sẽ bắt đầu bằng cách xác định các tham số $ORIGIN$TTL . Lần này, hãy nhớ đặt root thành domain phụ in-addr.arpa cho vùng của bạn. Trong trường hợp của ta , nó sẽ trông như thế này:

$ORIGIN 2.0.192.in-addr.arpa. $TTL 1800 

Tiếp theo, ta cần cài đặt các bản ghi SOA, giống như trước. Ta có thể sử dụng khá nhiều các giá trị giống nhau chính xác cho file này vì cùng một email và server định danh có thẩm quyền chịu trách nhiệm cho cả hai vùng. Hơn nữa, các giá trị số cũng sẽ hoạt động trong trường hợp này. Hãy nhớ sửa đổi số sê-ri mỗi khi bạn thực hiện thay đổi:

@       IN      SOA     ns1.example.com.      admin.example.com. (                         2014070201        ; serial number                         3600                    ; refresh                         900                     ; retry                         1209600                 ; expire                         1800                    ; ttl                         ) 

Khi bạn hoàn tất, file sẽ trông như thế này:

, ta cần xác định các server định danh có thẩm quyền cho vùng. Đây sẽ là các server giống nhau :

                        IN      NS      ns1.example.com.                         IN      NS      ns2.example.com. 

Cuối cùng, ta cần cung cấp ánh xạ domain ngược thực tế bằng cách định tuyến octet cuối cùng của mỗi địa chỉ IP tới FQDN của server được liên kết bằng cách sử dụng bản ghi PTR:

1                       IN      PTR     ns1.example.com. 2                       IN      PTR     ns2.example.com. 3                       IN      PTR     www.example.com. 

Khi bạn hoàn tất, file sẽ trông như thế này:

$ORIGIN 2.0.192.in-addr.arpa. $TTL 1800 @       IN      SOA     ns1.example.com.      admin.example.com. (                         2014070201        ; serial number                         3600                    ; refresh                         900                     ; retry                         1209600                 ; expire                         1800                    ; ttl                         ) ; Name servers                         IN      NS      ns1.example.com.                         IN      NS      ns2.example.com.  ; PTR records 1                       IN      PTR     ns1.example.com. 2                       IN      PTR     ns2.example.com. 3                       IN      PTR     www.example.com. 

Lưu file khi bạn hoàn tất.

Kiểm tra file và khởi động lại dịch vụ

Bây giờ ta đã cấu hình server chính của bạn , ta có thể tiếp tục và kiểm tra file cấu hình và áp dụng các thay đổi của ta .

Bạn có thể kiểm tra cú pháp của file cấu hình chính bằng cách sử dụng công cụ nsd-checkconf . Chỉ cần trỏ công cụ đến file cấu hình chính của bạn:

sudo nsd-checkconf /etc/nsd/nsd.conf 

Nếu điều này trả về ngay lập tức mà không có kết quả , điều đó nghĩa là cú pháp của file cấu hình chính của bạn là hợp lệ. Nếu bạn gặp lỗi, hãy kiểm tra cú pháp của file cấu hình của bạn để sửa bất kỳ lỗi nào.

Sau khi bạn có thể thực hiện kiểm tra sạch sẽ, bạn có thể khởi động lại dịch vụ bằng lệnh :

sudo service nsd restart 

Thao tác này sẽ dừng và khởi động trình NSD.

Kiểm tra log để xem bất kỳ thông báo nào:

sudo tail -f /var/log/nsd.log 

Bạn sẽ thấy một số lỗi giống như sau:

. . . [1404333729] nsd[2142]: error: xfrd: zone 2.0.192.in-addr.arpa: received notify response error NAME ERROR from 192.0.2.2 [1404333729] nsd[2142]: error: xfrd: zone 2.0.192.in-addr.arpa: max notify send count reached, 192.0.2.2 unreachable 

Điều này xảy ra ở đây vì NSD đang cố gắng chuyển vùng sang server phụ, server này vẫn chưa được cấu hình .

Cấu hình server NSD phụ

Bây giờ ta đã cài đặt server chính, ta có thể tiếp tục và chuẩn bị sẵn sàng server phụ.

, ta muốn đảm bảo các khóa và certificate SSL của ta đều được tạo và có sẵn. Để thực hiện việc này, hãy chạy lệnh sau:

sudo nsd-control-setup 

Điều này sẽ đảm bảo tất cả các file thông tin xác thực cần thiết để kiểm soát daemon đều có sẵn cho ta .

Cấu hình file nsd.conf

Tệp nsd.conf cho server phụ hầu hết sẽ giống với server chính. Chỉ có một số điều mà ta cần phải sửa đổi. Bắt đầu bằng cách sao chép file /etc/nsd/nsd.conf của server chính vào file /etc/nsd/nsd.conf của server phụ.

Tệp của server phụ này bây giờ sẽ trông giống như sau:

server:     do-ip4: yes     port: 53     username: nsd     zonesdir: "/etc/nsd"     logfile: "/var/log/nsd.log"     pidfile: "/run/nsd/nsd.pid"  remote-control:     control-enable: yes     control-interface: 127.0.0.1     control-port: 8952     server-key-file: "/etc/nsd/nsd_server.key"     server-cert-file: "/etc/nsd/nsd_server.pem"     control-key-file: "/etc/nsd/nsd_control.key"     control-cert-file: "/etc/nsd/nsd_control.pem"  key:     name: "demokey"     algorithm: hmac-sha256     secret: "+kO0Vu6gC+9bxzMy3TIZVLH+fg=="  pattern:     name: "tosecondary"     notify: 192.0.2.2 demokey     provide-xfr: 192.0.2.2 demokey  zone:     name: "example.com"     zonefile: "example.com.zone"     include-pattern: "tosecondary"  zone:     name: "2.0.192.in-addr.arpa"     zonefile: "192.0.2.zone"     include-pattern: "tosecondary" 

Đây gần như là chính xác những gì ta cần.

Máy server , remote-controlkey phần key đã được cấu hình hoàn chỉnh. "Bí mật" trong phần key phải trùng với giá trị của server chính, vì vậy việc sao chép nội dung file hoàn chỉnh sẽ giúp bạn dễ dàng đáp ứng yêu cầu này.

Điều đầu tiên ta cần sửa đổi là phần pattern . Phần mà ta đã sao chép dành riêng cho server chính, vì vậy ta muốn sửa đổi nó để giải quyết mọi thứ từ góc độ của server phụ.

Đầu tiên, hãy thay đổi tên thành một cái gì đó mô tả hơn. Ta sẽ sử dụng cùng một quy ước và gọi đây là fromprimary . Ta cũng cần thay đổi các chỉ thị mà điều này đặt ra. Thay vì tham số notify , các server thứ cấp cần một tham số allow-notify , chỉ định các server được phép thông báo. Ta sẽ vẫn sử dụng cùng một khóa, vì vậy ta chỉ cần sửa đổi tên và địa chỉ IP phù hợp.

Theo cách tương tự, ta cần thay đổi tham số provide-xfr thành request-xfr . Định dạng của điều này thay đổi một chút. Ta cần chỉ định rằng ta muốn chuyển AXFR (loại duy nhất mà các bầu cử sơ bộ NSD có khả năng thực hiện) và ta cần chỉ định địa chỉ IP số cổng của chính.

Phần pattern sẽ trông giống như thế này khi bạn hoàn thành:

pattern:     name: "fromprimary"     allow-notify: 192.0.2.1 demokey     request-xfr: AXFR 192.0.2.1@53 demokey 

Đối với các phần zone , điều duy nhất ta cần sửa đổi là include-pattern để phù hợp với mẫu mới mà ta vừa tạo:

zone:     name: "example.com"     zonefile: "example.com.zone"     include-pattern: "fromprimary"  zone:     name: "2.0.192.in-addr.arpa"     zonefile: "192.0.2.zone"     include-pattern: "fromprimary" 

Khi bạn hoàn tất, hãy lưu file .

Kiểm tra file và khởi động lại dịch vụ

Vì server phụ của ta sẽ nhận tất cả dữ liệu vùng của nó thông qua chuyển từ server chính, ta thực sự không cần phải cấu hình các file vùng trên server này.

, ta nên kiểm tra cú pháp của file cấu hình chính bằng lệnh :

sudo nsd-checkconf /etc/nsd/nsd.conf 

Nếu gặp bất kỳ lỗi nào, bạn cần xem xét lại file nsd.conf của bạn để giải quyết các vấn đề về cú pháp. Nếu lệnh trả về mà không có bất kỳ kết quả nào, điều đó nghĩa là cú pháp của bạn hợp lệ trong file .

Khi file cấu hình của bạn vượt qua bài kiểm tra, bạn có thể khởi động lại dịch vụ bằng lệnh :

sudo service nsd restart 

Kiểm tra log đảm bảo mọi thứ vẫn diễn ra bình thường:

sudo tail -f /var/log/nsd.log 

Ủy quyền cho Server Định danh của bạn

Bây giờ, các server NSD chỉ có thẩm quyền của bạn sẽ được cấu hình và sẵn sàng cung cấp thông tin DNS về domain của bạn. Tuy nhiên, ta vẫn cần cấu hình domain của bạn để domain đó biết sử dụng server định danh của bạn.

Để làm điều này, bạn cần điều chỉnh một số cài đặt trong tổ chức đăng ký domain mà bạn đã mua domain của bạn . Một số thuật ngữ và chắc chắn là giao diện sẽ khác nhau giữa các nhà đăng ký, nhưng bạn có thể tìm thấy các cài đặt nếu bạn xem xét cẩn thận.

Tôi sẽ trình bày cách thực hiện điều này với Namecheap , một công ty đăng ký domain khá chuẩn.

Ta cần điều chỉnh server định danh của bạn theo cách cho phép ta cài đặt các bản ghi kết dính tại công ty mẹ của domain . Điều này là cần thiết khi nào server định danh nằm trong chính domain .

Khi bạn ủy quyền một domain phụ (như example.com từ domain com ), bạn phải chỉ định server định danh có thẩm quyền cho domain . Nếu server định danh nằm trong domain , bạn cũng phải bao gồm bản ghi keo, bản ghi này chỉ đơn giản là bản ghi A cho từng server định danh có thẩm quyền cho vùng được ủy quyền.

Ta cần điều này vì việc tra cứu DNS sẽ bị mắc kẹt nếu các bản ghi keo không được bao gồm. Khách hàng sẽ hỏi công ty đăng ký của ta , người có thẩm quyền đối với domain example.com và công ty đăng ký của ta sẽ (sau khi ta cấu hình điều này) trả về ns1.example.comns2.example.com . Nếu ta không bao gồm các bản ghi A để giải quyết chúng thành địa chỉ IP, thì client sẽ không bao giờ có thể vượt qua thời điểm này. Nó sẽ không có cách nào để tìm địa chỉ IP của server định danh mà nó cần vì chúng thường được xác định trong chính server định danh.

Vị trí trong giao diện của tổ chức đăng ký domain , nơi bạn có thể cấu hình server định danh của bạn địa chỉ IP được liên kết của chúng sẽ khác nhau tùy thuộc vào nhà cung cấp của bạn. Với Namecheap, có một phần gọi là “Đăng ký server tên” cho phép bạn đặt địa chỉ IP của server định danh để tạo bản ghi keo:

Namecheap đăng ký  server  định danh

Tại đây, bạn có thể cài đặt server định danh và ánh xạ chúng tới một địa chỉ IP cụ thể:

 Server  định danh bản đồ Namecheap

Khi hoàn tất việc này, bạn cần đặt server định danh đang hoạt động được sử dụng cho domain của bạn . Namecheap có một tùy chọn được gọi là “ Cài đặt Server Tên domain ” thực hiện điều đó:

Namecheap đặt  server  định danh

Trong giao diện mà bạn nhận được khi chọn tùy chọn đó, bạn có thể nhập tên server của server định danh mà bạn vừa đăng ký:

 Server  tên đầu vào Namecheap

Những thay đổi bạn thực hiện với tổ chức đăng ký domain của bạn có thể mất một thời gian để có hiệu lực. Dữ liệu cũng sẽ mất thêm thời gian để lan truyền đến các server DNS còn lại trên thế giới. Thông thường, quá trình này sẽ hoàn tất trong 24-48 giờ tới.

Kết luận

Sử dụng hướng dẫn này, bây giờ bạn sẽ có một server DNS chính và phụ chỉ có thẩm quyền được dùng để cung cấp thông tin DNS về domain của bạn. Không giống như Bind, NSD được tối ưu hóa cho hành vi có thẩm quyền hiệu suất cao, vì vậy bạn có thể có được hiệu suất cao hơn được điều chỉnh cụ thể theo nhu cầu của bạn.


Tags:

Các tin liên quan

Cách cấu hình bind server lưu trữ hoặc chuyển tiếp DNS trên Ubuntu 14.04
2014-07-01
cách cấu hình bind làm server DNS chỉ ủy quyền trên Ubuntu 14.04
2014-07-01
So sánh các loại server DNS: Cách chọn cấu hình DNS phù hợp
2014-07-01
5 Thiết lập server Chung cho Ứng dụng Web của Bạn
2014-05-30
Cách sử dụng npm để quản lý gói Node.js trên server Linux
2014-05-14
Cách sử dụng npm để xây dựng và xuất bản các gói Node.js trên server Linux
2014-05-14
Cách khắc phục sự cố trang web thường gặp trên server Linux
2014-05-09
Cách Fail2Ban hoạt động để bảo vệ các dịch vụ trên server Linux
2014-05-07
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Ubuntu 14.04
2014-04-25
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 14.04
2014-04-18