Thứ tư, 12/06/2013 | 00:00 GMT+7

Cách cài đặt server DNS BIND trên CentOS 6


Mở đầu

Bài viết này sẽ hướng dẫn bạn cách cài đặt và cấu hình BIND DNS Server. Nếu bạn đang tìm kiếm hướng dẫn về cách sử dụng dịch vụ DNS tích hợp của DigitalOcean, bạn có thể cần xem lại bài viết "Cách cài đặt tên server với DigitalOcean" .

Trước khi bắt đầu, bạn nên có ít nhất hai server cloud để chạy server định danh của bạn . Hai server định danh được đề xuất đảm bảo server chính và phụ của bạn là dự phòng trong trường hợp bị lỗi. Bạn cũng có thể cần xem xét sử dụng hai POP khác nhau. Ví dụ: ta đã sử dụng San Francisco 1 và New York 1. Đối với mục đích của hướng dẫn này, sẽ giả định bạn đang cấu hình cả server định danh chính và phụ.

Cần lưu ý nếu bạn đang quản lý một số lượng lớn domain thì đây có thể không phải là giải pháp khả thi nhất, vì bạn cần phải thêm domain theo cách thủ công trên cả server định danh chính và phụ. Như đã nói, chạy server định danh của bạn là một cách tốt để có quyền kiểm soát trực tiếp hơn đối với cơ sở hạ tầng lưu trữ của bạn và khẳng định toàn quyền kiểm soát các bản ghi DNS của bạn.

Như với bất kỳ server mới nào, điều quan trọng là phải đảm bảo hệ thống của bạn được cập nhật. Bạn có thể xác minh điều này bằng cách kiểm tra các bản cập nhật bằng yum như sau:

yum update -y

(Lưu ý: Trong DigitalOcean, ta gọi các server cloud của bạn là " server ". Ta sẽ sử dụng cả hai thuật ngữ trong suốt hướng dẫn này)

Cài đặt BIND ban đầu

Để bắt đầu, ta cần cài đặt các gói BIND và BIND Utilities bằng yum .

yum install bind bind-utils -y

Tiếp theo, ta sẽ mở file cấu hình BIND (có tên) và thực hiện một số sửa đổi.

nano -w /etc/named.conf

Phần "tùy chọn" của bạn sẽ xuất hiện như sau, thay thế 2.2.2.2 bằng IP của server thứ hai của bạn.

