Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 18.04
Một phần quan trọng của việc quản lý cấu hình server và cơ sở hạ tầng bao gồm duy trì một cách dễ dàng để tra cứu network interface và địa chỉ IP theo tên, bằng cách cài đặt Hệ thống domain (DNS) thích hợp. Sử dụng domain đủ điều kiện (FQDN), thay vì địa chỉ IP, để chỉ định địa chỉ mạng giúp giảm bớt cấu hình của dịch vụ và ứng dụng, đồng thời tăng khả năng bảo trì của các file cấu hình. Cài đặt DNS của bạn cho mạng riêng của bạn là một cách tốt để cải thiện việc quản lý các server của bạn.Trong hướng dẫn này, ta sẽ giới thiệu cho các bạn cách cài đặt server DNS nội bộ, sử dụng phần mềm server định danh BIND (BIND9) trên Ubuntu 18.04, phần mềm được dùng bởi server của bạn để phân giải tên server riêng và địa chỉ IP riêng. Điều này cung cấp một cách trung tâm để quản lý tên server nội bộ và địa chỉ IP riêng của bạn, điều này không thể thiếu khi môi trường của bạn mở rộng đến nhiều server .
Phiên bản CentOS của hướng dẫn này có thể được tìm thấy tại đây .
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần cơ sở hạ tầng sau. Tạo từng server trong cùng một trung tâm dữ liệu với mạng riêng được bật :
- Server Ubuntu 18.04 mới để đóng role là server DNS chính, ns1
- (Được khuyến nghị) Server Ubuntu 18.04 thứ hai để phục vụ như một server DNS phụ, ns2
- Các server bổ sung trong cùng một trung tâm dữ liệu sẽ sử dụng server DNS của bạn
Trên mỗi server này, hãy cấu hình quyền truy cập quản trị thông qua user sudo
và firewall theo hướng dẫn cài đặt server ban đầu Ubuntu 18.04 của ta .
Nếu bạn không quen với các khái niệm DNS, bạn nên đọc ít nhất ba phần đầu tiên của Giới thiệu về Quản lý DNS của ta .
Cơ sở hạ tầng và mục tiêu mẫu
Đối với mục đích của bài viết này, ta sẽ giả định như sau:
- Ta có hai server sẽ được chỉ định làm server định danh DNS của ta . Ta sẽ gọi chúng là ns1 và ns2 trong hướng dẫn này.
- Ta có hai server khách bổ sung sẽ sử dụng cơ sở hạ tầng DNS mà ta tạo. Ta sẽ gọi chúng là host1 và host2 trong hướng dẫn này. Bạn có thể thêm bao nhiêu tùy thích cho cơ sở hạ tầng của bạn .
- Tất cả các server này đều tồn tại trong cùng một trung tâm dữ liệu. Ta sẽ giả định đây là trung tâm dữ liệu nyc3 .
- Tất cả các server này đều được bật mạng riêng (và nằm trên mạng con
10.128.0.0/16
. Bạn có thể sẽ phải điều chỉnh điều này cho các server của bạn ). - Tất cả các server được kết nối với một dự án chạy trên “example.com”. Vì hệ thống DNS của ta sẽ hoàn toàn nội bộ và riêng tư nên bạn không phải mua domain . Tuy nhiên, sử dụng domain bạn sở hữu có thể giúp tránh xung đột với các domain có thể định tuyến công khai.
Với những giả định này, ta quyết định rằng việc sử dụng sơ đồ đặt tên sử dụng “nyc3.example.com” để tham chiếu đến mạng con hoặc vùng riêng tư của ta là hợp lý. Do đó, host1 ‘s Đã Qualified Domain Name tin (FQDN) sẽ host1.nyc3.example.com. Tham khảo bảng sau các chi tiết liên quan:
Tổ chức | Role | FQDN riêng | Địa chỉ IP riêng |
---|---|---|---|
ns1 | Server DNS chính | ns1.nyc3.example.com | 10.128.10.11 |
ns2 | Server DNS phụ | ns2.nyc3.example.com | 10.128.20.12 |
host1 | Server lưu trữ chung 1 | host1.nyc3.example.com | 10.128.100.101 |
host2 | Server lưu trữ chung 2 | host2.nyc3.example.com | 10.128.200.102 |
Đến cuối hướng dẫn này, ta sẽ có một server DNS chính, ns1 và tùy chọn một server DNS phụ, ns2 , sẽ phục vụ như một bản backup .
Hãy bắt đầu bằng cách cài đặt server DNS chính của ta , ns1.
Cài đặt BIND trên Server DNS
host1.nyc3.example.com
, hãy thay thế nó bằng FQDN của server của bạn . Tương tự như vậy, nếu bạn thấy host1_private_IP
, hãy thay thế nó bằng địa chỉ IP riêng của server của bạn . Trên cả hai server DNS, ns1 và ns2 , hãy cập nhật cache ẩn gói apt
bằng lệnh :
- sudo apt-get update
Bây giờ cài đặt BIND:
- sudo apt-get install bind9 bind9utils bind9-doc
Đặt Ràng buộc với Chế độ IPv4
Trước khi tiếp tục, hãy đặt BIND thành chế độ IPv4 vì mạng riêng của ta sử dụng riêng IPv4. Trên cả hai server , hãy chỉnh sửa file cài đặt mặc định bind9
bằng lệnh :
- sudo nano /etc/default/bind9
Thêm “-4” vào cuối thông số OPTIONS
. Nó sẽ giống như sau:
. . . OPTIONS="-u bind -4"
Lưu file khi bạn hoàn tất.
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, hãy cấu hình server DNS chính.
Cấu hình Server DNS Chính
Cấu hình của BIND bao gồm nhiều file , được bao gồm từ file cấu hình chính, named.conf
. Những tên file này bắt đầu bằng named
vì đó là tên của quá trình mà BIND chạy (viết tắt của “daemon domain ”). Ta sẽ bắt đầu với việc cấu hình file tùy chọn.
Cấu hình Tệp Tùy chọn
Trên ns1 , mở file named.conf.options
để chỉnh sửa:
- sudo nano /etc/bind/named.conf.options
Phía trên hiện options
khối, tạo ra một khối mới ACL (Access Control List) được gọi là “ tin cậy ”. Đây là nơi ta sẽ xác định danh sách các client mà ta sẽ cho phép truy vấn DNS đệ quy từ đó (tức là các server của bạn nằm trong cùng một trung tâm dữ liệu với ns1 ). Sử dụng các địa chỉ IP riêng tư mẫu của ta , ta sẽ thêm ns1 , ns2 , host1 và host2 vào danh sách các ứng dụng client tin cậy của ta :
acl "trusted" { 10.128.10.11; # ns1 - can be set to localhost 10.128.20.12; # ns2 10.128.100.101; # host1 10.128.200.102; # host2 }; options { . . .
Bây giờ ta đã có danh sách các client DNS tin cậy , ta sẽ muốn chỉnh sửa khối options
. Hiện tại, phần bắt đầu của khối trông giống như sau:
. . . }; options { directory "/var/cache/bind"; . . . }
Bên dưới chỉ thị directory
, thêm các dòng cấu hình được đánh dấu (và thay thế bằng địa chỉ IP ns1 thích hợp) để nó trông giống như sau:
. . . }; options { directory "/var/cache/bind"; recursion yes; # enables resursive 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; }; . . . };
Khi bạn hoàn tất, hãy lưu file có named.conf.options
. Cấu hình trên chỉ định rằng chỉ server của bạn ( server “ tin cậy ”) mới có thể truy vấn server DNS của bạn cho các domain bên ngoài.
Tiếp theo, ta sẽ cấu hình file local , để chỉ định các vùng DNS của ta .
Cấu hình file local
Trên ns1 , mở file named.conf.local
để chỉnh sửa:
- sudo nano /etc/bind/named.conf.local
Ngoài một số comment , file phải trống. Ở đây, ta sẽ chỉ định các vùng chuyển tiếp và đảo ngược của ta . Vùng DNS chỉ định một phạm vi cụ thể để quản lý và xác định các bản ghi DNS. Vì tất cả các domain của ta sẽ nằm trong domain phụ “nyc3.example.com”, ta sẽ sử dụng domain đó làm vùng chuyển tiếp của bạn . Vì địa chỉ IP riêng của server của ta nằm trong không gian IP 10.128.0.0/16
, ta sẽ cài đặt vùng đảo ngược để có thể xác định tra cứu ngược trong phạm vi đó.
Thêm vùng chuyển tiếp với các dòng sau, thay thế tên vùng bằng của bạn và địa chỉ IP riêng của server DNS phụ trong lệnh allow-transfer
:
zone "nyc3.example.com" { type master; file "/etc/bind/zones/db.nyc3.example.com"; # zone file path allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary };
Giả sử rằng mạng con riêng của ta là 10.128.0.0/16
, hãy thêm vùng đảo ngược bằng các dòng sau ( lưu ý tên vùng đảo ngược của ta bắt đầu bằng “128.10” là đảo ngược bát phân của “10.128” ):
. . . }; zone "128.10.in-addr.arpa" { type master; 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 server của bạn trải dài nhiều mạng con riêng tư nhưng nằm trong cùng một trung tâm dữ liệu, hãy đảm bảo chỉ định một vùng và file vùng bổ sung cho từng mạng con riêng biệt. Khi bạn hoàn tất việc thêm tất cả các vùng mong muốn của bạn , hãy lưu và thoát khỏi file named.conf.local
.
Bây giờ các vùng của ta đã được chỉ định trong BIND, ta cần tạo các file vùng chuyển tiếp và đảo ngược tương ứng.
Tạo file vùng chuyển tiếp
Tệp vùng chuyển tiếp là nơi ta xác định các bản ghi DNS để tra cứu DNS chuyển tiếp. Nghĩa là, khi DNS nhận được một truy vấn tên, ví dụ: “host1.nyc3.example.com”, nó sẽ tìm trong file vùng chuyển tiếp để phân giải địa chỉ IP riêng tương ứng của host1 .
Hãy tạo folder chứa các file vùng của ta . Theo cấu hình name.conf.local của ta , vị trí đó phải là /etc/bind/zones
:
- sudo mkdir /etc/bind/zones
Ta sẽ căn cứ file vùng chuyển tiếp của bạn trên file vùng db.local
mẫu. Sao chép nó vào vị trí thích hợp bằng các lệnh sau:
- sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com
Bây giờ hãy chỉnh sửa file vùng chuyển tiếp của ta :
- sudo nano /etc/bind/zones/db.nyc3.example.com
Ban đầu, nó sẽ trông giống 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 cần chỉnh sửa bản ghi SOA. Thay thế “localhost” đầu tiên bằng FQDN của ns1 , sau đó thay thế “root.localhost” bằng “admin.nyc3.example.com”. Mỗi khi bạn chỉnh sửa file vùng, bạn cần tăng giá trị nối tiếp trước khi khởi động lại quy trình đã named
. Ta sẽ tăng nó lên “3”. Bây giờ nó sẽ trông giống như sau:
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial . . .
Tiếp theo, xóa ba bản ghi ở cuối file (sau bản ghi SOA). Nếu bạn không chắc chắn dòng nào cần xóa, chúng được đánh dấu bằng comment “xóa dòng này” ở trên.
Ở cuối file , hãy thêm bản ghi server định danh của bạn bằng các dòng sau (thay thế tên bằng tên của bạn ). Lưu ý 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 của bạn thuộc vùng này. Điều này bao gồm bất kỳ server nào có tên mà ta muốn kết thúc bằng “.nyc3.example.com” (thay thế tên và địa chỉ IP riêng). Sử dụng tên mẫu và địa chỉ IP riêng của ta , ta sẽ thêm các bản ghi A cho ns1 , ns2 , host1 và host2 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
Lưu file db.nyc3.example.com
.
Tệp vùng chuyển tiếp ví dụ cuối cùng của ta trông giống như 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
Bây giờ ta hãy chuyển sang (các) file vùng đảo ngược.
Tạo (các) Tệp Vùng Đảo ngược
Tệp vùng đảo ngược là nơi ta xác định bản ghi DNS PTR để tra cứu DNS ngược. Nghĩa là, khi DNS nhận được một truy vấn theo địa chỉ IP, ví dụ: “10.128.100.101”, nó sẽ tìm trong (các) file vùng đảo ngược để phân giải FQDN tương ứng, “host1.nyc3.example.com” trong trường hợp này .
Trên ns1 , đối với mỗi vùng đảo ngược được chỉ định trong file named.conf.local
, hãy tạo file vùng đảo ngược. Ta sẽ căn cứ (các) file vùng đảo ngược của bạn trên file vùng db.127
mẫu. Sao chép nó vào vị trí thích hợp bằng các lệnh sau (thay thế tên file đích để nó trùng với định nghĩa vùng ngược của bạn):
- sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128
Chỉnh sửa file vùng đảo ngược tương ứng với (các) vùng đảo ngược được xác định trong named.conf.local
:
- sudo nano /etc/bind/zones/db.10.128
Ban đầu, nó sẽ trông giống 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
Theo cách tương tự như file vùng chuyển tiếp, bạn cần chỉnh sửa bản ghi SOA và tăng giá trị nối tiếp . Nó trông giống như sau :
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial . . .
Bây giờ xóa hai bản ghi ở cuối file (sau bản ghi SOA). Nếu bạn không chắc chắn dòng nào cần xóa, chúng được đánh dấu bằng comment “xóa dòng này” ở trên.
Ở cuối file , hãy thêm bản ghi server định danh của bạn bằng các dòng sau (thay thế tên bằng tên của bạn ). Lưu ý 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.
Sau đó, thêm các bản ghi PTR
cho tất cả các server của bạn có địa chỉ IP trên mạng con của file vùng mà bạn đang chỉnh sửa. Trong ví dụ của ta , điều này bao gồm tất cả các server của ta vì chúng đều nằm trên mạng con 10.128.0.0/16
. Lưu ý cột đầu tiên bao gồm hai octet cuối cùng của địa chỉ IP riêng của server của bạn theo thứ tự đảo ngược . Đảm bảo thay thế tên và địa chỉ IP riêng để trùng 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
Lưu file vùng đảo ngược (lặp lại phần này nếu bạn cần thêm nhiều file vùng đảo ngược).
Tệp vùng đảo ngược mẫu cuối cùng của ta trông giống như 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
Ta đã chỉnh sửa xong các file của bạn , vì vậy, tiếp theo, ta có thể kiểm tra các file của bạn để tìm lỗi.
Kiểm tra cú pháp cấu hình BIND
Chạy lệnh sau để kiểm tra cú pháp của các file có named.conf*
:
- sudo named-checkconf
Nếu các file cấu hình được đặt tên của bạn không có lỗi cú pháp, bạn sẽ quay lại dấu nhắc shell và không thấy thông báo lỗi nào. Nếu có vấn đề với file cấu hình của bạn, hãy xem lại thông báo lỗi và phần “ Cấu hình server DNS chính”, sau đó thử lại named-checkconf
.
Lệnh named-checkzone
được dùng để kiểm tra tính đúng đắn của các file vùng của bạn. Đối số đầu tiên của nó chỉ định tên vùng và đối số thứ hai chỉ định file vùng tương ứng, cả hai đều được xác định trong named.conf.local
.
Ví dụ: để kiểm tra cấu hình vùng chuyển tiếp “ nyc3.example.com ”, hãy chạy lệnh sau (thay đổi tên để phù hợp với vùng chuyển tiếp và file của bạn):
- sudo named-checkzone nyc3.example.com db.nyc3.example.com
Và để kiểm tra cấu hình vùng đảo ngược “ 128.10 .in- addr.arpa ”, hãy chạy lệnh sau (thay đổi các số để trùng với vùng đảo ngược và file của bạn):
- sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
Khi tất cả các file cấu hình và vùng của bạn không có lỗi trong chúng, bạn nê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:
- sudo systemctl restart bind9
Nếu bạn đã cấu hình firewall UFW, hãy mở quyền truy cập vào BIND bằng lệnh :
- sudo ufw allow Bind9
Server DNS chính của bạn hiện đã được cài đặt và sẵn sàng phản hồi các truy vấn DNS. Hãy chuyển sang tạo server DNS phụ.
Cấu hình server DNS phụ
Trong hầu hết các môi trường, bạn nên cài đặt một server DNS phụ sẽ phản hồi các yêu cầu nếu server chính không khả dụng. May mắn là server DNS phụ dễ cấu hình hơn nhiều.
Trên ns2 , chỉnh sửa file named.conf.options
:
- sudo nano /etc/bind/named.conf.options
Ở đầu file , thêm ACL với địa chỉ IP riêng của tất cả các server tin cậy của bạn:
acl "trusted" { 10.128.10.11; # ns1 10.128.20.12; # ns2 - can be set to localhost 10.128.100.101; # host1 10.128.200.102; # host2 }; options { . . .
Bên dưới chỉ thị directory
, thêm các dòng sau:
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 file named.conf.options
. Tệp này trông giống hệt như file named.conf.options
của ns1 ngoại trừ file phải được cấu hình để lắng nghe trên địa chỉ IP riêng của ns2 .
Bây giờ hãy chỉnh sửa file named.conf.local
:
- sudo nano /etc/bind/named.conf.local
Xác định các vùng phụ tương ứng với các vùng chính trên server DNS chính. Lưu ý loại là “ slaver ”, các file không chứa một con đường, và có một masters
chỉ thị cần được cài đặt để địa chỉ IP riêng của server DNS chính. Nếu bạn đã xác định nhiều vùng đảo ngược trong server DNS chính, hãy đảm bảo thêm tất cả chúng tại đâ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 };
Bây giờ hãy lưu file named.conf.local
.
Chạy lệnh sau để kiểm tra tính hợp lệ của các file cấu hình của bạn:
- sudo named-checkconf
Sau khi kiểm tra xong, hãy khởi động lại BIND:
- sudo systemctl restart bind9
Cho phép kết nối DNS với server bằng cách thay đổi các luật firewall UFW:
- sudo ufw allow Bind9
Đến đây bạn có server DNS chính và phụ để phân giải tên mạng riêng và địa chỉ IP. Đến đây bạn phải cấu hình server khách hàng của bạn để sử dụng server DNS riêng của bạn.
Cấu hình client DNS
Trước khi tất cả các server của bạn trong ACL “ tin cậy ” có thể truy vấn các server DNS của bạn, bạn phải cấu hình từng server đó để sử dụng ns1 và ns2 làm server định danh. Quá trình này khác nhau tùy thuộc vào hệ điều hành, nhưng đối với hầu hết các bản phân phối Linux, nó liên quan đến việc thêm server định danh của bạn vào file /etc/resolv.conf
.
Ứng dụng khách Ubuntu 18.04
Trên Ubuntu 18.04, mạng được cấu hình bằng Netplan, một phần trừu tượng cho phép bạn viết cấu hình mạng chuẩn hóa và áp dụng nó cho phần mềm mạng backend không tương thích. Để cấu hình DNS, ta cần viết một file cấu hình Netplan.
Trước tiên, hãy tìm thiết bị được liên kết với mạng riêng của bạn bằng cách truy vấn mạng con riêng bằng lệnh ip address
:
- ip address show to 10.128.0.0/16
Output3: 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, giao diện riêng tư là eth1
.
Tiếp theo, tạo một file mới trong /etc/netplan
tên 00-private-nameservers.yaml
:
- sudo nano /etc/netplan/00-private-nameservers.yaml
Bên trong, dán các nội dung sau. Bạn cần phải sửa đổi giao diện của mạng riêng, địa chỉ của các server DNS ns1 và ns2 và vùng DNS:
Lưu ý: Netplan sử dụng định dạng tuần tự hóa dữ liệu YAML cho các file cấu hình của nó. Vì YAML sử dụng thụt lề và khoảng trắng để xác định cấu trúc dữ liệu của nó, hãy đảm bảo định nghĩa của bạn sử dụng thụt lề nhất quán để tránh lỗi.
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 file khi bạn hoàn tất.
Tiếp theo, yêu cầu Netplan cố gắng sử dụng file cấu hình mới bằng cách sử dụng netplan try
. Nếu có sự cố gây mất mạng, Netplan sẽ tự động khôi phục các thay đổi sau một thời gian chờ:
- sudo netplan try
OutputWarning: 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
Nếu bộ đếm ngược đang cập nhật chính xác ở phía dưới, thì cấu hình mới ít nhất đủ chức năng để không làm đứt kết nối SSH của bạn. Nhấn ENTER để chấp nhận cấu hình mới.
Bây giờ, hãy kiểm tra xem trình phân giải DNS của hệ thống để xác định xem cấu hình DNS của bạn đã được áp dụng hay chưa:
- sudo systemd-resolve --status
Cuộn xuống cho đến khi bạn nhìn thấy phần dành cho network interface riêng tư của bạn . Trước tiên, bạn sẽ thấy các địa chỉ IP riêng cho các server DNS của bạn được liệt kê, sau đó là một số giá trị dự phòng. Miền của bạn phải nằm trong “Miền DNS”:
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 . . .
Máy khách của bạn bây giờ sẽ được cấu hình để sử dụng các server DNS nội bộ của bạn.
Ubuntu 16.04 và Máy khách Debian
Trên server Ubuntu 16.04 và Debian Linux, bạn có thể chỉnh sửa file /etc/network/interfaces
:
- sudo nano /etc/network/interfaces
Bên trong, tìm dòng dns-nameservers
và thêm dns-nameservers
của bạn vào trước danh sách hiện có. Bên dưới dòng đó, hãy thêm tùy chọn dns-search
trỏ đến domain cơ sở của cơ sở hạ tầng của bạn. Trong trường hợp của ta , đây sẽ là “nyc3.example.com”:
. . . dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8 dns-search nyc3.example.com . . .
Lưu file khi bạn hoàn tất.
Bây giờ, khởi động lại các dịch vụ mạng của bạn, áp dụng các thay đổi mới bằng các lệnh sau. Đảm bảo rằng bạn thay thế eth0
bằng tên của network interface của bạn:
- sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0
Điều này sẽ khởi động lại mạng của bạn mà không làm mất kết nối hiện tại của bạn. Nếu nó hoạt động chính xác, bạn sẽ thấy thông tin như sau:
OutputRTNETLINK answers: No such process Waiting for DAD... Done
Kiểm tra kỹ xem cài đặt của bạn đã được áp dụng chưa bằng lệnh :
- cat /etc/resolv.conf
Bạn sẽ thấy server định danh của bạn trong file /etc/resolv.conf
, cũng như domain tìm kiếm của bạn:
Output# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.128.10.11 nameserver 10.128.20.12 nameserver 8.8.8.8 search nyc3.example.com
Máy khách của bạn hiện đã được cấu hình để sử dụng các server DNS của bạn.
Khách hàng CentOS
Trên CentOS, RedHat và Fedora Linux, hãy chỉnh sửa file /etc/sysconfig/network-scripts/ifcfg- eth0
. Bạn có thể phải thay thế eth0
bằng tên của network interface chính của bạn :
- sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
Tìm kiếm các tùy chọn DNS1
và DNS2
và đặt chúng thành địa chỉ IP riêng của server định danh chính và phụ của bạn. Thêm thông số DOMAIN
với domain cơ sở của cơ sở hạ tầng của bạn. Trong hướng dẫn này, đó sẽ là “nyc3.example.com”:
. . . DNS1=10.128.10.11 DNS2=10.128.20.12 DOMAIN='nyc3.example.com' . . .
Lưu file khi bạn hoàn tất.
Bây giờ, hãy khởi động lại dịch vụ mạng bằng lệnh :
- sudo systemctl restart network
Lệnh có thể bị treo trong vài giây, nhưng sẽ sớm đưa bạn trở lại dấu nhắc .
Kiểm tra xem các thay đổi đã được áp dụng chưa bằng lệnh :
- cat /etc/resolv.conf
Bạn sẽ thấy server định danh và domain tìm kiếm của bạn trong danh sách:
nameserver 10.128.10.11 nameserver 10.128.20.12 search nyc3.example.com
Máy khách của bạn bây giờ có thể kết nối và sử dụng server DNS của bạn.
Kiểm tra khách hàng
Sử dụng nslookup
để kiểm tra xem khách hàng của bạn có thể truy vấn server định danh của bạn hay không. Bạn có thể thực hiện việc này trên tất cả các client mà bạn đã cấu hình và nằm trong ACL “ tin cậy ”.
Đối với client CentOS, bạn có thể cần cài đặt tiện ích với:
- sudo yum install bind-utils
Ta có thể bắt đầu bằng cách thực hiện tra cứu về phía trước.
Tra cứu chuyển tiếp
Ví dụ: ta có thể thực hiện tra cứu chuyển tiếp để truy xuất địa chỉ IP của host1.nyc3.example.com bằng cách chạy lệnh sau:
- nslookup host1
Truy vấn “host1” mở rộng thành “host1.nyc3.example.com do tùy chọn search
được đặt thành domain phụ riêng tư của bạn và các truy vấn DNS sẽ cố gắng tìm kiếm domain phụ đó trước khi tìm kiếm server ở nơi khác. Đầu ra của lệnh trên sẽ giống như sau:
OutputServer: 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, ta có thể kiểm tra tra cứu ngược.
Tra cứu ngược
Để kiểm tra 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ẽ thấy kết quả giống như sau:
Output11.10.128.10.in-addr.arpa name = host1.nyc3.example.com. Authoritative answers can be found from:
Nếu tất cả tên và địa chỉ IP phân giải thành các giá trị chính xác, điều đó nghĩa là các file vùng của bạn được cấu hình đúng cách. Nếu bạn nhận được các giá trị không mong muốn, hãy nhớ xem lại các file vùng trên server DNS chính của bạn (ví dụ: db.nyc3.example.com
và db.10.128
).
Xin chúc mừng! Server DNS nội bộ của bạn hiện đã được cài đặt đúng cách! Bây giờ ta sẽ đề cập đến việc duy trì profile vùng của bạn.
Duy trì bản ghi DNS
Đến đây bạn có một DNS nội bộ đang hoạt động, bạn cần duy trì các bản ghi DNS của bạn để chúng phản ánh chính xác môi trường server của bạn.
Thêm server vào DNS
Khi nào bạn thêm một server lưu trữ vào môi trường của bạn (trong cùng một trung tâm dữ liệu), bạn cần thêm nó vào DNS. Dưới đây là danh sách các bước bạn cần thực hiện:
Server định danh chính
- Tệp vùng chuyển tiếp: Thêm bản ghi "A" cho server mới, tăng giá trị của "Serial"
- Tệp vùng đảo ngược: Thêm bản ghi “PTR” cho server mới, tăng giá trị của “Serial”
- Thêm địa chỉ IP riêng của server mới của bạn vào ACL " tin cậy " (
named.conf.options
)
Kiểm tra các file cấu hình của bạn:
- sudo named-checkconf
- sudo named-checkzone nyc3.example.com db.nyc3.example.com
- sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
Sau đó reload BIND:
- sudo systemctl reload bind9
Server chính của bạn sẽ được cấu hình cho server mới ngay bây giờ.
Server định danh phụ
- Thêm địa chỉ IP riêng của server mới của bạn vào ACL " tin cậy " (
named.conf.options
)
Kiểm tra cú pháp cấu hình:
- sudo named-checkconf
Sau đó reload BIND:
- sudo systemctl reload bind9
Server phụ của bạn bây giờ sẽ chấp nhận các kết nối từ server mới.
Cấu hình server mới để sử dụng DNS của bạn
- Cấu hình
/etc/resolv.conf
để sử dụng server DNS của bạn - Kiểm tra bằng
nslookup
Xóa server khỏi DNS
Nếu bạn xóa một server khỏi môi trường của bạn hoặc chỉ muốn xóa nó khỏi DNS, chỉ cần xóa tất cả những thứ đã được thêm vào khi bạn thêm server vào DNS (tức là ngược lại với các bước ở trên).
Kết luận
Đến đây bạn có thể đề cập đến các network interface riêng của server của bạn theo tên, thay vì địa chỉ IP. Điều này làm cho việc cấu hình các dịch vụ và ứng dụng trở nên dễ dàng hơn vì bạn không còn phải nhớ địa chỉ IP riêng và các file sẽ dễ đọc và dễ hiểu hơn. Ngoài ra, bây giờ bạn có thể thay đổi cấu hình của bạn để trỏ đến một server mới ở một nơi duy nhất, server DNS chính của bạn, thay vì phải chỉnh sửa nhiều file cấu hình phân tán, điều này giúp giảm bớt việc bảo trì.
Khi bạn đã cài đặt DNS nội bộ và các file cấu hình của bạn đang sử dụng FQDN riêng tư để chỉ định các kết nối mạng, điều quan trọng là các server DNS của bạn phải được duy trì đúng cách. Nếu cả hai đều không khả dụng, các dịch vụ và ứng dụng của bạn dựa vào chúng sẽ ngừng hoạt động bình thường. Đây là lý do tại sao bạn nên cài đặt DNS của bạn với ít nhất một server phụ và duy trì các bản backup hoạt động của tất cả chúng.
Các tin liên quan
Sử dụng Bộ định tuyến React 4 với Kết xuất phía server2018-06-04
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Ubuntu 18.04
2018-05-23
server Express cơ bản trong Node.js
2018-05-04
Thiết lập server ban đầu với Ubuntu 18.04
2018-04-27
Tự động thiết lập server ban đầu với Ubuntu 18.04
2018-04-27
Bắt đầu với kết xuất phía server bằng Nuxt.js
2018-04-16
Cách bảo vệ server của bạn trước lỗ hổng Meltdown và Spectre
2018-01-10
Sơ lược về lịch sử Linux
2017-10-27
Cách thiết lập Shiny Server trên Ubuntu 16.04
2017-10-25
Cách thiết lập server lưu trữ đối tượng bằng Minio trên Ubuntu 16.04
2017-08-30