Dnsmasq là một dịch vụ mạng nhỏ và nhẹ cho môi trường cục bộ (LAN) của bạn. Nó cung cấp các dịch vụ mạng như DNS, DHCP và TFTP. Dnsmasq có thể được sử dụng như một trình chuyển tiếp DNS, Máy chủ DNS đệ quy và hệ thống lưu trữ đệm DNS. Nó cũng tải nội dung DNS từ tệp /etc/hosts, cho phép bạn thiết lập tên miền cho tên máy chủ cục bộ.
Dnsmasq được thiết kế để nhẹ với dung lượng bộ nhớ nhỏ, phù hợp với các thiết bị có ít tài nguyên như Bộ định tuyến và Tường lửa. Dnsmasq có thể chạy trên Linux, BSD, Android và macOS.
Hướng dẫn này sẽ cài đặt và cấu hình Máy chủ DNS cục bộ bằng Dnsmasq trên máy chủ Debian 12. Chúng tôi sẽ thiết lập Máy chủ DNS cục bộ có thể được sử dụng cho mạng cục bộ của bạn, thêm tên miền cục bộ, bật bộ đệm DNS và bật Máy chủ DHCP thông qua Dnsmasq. Bạn cũng sẽ tìm hiểu cách thiết lập và thêm máy khách để sử dụng Máy chủ DNS cục bộ. Sau khi hoàn tất hướng dẫn này, bạn sẽ có thể truy cập tất cả các ứng dụng của mình thông qua tên miền cục bộ và các yêu cầu DNS của bạn sẽ nhanh hơn vì bạn đã bật DNS bộ đệm.
Trên hệ thống Debian, trình phân giải DNS được quản lý bởi dịch vụ 'systemd-resolved', dịch vụ này cung cấp giải pháp phân giải tên mạng thông qua giao diện D-BUS. Để thiết lập phần mềm Máy chủ DNS như Dnsmasq, bạn phải tắt dịch vụ 'systemd-resolved'.
Trước khi bắt đầu, hãy chạy lệnh apt bên dưới để cập nhật và làm mới chỉ mục gói Debian của bạn.
Tiếp theo, hãy chạy lệnh bên dưới để dừng và tắt dịch vụ 'systemd-resolved'. Trên hệ thống Debian, cấu hình DNS được quản lý bởi NetworkManager và dịch vụ systemd-resolved.
Xóa tệp liên kết của cấu hình trình phân giải DNS '/etc/resolv.conf' thông qua lệnh sau.
Sau đó, tạo một DNS mới tệp cấu hình trình phân giải '/etc/resolv.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào tệp. Thao tác này sẽ thêm Cloudflare và Google public DNS làm trình phân giải cho máy chủ Debian của bạn.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất. Bây giờ hãy chuyển sang các bước tiếp theo để cài đặt và cấu hình Dnsmasq.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22234%22%3E%3C/svg%3E
Gói 'dnsmasq' mặc định có sẵn trên kho lưu trữ Debian. Chạy lệnh apt bên dưới để cài đặt gói Dnsmasq.
Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22309%22%3E%3C/svg%3E
Sau khi Dnsmasq được cài đặt, hãy chạy tiện ích lệnh systemctl bên dưới để xác minh Dịch vụ 'dnsmasq' và đảm bảo rằng dịch vụ được bật và đang chạy.
Bạn sẽ nhận được kết quả tương tự như thế này - Dịch vụ dnsmasq được bật và sẽ tự động chạy khi khởi động. Và trạng thái hiện tại của dịch vụ dnsmasq đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22198%22%3E%3C/svg%3E
Với Dnsmasq đang chạy trên hệ thống Debian của bạn, tiếp theo bạn sẽ bắt đầu cấu hình Dnsmasq thông qua tệp '/etc/dnsmasq.conf'.
Để bắt đầu, hãy chạy lệnh bên dưới để sao lưu cấu hình Dnsmasq mặc định tập tin.
Bây giờ hãy mở tệp cấu hình Dnsmasq '/etc/dnsmasq.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào file.
Lưu file và đóng trình soạn thảo khi bạn hoàn tất.
Các tùy chọn chi tiết mà bạn sẽ sử dụng cho Dnsmasq:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22549%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, mở tệp cấu hình '/etc/hosts' bằng lệnh trình chỉnh sửa nano bên dưới. Bạn có thể định nghĩa miền phụ cho các ứng dụng nội bộ của mình và sẽ tự động được định cấu hình với tên miền Dnsmasq 'howtoforge.local'.
Thêm các dòng sau vào tệp. Trong ví dụ này, bạn sẽ định nghĩa miền phụ app1, db1 và files. Tên miền gốc cho các tên miền phụ này chính là máy chủ Dnsmasq 'howtoforge.local'.
Với các dòng sau, 'app1.howtoforge.local' sẽ được giải quyết thành địa chỉ IP '192.168.5.10', tên miền phụ 'db1.howtoforge.local' sẽ được trỏ đến địa chỉ IP của máy chủ '192.168.5.25' và tên miền phụ 'files.howtoforge.local' sẽ được trỏ đến địa chỉ IP '192.168.5.50'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Tiếp theo, mở tệp '/etc/resolv.conf' bằng lệnh trình chỉnh sửa nano sau và thêm địa chỉ IP máy chủ Dnsmasq làm 'máy chủ tên'.
Thêm các dòng sau vào đầu tệp. Đảm bảo thay đổi địa chỉ IP bằng địa chỉ IP của máy chủ Dnsmasq.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Bây giờ hãy chạy lệnh 'dnsmasq' bên dưới để xác minh cấu hình Dnsmasq và đảm bảo rằng bạn có cấu hình định dạng phù hợp. Bạn sẽ nhận được kết quả đầu ra như sau 'dnsmasq - kiểm tra cú pháp OK'.
Cuối cùng, hãy chạy tiện ích lệnh systemctl bên dưới để khởi động lại dịch vụ 'dnsmasq' và áp dụng các thay đổi.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22602%22%20height=%22282%22%3E%3C/svg%3E
Lúc này, bạn đã hoàn tất cấu hình Máy chủ DNS cục bộ thông qua Dnsmasq trên hệ thống Debian. Bạn cũng đã cấu hình tên miền cục bộ và tên miền phụ, bật bộ đệm DNS và bật máy chủ DHCP thông qua Dnsmasq.
Trong các bước tiếp theo, bạn sẽ xác minh cài đặt và cấu hình máy chủ Dnsmasq của mình.
Chạy lệnh bên dưới để đảm bảo rằng dịch vụ Dnsmasq đang chạy trên cổng 53. Sau đó, xác minh trạng thái của dịch vụ Dnsmasq thông qua tiện ích lệnh systemctl.
Bạn sẽ nhận được đầu ra tương tự như thế này - Dịch vụ Dnsmasq đang chạy trên cổng mặc định 53 và được bật và sẽ tự động chạy khi khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22239%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ xác minh tên miền và tên miền phụ mà bạn đã cấu hình trên Dnsmasq thông qua tệp '/etc/hosts'. Nhưng trước đó, hãy chạy lệnh apt bên dưới để cài đặt gói 'dnsutils' vào hệ thống của bạn. Gói 'dnsutils' cung cấp các công cụ dòng lệnh để kiểm tra cấu hình Máy chủ DNS.
Nhập y khi được nhắc và nhấn ENTER để tiếp tục cài đặt.
Sau khi 'dnsutils' được cài đặt, hãy chạy lệnh dig sau để xác minh tên miền và tên miền phụ mà bạn đã cấu hình.
Xác minh tên miền chính của Dnsmasq 'howtoforge.local', được trỏ đến địa chỉ IP của máy chủ Dnsmasq '192.168.5.20'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22682%22%20height=%22455%22%3E%3C/svg%3E
Xác minh các miền phụ mà bạn đã xác định thông qua tệp '/etc/hosts' thông qua lệnh dig bên dưới.
Tên miền phụ 'app1.howtoforge.local được trỏ đến địa chỉ IP '192.168.5.10', tên miền phụ 'db1.howtoforge.local' được trỏ đến địa chỉ IP '192.168.5.25' và cuối cùng là 'files.howtoforge.local' được trỏ đến địa chỉ IP '192.168.5.50'.
Dưới đây là đầu ra tương tự bạn sẽ nhận được.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22532%22%20height=%22185%22%3E%3C/svg%3E
Bây giờ, bạn đã cấu hình và kiểm tra cài đặt Dnsmasq như Máy chủ DNS cục bộ trên máy chủ Debian. Trong các bước tiếp theo, bạn sẽ thiết lập và bảo mật Dnsmasq bằng tường lửa UFW.
Chạy lệnh apt bên dưới để cài đặt tường lửa UFW trên hệ thống Debian của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22297%22%3E%3C/svg%3E
Sau khi cài đặt UFW, hãy chạy lệnh bên dưới để thêm Dịch vụ OpenSSH và cổng DNS 53 đến tường lửa UFW. Trong ví dụ này, bạn sẽ chỉ định nguồn của mạng được phép truy cập máy chủ Dnsmasq, đó là mạng cục bộ có địa chỉ IP 192.168.5.0/24'.
Hãy đảm bảo thay đổi địa chỉ IP mạng cục bộ bằng mạng con nội bộ của bạn.
Tiếp theo, chạy lệnh bên dưới để khởi động và kích hoạt tường lửa UFW.
Khi được yêu cầu cấu hình, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục. Tường lửa UFW hiện sẽ chạy và được bật, đồng thời sẽ tự động khởi động khi khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22208%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để xác minh trạng thái của tường lửa UFW. Bạn sẽ thấy tường lửa UFW đang 'hoạt động' và dịch vụ OpenSSH cùng cổng DNS 53 đã được thêm vào tường lửa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22525%22%20height=%22203%22%3E%3C/svg%3E
Sau khi cấu hình tường lửa UFW, giờ đây bạn có thể thêm máy khách để kết nối với Máy chủ DNS cục bộ của mình.
Chạy lệnh bên dưới để xóa liên kết của tệp cấu hình trình phân giải DNS '/etc/resolv.conf'. Sau đó, tạo cấu hình trình phân giải mới '/etc/resolv.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Nhập dòng sau vào tệp. Hãy đảm bảo thay đổi địa chỉ IP bằng địa chỉ IP máy chủ Dnsmasq của bạn.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Tiếp theo, chạy lệnh bên dưới để cài đặt gói 'dnsutils' vào máy khách.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22279%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh dig bên dưới để xác minh tên miền 'howtoforge.local', tên miền này sẽ được trỏ đến địa chỉ IP của máy chủ Dnsmasq.
Dưới đây là kết quả đầu ra mà bạn sẽ nhận được.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22670%22%20height=%22456%22%3E%3C/svg%3E
Đối với tên miền phụ, hãy chạy lệnh dig bên dưới. Mỗi tên miền phụ sẽ được trỏ đến địa chỉ IP được xác định trong tệp '/etc/hosts' trên máy chủ Dnsmasq.
Dưới đây là kết quả tương tự mà bạn sẽ nhận được trên máy khách.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22529%22%20height=%22181%22%3E%3C/svg%3E
Tiếp theo, bạn cũng cần đảm bảo rằng bạn có thể truy cập tên miền công cộng thông qua Máy chủ DNS cục bộ Dnsmasq. Bạn có thể xác minh điều này bằng cách kiểm tra tên miền công cộng như 'github.com'.
Bạn sẽ nhận được đầu ra tương tự như ảnh chụp màn hình này - Ở cuối đầu ra, bạn sẽ thấy rằng yêu cầu của bạn được Máy chủ DNS cục bộ Dnsmasq trả lời chạy trên '192.168.5.20' với cổng mặc định '53'. Với điều này trong tâm trí, bạn đã kết nối thành công đến tên miền công cộng thông qua Máy chủ DNS cục bộ Dnsmasq.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22663%22%20height=%22475%22%3E%3C/svg%3E
Cuối cùng, bạn sẽ xác minh bộ đệm DNS thông qua lệnh 'drill' và 'dig'. Lệnh 'drill' là một phần của gói 'ldnsutils', vì vậy hãy chạy lệnh apt bên dưới để cài đặt nó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22280%22%3E%3C/svg%3E
Sau khi cài đặt ldnsutils, hãy chạy lệnh drill bên dưới để xác minh bộ đệm DNS mà bạn đã cấu hình trên máy chủ Dnsmasq.
Bạn sẽ nhận được kết quả đầu ra như ảnh chụp màn hình sau - khi bạn thực hiện yêu cầu lần đầu tiên, 'Thời gian truy vấn' là 60ms. Nhưng lần thứ hai bạn yêu cầu cùng một tên miền, thời gian truy vấn sẽ giảm xuống còn 1 ms, đó là yêu cầu DNS được lưu vào bộ nhớ đệm trên Máy chủ DNS cục bộ Dnsmasq.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22615%22%20height=%22244%22%3E%3C/svg%3E
Bạn cũng có thể xác minh bộ nhớ đệm DNS thông qua lệnh dig với tùy chọn '+thống kê'.
Bây giờ bạn đã hoàn tất cấu hình máy khách và xác minh rằng Máy chủ DNS cục bộ Dnsmas đang hoạt động đầy đủ, từ tên miền cục bộ và các miền phụ mà bạn đã xác định thông qua tệp '/etc/hosts', đến bộ đệm DNS mà bạn đã bật trên Dnsmasq.
Cuối cùng, bạn cũng đã thêm và cấu hình máy khách để sử dụng Máy chủ DNS cục bộ mà bạn đã tạo. Trong phần này, bạn cũng đã học cách khắc phục sự cố Máy chủ DNS bằng lệnh dig và cách thiết lập trình phân giải DNS trên hệ thống Linux.
Dnsmasq được thiết kế để nhẹ với dung lượng bộ nhớ nhỏ, phù hợp với các thiết bị có ít tài nguyên như Bộ định tuyến và Tường lửa. Dnsmasq có thể chạy trên Linux, BSD, Android và macOS.
Hướng dẫn này sẽ cài đặt và cấu hình Máy chủ DNS cục bộ bằng Dnsmasq trên máy chủ Debian 12. Chúng tôi sẽ thiết lập Máy chủ DNS cục bộ có thể được sử dụng cho mạng cục bộ của bạn, thêm tên miền cục bộ, bật bộ đệm DNS và bật Máy chủ DHCP thông qua Dnsmasq. Bạn cũng sẽ tìm hiểu cách thiết lập và thêm máy khách để sử dụng Máy chủ DNS cục bộ. Sau khi hoàn tất hướng dẫn này, bạn sẽ có thể truy cập tất cả các ứng dụng của mình thông qua tên miền cục bộ và các yêu cầu DNS của bạn sẽ nhanh hơn vì bạn đã bật DNS bộ đệm.
Điều kiện tiên quyết
Trước khi bắt đầu, bạn phải có các yêu cầu sau để hoàn tất hướng dẫn này:- Máy chủ Debian 12 - Ví dụ này sử dụng máy chủ Debian có tên máy chủ 'dnsmasq-server' và địa chỉ IP 192.168.5.20.
- Người dùng không phải root có quyền quản trị viên sudo/root.
Chuẩn bị hệ thống
Trong bước này, bạn sẽ chuẩn bị máy chủ Debian sẽ được sử dụng làm Máy chủ DNS cục bộ. Bạn sẽ cập nhật chỉ mục gói, dừng và vô hiệu hóa dịch vụ 'systemd-resolved', sau đó bạn sẽ tạo cấu hình trình phân giải DNS tĩnh thông qua tệp '/etc/resolv.conf'.Trên hệ thống Debian, trình phân giải DNS được quản lý bởi dịch vụ 'systemd-resolved', dịch vụ này cung cấp giải pháp phân giải tên mạng thông qua giao diện D-BUS. Để thiết lập phần mềm Máy chủ DNS như Dnsmasq, bạn phải tắt dịch vụ 'systemd-resolved'.
Trước khi bắt đầu, hãy chạy lệnh apt bên dưới để cập nhật và làm mới chỉ mục gói Debian của bạn.
Mã:
sudo apt update
Mã:
sudo systemctl disable --now systemd-resolved
sudo systemctl stop systemd-resolved
Mã:
sudo unlink /etc/resolv.conf
Mã:
sudo nano /etc/resolv.conf
Mã:
nameserver 1.1.1.1
nameserver 8.8.8.8
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22234%22%3E%3C/svg%3E
Cài đặt và cấu hình Dnsmasq
Trong bước này, bạn sẽ cài đặt và thiết lập Máy chủ DNS cục bộ bằng Dnsmasq. Bạn sẽ thiết lập Dnsmasq để chạy trên cổng DNS mặc định 53 và địa chỉ IP nội bộ '192.168.5.20'. Bạn cũng sẽ xác định tên miền cho dịch vụ Dnsmasq, bật bộ đệm DNS và cuối cùng là bật máy chủ DHCP thông qua Dnsmasq.Gói 'dnsmasq' mặc định có sẵn trên kho lưu trữ Debian. Chạy lệnh apt bên dưới để cài đặt gói Dnsmasq.
Mã:
sudo apt install dnsmasq
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22309%22%3E%3C/svg%3E
Sau khi Dnsmasq được cài đặt, hãy chạy tiện ích lệnh systemctl bên dưới để xác minh Dịch vụ 'dnsmasq' và đảm bảo rằng dịch vụ được bật và đang chạy.
Mã:
sudo systemctl is-enabled dnsmasq
sudo systemctl status dnsmasq
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22198%22%3E%3C/svg%3E
Với Dnsmasq đang chạy trên hệ thống Debian của bạn, tiếp theo bạn sẽ bắt đầu cấu hình Dnsmasq thông qua tệp '/etc/dnsmasq.conf'.
Để bắt đầu, hãy chạy lệnh bên dưới để sao lưu cấu hình Dnsmasq mặc định tập tin.
Mã:
sudo cp /etc/dnsmasq.conf{,.orig}
Mã:
sudo nano /etc/dnsmasq.conf
Mã:
# dnsmasq run on UDP port 53
# with IP address localhost and 192.168.5.20
# and network interface eth1
port=53
listen-address=127.0.0.1,192.168.5.20
interface=eth1
# disable forwarding of non-routed address
# disable forwarding names without the main domain.com
# automatically append the domain part to simple names
# disable dnsmasq to read /etc/resolv.conf file
domain-needed
bogus-priv
expand-hosts
no-resolv
# upstream DNS server for non-local domain names
# using Cloudflare and google public DNS
server=1.1.1.1
server=8.8.8.8
# define the domain for dnsmasq
domain=howtoforge.local
address=/howtoforge.local/192.168.5.20
# enable DNS Cache and adjust cache-size
cache-size=1000
# enable DHCP via dnsmasq
# define lease db file
# make the dhcp server as an authoritative
dhcp-range=192.168.5.80,192.168.5.150,12h
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
dhcp-authoritative
Các tùy chọn chi tiết mà bạn sẽ sử dụng cho Dnsmasq:
- port: cổng nào bạn sẽ sử dụng để chạy Dnsmasq.
- listen-address: địa chỉ IP nào bạn sẽ sử dụng để chạy Dnsmasq. Bạn có thể sử dụng nhiều địa chỉ IP.
- interface: giao diện nào Dnsmasq sẽ liên kết và chạy.
- domain-needed: vô hiệu hóa việc chuyển tiếp tên mà không có địa chỉ miền chính. Bạn có thể truy cập như máy chủ 'mysql1' trừ khi bạn cung cấp đầy đủ tên miền cục bộ như 'mysql1.howtoforge.local'.
- bogus-priv: vô hiệu hóa chuyển tiếp cho các địa chỉ không được định tuyến.
- expand-hosts: tự động thêm phần tên miền cục bộ vào các tên đơn giản.
- no-resolv: bỏ qua tệp '/etc/resolv.conf' trên máy chủ.
- server: xác định Máy chủ DNS ngược dòng mà bạn sẽ sử dụng cho các địa chỉ hoặc tên miền không cục bộ. Ví dụ này sử dụng Máy chủ DNS công cộng của Cloudflare và Google.
- domain: xác định tên miền cho máy chủ Dnsmasq. Trong ví dụ này, máy chủ Dnsmasq sẽ lấy tên miền cục bộ howtoforge.local.
- address: xác định địa chỉ IP nào cho tên miền trên Dnsmasq. Trong ví dụ này, tên miền howtoforge.local sẽ được phân giải thành địa chỉ IP 192.168.5.20.
- cache-size: bật bộ đệm DNS trên Dnsmasq. Đảm bảo điều chỉnh kích thước, điều này sẽ tăng hiệu suất và tốc độ.
- dhcp-range: bật máy chủ DHCP thông qua Dnsmasq. Điều chỉnh nhóm địa chỉ IP cho mạng và thời gian thuê của bạn.
- dhcp-leasefile: định nghĩa tệp sẽ được sử dụng để lưu trữ hợp đồng thuê DHCP.
- dhcp-authoritative: biến máy chủ DHCP thành máy chủ có thẩm quyền.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22549%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, mở tệp cấu hình '/etc/hosts' bằng lệnh trình chỉnh sửa nano bên dưới. Bạn có thể định nghĩa miền phụ cho các ứng dụng nội bộ của mình và sẽ tự động được định cấu hình với tên miền Dnsmasq 'howtoforge.local'.
Mã:
sudo nano /etc/hosts
Với các dòng sau, 'app1.howtoforge.local' sẽ được giải quyết thành địa chỉ IP '192.168.5.10', tên miền phụ 'db1.howtoforge.local' sẽ được trỏ đến địa chỉ IP của máy chủ '192.168.5.25' và tên miền phụ 'files.howtoforge.local' sẽ được trỏ đến địa chỉ IP '192.168.5.50'.
Mã:
192.168.5.10 app1
192.168.5.25 db1
192.168.5.50 files
Tiếp theo, mở tệp '/etc/resolv.conf' bằng lệnh trình chỉnh sửa nano sau và thêm địa chỉ IP máy chủ Dnsmasq làm 'máy chủ tên'.
Mã:
sudo nano /etc/resolv.conf
Mã:
nameserver 127.0.0.1
nameserver 192.168.5.20
Bây giờ hãy chạy lệnh 'dnsmasq' bên dưới để xác minh cấu hình Dnsmasq và đảm bảo rằng bạn có cấu hình định dạng phù hợp. Bạn sẽ nhận được kết quả đầu ra như sau 'dnsmasq - kiểm tra cú pháp OK'.
Mã:
sudo dnsmasq --test
Mã:
sudo systemctl restart dnsmasq
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22602%22%20height=%22282%22%3E%3C/svg%3E
Lúc này, bạn đã hoàn tất cấu hình Máy chủ DNS cục bộ thông qua Dnsmasq trên hệ thống Debian. Bạn cũng đã cấu hình tên miền cục bộ và tên miền phụ, bật bộ đệm DNS và bật máy chủ DHCP thông qua Dnsmasq.
Trong các bước tiếp theo, bạn sẽ xác minh cài đặt và cấu hình máy chủ Dnsmasq của mình.
Xác minh cài đặt Dnsmasq
Trong bước này, bạn sẽ xác minh cài đặt Dnsmasq bằng cách kiểm tra dịch vụ Dnsmasq và cổng LISTEN trên hệ thống của bạn. Sau đó, bạn sẽ xác minh tên miền cục bộ và các tên miền phụ mà bạn đã cấu hình thông qua tệp '/etc/hosts'.Chạy lệnh bên dưới để đảm bảo rằng dịch vụ Dnsmasq đang chạy trên cổng 53. Sau đó, xác minh trạng thái của dịch vụ Dnsmasq thông qua tiện ích lệnh systemctl.
Mã:
ss -tulpn | grep 53
sudo systemctl status dnsmasq
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22239%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ xác minh tên miền và tên miền phụ mà bạn đã cấu hình trên Dnsmasq thông qua tệp '/etc/hosts'. Nhưng trước đó, hãy chạy lệnh apt bên dưới để cài đặt gói 'dnsutils' vào hệ thống của bạn. Gói 'dnsutils' cung cấp các công cụ dòng lệnh để kiểm tra cấu hình Máy chủ DNS.
Mã:
sudo apt install dnsutils
Sau khi 'dnsutils' được cài đặt, hãy chạy lệnh dig sau để xác minh tên miền và tên miền phụ mà bạn đã cấu hình.
Xác minh tên miền chính của Dnsmasq 'howtoforge.local', được trỏ đến địa chỉ IP của máy chủ Dnsmasq '192.168.5.20'.
Mã:
dig howtoforge.local
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22682%22%20height=%22455%22%3E%3C/svg%3E
Xác minh các miền phụ mà bạn đã xác định thông qua tệp '/etc/hosts' thông qua lệnh dig bên dưới.
Mã:
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +short
Dưới đây là đầu ra tương tự bạn sẽ nhận được.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22532%22%20height=%22185%22%3E%3C/svg%3E
Bây giờ, bạn đã cấu hình và kiểm tra cài đặt Dnsmasq như Máy chủ DNS cục bộ trên máy chủ Debian. Trong các bước tiếp theo, bạn sẽ thiết lập và bảo mật Dnsmasq bằng tường lửa UFW.
Thiết lập Tường lửa UFW
Bây giờ, bạn sẽ thiết lập tường lửa trên Máy chủ DNS cục bộ của mình. Bạn sẽ bảo mật cài đặt Dnsmasq bằng cách hạn chế quyền truy cập vào Máy chủ DNS thông qua tường lửa UFW.Chạy lệnh apt bên dưới để cài đặt tường lửa UFW trên hệ thống Debian của bạn.
Mã:
sudo apt install ufw -y
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22297%22%3E%3C/svg%3E
Sau khi cài đặt UFW, hãy chạy lệnh bên dưới để thêm Dịch vụ OpenSSH và cổng DNS 53 đến tường lửa UFW. Trong ví dụ này, bạn sẽ chỉ định nguồn của mạng được phép truy cập máy chủ Dnsmasq, đó là mạng cục bộ có địa chỉ IP 192.168.5.0/24'.
Hãy đảm bảo thay đổi địa chỉ IP mạng cục bộ bằng mạng con nội bộ của bạn.
Mã:
sudo ufw allow OpenSSH
sudo ufw allow from 192.168.5.0/24 to any port 53 proto udp
Mã:
sudo ufw enable
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22208%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để xác minh trạng thái của tường lửa UFW. Bạn sẽ thấy tường lửa UFW đang 'hoạt động' và dịch vụ OpenSSH cùng cổng DNS 53 đã được thêm vào tường lửa.
Mã:
sudo ufw status
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22525%22%20height=%22203%22%3E%3C/svg%3E
Sau khi cấu hình tường lửa UFW, giờ đây bạn có thể thêm máy khách để kết nối với Máy chủ DNS cục bộ của mình.
Thiết lập máy khách
Trong bước này, bạn sẽ thiết lập máy khách với bản phân phối dựa trên Debian và tên máy chủ 'client'. Bạn sẽ thêm Máy chủ DNS cục bộ Dnsmasq vào máy khách.Chạy lệnh bên dưới để xóa liên kết của tệp cấu hình trình phân giải DNS '/etc/resolv.conf'. Sau đó, tạo cấu hình trình phân giải mới '/etc/resolv.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.conf
Mã:
nameserver 192.168.5.20
Tiếp theo, chạy lệnh bên dưới để cài đặt gói 'dnsutils' vào máy khách.
Mã:
sudo apt install dnsutils
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22279%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh dig bên dưới để xác minh tên miền 'howtoforge.local', tên miền này sẽ được trỏ đến địa chỉ IP của máy chủ Dnsmasq.
Mã:
dig howtoforge.local
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22670%22%20height=%22456%22%3E%3C/svg%3E
Đối với tên miền phụ, hãy chạy lệnh dig bên dưới. Mỗi tên miền phụ sẽ được trỏ đến địa chỉ IP được xác định trong tệp '/etc/hosts' trên máy chủ Dnsmasq.
Mã:
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +short
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22529%22%20height=%22181%22%3E%3C/svg%3E
Tiếp theo, bạn cũng cần đảm bảo rằng bạn có thể truy cập tên miền công cộng thông qua Máy chủ DNS cục bộ Dnsmasq. Bạn có thể xác minh điều này bằng cách kiểm tra tên miền công cộng như 'github.com'.
Mã:
dig github.com
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22663%22%20height=%22475%22%3E%3C/svg%3E
Cuối cùng, bạn sẽ xác minh bộ đệm DNS thông qua lệnh 'drill' và 'dig'. Lệnh 'drill' là một phần của gói 'ldnsutils', vì vậy hãy chạy lệnh apt bên dưới để cài đặt nó.
Mã:
sudo apt install ldnsutils
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22280%22%3E%3C/svg%3E
Sau khi cài đặt ldnsutils, hãy chạy lệnh drill bên dưới để xác minh bộ đệm DNS mà bạn đã cấu hình trên máy chủ Dnsmasq.
Mã:
drill duckduckgo.com | grep "Query time"
drill duckduckgo.com | grep "Query time"
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22615%22%20height=%22244%22%3E%3C/svg%3E
Bạn cũng có thể xác minh bộ nhớ đệm DNS thông qua lệnh dig với tùy chọn '+thống kê'.
Mã:
dig +noall +stats duckduckgo.com
dig +noall +stats duckduckgo.com
Kết luận
Trong hướng dẫn này, bạn đã tạo Máy chủ DNS cục bộ của riêng mình bằng Dnsmasq. Bạn đã thiết lập Máy chủ DNS cục bộ của riêng mình cho môi trường cục bộ của mình bằng Dnmasq trên máy chủ Debian 12. Ngoài ra, điều này bao gồm cấu hình Dnsmasq với tên miền cục bộ và miền phụ, bật bộ đệm DNS để có phản hồi DNS định kỳ nhanh hơn và bật Máy chủ DHCP thông qua Dnsmasq.Cuối cùng, bạn cũng đã thêm và cấu hình máy khách để sử dụng Máy chủ DNS cục bộ mà bạn đã tạo. Trong phần này, bạn cũng đã học cách khắc phục sự cố Máy chủ DNS bằng lệnh dig và cách thiết lập trình phân giải DNS trên hệ thống Linux.