options {
	    #listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory	"/var/named";
        dump-file	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
		allow-query { any; };
        allow-transfer     { localhost; 2.2.2.2; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

Ở trên, phải chú thích listening-on để nghe trên tất cả các giao diện có sẵn. Nên tắt đệ quy để ngăn server của bạn bị lạm dụng trong các cuộc tấn công DDoS "phản ánh". Các phép chuyển danh sách cho phép chỉ thị chuyển sang IP server thứ của bạn. Hơn nữa, ta đã thay đổi chỉ thị allow-query thành "bất kỳ" để cho phép user truy cập thích hợp vào các vùng được lưu trữ.

Tiếp theo, ta sẽ muốn thêm một vùng mới cho domain đầu tiên của bạn , bạn nên thêm phần sau vào tên.conf của bạn bên dưới các vùng hiện có.

        zone "mydomain.com" IN {
                type master;
                file "mydomain.com.zone";
                allow-update { none; };
        };

Sau khi lưu tên.conf với các thay đổi ở trên, ta đã sẵn sàng tạo file vùng đầu tiên của bạn .

Cấu hình các vùng BIND

Trước tiên, ta cần mở file vùng, sử dụng tên bạn đã chỉ định trong cấu hình ở trên. (Ví dụ: mydomain.com.zone)

nano -w /var/named/mydomain.com.zone

Ta sẽ thêm các nội dung sau vào file mới tạo của ta . Bạn nên thay thế thông tin áp dụng bằng thông tin của bạn , trong đó 1.1.1.1 là IP của server đầu tiên của bạn, 2.2.2.2 là IP của server thứ hai và 3.3.3.3 là IP mà bạn muốn trỏ domain đến, chẳng hạn như một server chạy web server . Bạn có thể tự do thêm các mục bổ sung ở cùng một định dạng.

$TTL 86400
@   IN  SOA     ns1.mydomain.com. root.mydomain.com. (
        2013042201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
; Specify our two nameservers
		IN	NS		ns1.mydomain.com.
		IN	NS		ns2.mydomain.com.
; Resolve nameserver hostnames to IP, replace with your two server IP addresses.
ns1		IN	A		1.1.1.1
ns2		IN	A		2.2.2.2

; Define hostname -> IP pairs which you wish to resolve
@		IN	A		3.3.3.3
www		IN	A		3.3.3.3

Bây giờ ta có thể bắt đầu được đặt tên lần đầu tiên. Quá trình này có thể mất vài phút trong khi được đặt tên tạo file rndc.key , file này chỉ xảy ra trong lần thực thi đầu tiên.

service named restart

Sau khi được đặt tên đã bắt đầu thành công, ta sẽ muốn đảm bảo nó được kích hoạt như một dịch vụ khởi động, bằng cách chạy như sau:

chkconfig named on

Bây giờ, ta sẽ có một server định danh chính hoạt động đầy đủ. Bạn có thể xác minh BIND đang hoạt động chính xác bằng cách chạy lệnh sau, thay thế 1.1.1.1 bằng IP của server đầu tiên của bạn.

dig @1.1.1.1 mydomain.com

Nếu bạn nhận được phản hồi bao gồm câu trả lời và phần thẩm quyền, server định danh của bạn đã được cấu hình chính xác.

Cấu hình server tên slaver

Với server định danh chính của ta được cấu hình , bây giờ ta sẽ cài đặt một server định danh slaver trên server cloud thứ hai của ta .

Như mọi khi, hãy đảm bảo hệ thống của bạn được cập nhật bằng cách kiểm tra các bản cập nhật với yum như sau:

yum update -y

Ta có thể bắt đầu bằng cách cài đặt BIND (và các tiện ích liên quan) trên server thứ hai, theo cách tương tự như server đầu tiên:

yum install bind bind-utils -y

Ta sẽ tiếp tục bằng cách mở tên.conf và áp dụng các thay đổi giống như ta đã thực hiện trước đó, bỏ qua dòng " cho phép chuyển ". Chỉ thị này là không cần thiết vì ta sẽ chỉ chuyển các bản ghi từ server định danh chính của ta .

nano -w /etc/named.conf
options {
		#listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory	"/var/named";
        dump-file	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
		allow-query { any; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

Ta sẽ thêm vùng mà ta đã cấu hình trên server đầu tiên, lần này thay đổi chỉ thị "type" thành slave, thay vì master. Bạn nên thay thế "1.1.1.1" bằng địa chỉ IP của server đầu tiên của bạn.

zone "mydomain.com" IN {
	type slave;
	masters { 1.1.1.1; };
	file "mydomain.com.zone";
};

Sau khi cấu hình vùng slaver , ta sẽ bắt đầu đặt tên. , quá trình này có thể mất vài phút trong khi file rndc.key của ta được tạo ban đầu.

service named start

Như với server cloud đầu tiên, ta muốn đảm bảo có tên được đặt để chạy khi khởi động với những điều sau:

chkconfig named on

Server định danh slaver của bạn bây giờ sẽ được cài đặt và chạy. Bạn có thể xác minh nó đã hoạt động hoàn toàn bằng cách sử dụng lại đào , thay thế 2.2.2.2 bằng IP của server thứ hai của bạn.

dig @2.2.2.2 mydomain.com

Sau bất kỳ thay đổi nào bạn thực hiện đối với file vùng chính, bạn cần hướng dẫn BIND reload . Lưu ý , bạn cũng phải tăng chỉ thị "nối tiếp" đảm bảo tính đồng bộ giữa chủ và tớ.

Để reload các file vùng, ta cần chạy lệnh sau trên server định danh chính, tiếp theo là lệnh phụ:

rndc reload

BIND trong môi trường chroot

Thông thường, bạn nên cài đặt gói bổ sung " bind-chroot ", gói này sẽ loại bỏ các quyền của BIND vào môi trường chroot.

May mắn là gói CentOS thực hiện điều này cực kỳ đơn giản. Khía cạnh duy nhất đáng chú ý là các đường dẫn hoạt động cho BIND sẽ thay đổi thành các đường dẫn tương đương được chroot của chúng, ví dụ: / var / tên trở thành / var / tên / chroot / var / được đặt tên Với CentOS 6, bạn sẽ không cần di chuyển các file nào dưới dạng gói tự động tạo các softlink cứng đến các folder không được chroot.

Nếu bạn muốn bật tính năng này để tăng cường bảo mật mà nó cung cấp, bạn có thể làm như sau:

yum install bind-chroot -y
service named restart

Tags:

Các tin liên quan

Cách cài đặt eJabberd XMPP Server trên Ubuntu
2013-06-04
Cách cấu hình tmux trên server cloud
2013-05-20
Cách cài đặt cPanel trên server ảo chạy Centos 6
2012-11-02
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Debian
2012-10-04
Cách cài đặt Joomla trên server ảo chạy CentOS 6
2012-09-27
Cách cài đặt Joomla trên server ảo chạy CentOS 6
2012-09-27
Cách cài đặt Drupal trên server ảo chạy CentOS 6
2012-09-25
Cách cài đặt Ruby on Rails trên Arch Linux với RVM
2012-09-21
Cách cài đặt Wordpress trên Arch Linux
2012-09-19
Thiết lập server ban đầu với Arch Linux
2012-09-10