Cách thiết lập Local DNS Resolver bằng Dnsmasq trên Ubuntu 20.04

theanh

Administrator
Nhân viên
Dnsmasq là viết tắt của "DNS masquerade" là một trình chuyển tiếp DNS đơn giản, nhẹ và dễ sử dụng được sử dụng cho một mạng nhỏ. Nó có thể được cấu hình như một bộ đệm DNS và máy chủ DHCP và hỗ trợ cả giao thức IPv4 và IPv6. Khi nhận được bất kỳ truy vấn DNS nào, nó sẽ trả lời chúng từ bộ đệm của mình hoặc chuyển tiếp đến máy chủ DNS khác.

Dnsmasq được tạo thành từ ba hệ thống con:
  • Hệ thống con DNS: Nó được sử dụng để lưu trữ đệm các loại bản ghi khác nhau bao gồm A, AAAA, CNAME và PTR.
  • Hệ thống con DHCP: Nó hỗ trợ DHCPv4, DHCPv6, BOOTP và PXE
  • Hệ thống con Quảng cáo bộ định tuyến: Nó cung cấp khả năng tự động cấu hình cơ bản cho các máy chủ IPv6. Nó có thể được sử dụng độc lập hoặc kết hợp với DHCPv6.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thiết lập máy chủ DNS cục bộ với Dnsmasq trên máy chủ Ubuntu 20.04.

Điều kiện tiên quyết​

  • Máy chủ chạy Ubuntu 20.04.
  • Mật khẩu gốc được cấu hình cho máy chủ.

Bắt đầu​

Trước tiên, bạn nên cập nhật các gói hệ thống lên phiên bản mới nhất. Bạn có thể cập nhật tất cả các gói bằng cách chạy lệnh sau:
Mã:
apt-get update -y
Sau khi cập nhật tất cả các gói, bạn sẽ cần tắt dịch vụ Systemd-resolved trong hệ thống của mình. Dịch vụ Systemd-resolved được sử dụng để phân giải tên mạng cho các ứng dụng cục bộ.

Bạn có thể tắt dịch vụ này bằng cách chạy lệnh sau:
Mã:
systemctl disable --now systemd-resolved
Sau khi tắt dịch vụ, bạn sẽ cần xóa tệp resolv.conf mặc định và tạo tệp mới với thông tin chi tiết về máy chủ DNS tùy chỉnh của mình.

Bạn có thể xóa tệp resolv.conf mặc định bằng lệnh sau:
Mã:
rm -rf /etc/resolv.conf
Tiếp theo, thêm máy chủ DNS của Google vào tệp resolv.conf bằng lệnh sau:
Mã:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt Dnsmasq​

Theo mặc định, Dnsmasq có sẵn trong kho lưu trữ mặc định của Ubuntu 20.04. Bạn có thể cài đặt nó chỉ bằng cách chạy lệnh sau:
Mã:
apt-get install dnsmasq dnsutils ldnsutils -y
Sau khi quá trình cài đặt hoàn tất, các dịch vụ Dnsmasq sẽ tự động được khởi động. Bạn có thể kiểm tra trạng thái của Dnsmasq bằng lệnh sau:
Mã:
systemctl status dnsmasq
Bạn sẽ nhận được kết quả sau:
Mã:
dnsmasq.service - dnsmasq - Máy chủ DNS lưu trữ và DHCP nhẹ Đã tải: đã tải (/lib/systemd/system/dnsmasq.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Tue 2020-11-02 11:02:01 UTC; 15 giây trước PID chính: 17726 (dnsmasq) Nhiệm vụ: 1 (giới hạn: 2282) Bộ nhớ: 868.0K CGroup: /system.slice/dnsmasq.service ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>02/11 11:02:12 ubuntu2004 systemd[1]: Đang khởi động dnsmasq - Máy chủ DNS lưu trữ đệm và DHCP nhẹ...02/11 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: kiểm tra cú pháp OK.02/11 11:02:12 ubuntu2004 dnsmasq[17726]: đã bắt đầu, phiên bản 2.80 cachesize 15002/11 11:02:12 ubuntu2004 dnsmasq[17726]: Dịch vụ DNS giới hạn ở các mạng con cục bộ02/11 11:02:12 ubuntu2004 dnsmasq[17726]: tùy chọn thời gian biên dịch: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: đọc /etc/resolv.confNov 02 11:02:12 ubuntu2004 dnsmasq[17726]: sử dụng nameserver 8.8.8.8#53Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: đọc /etc/hosts - 7 địa chỉNov 02 11:02:12 ubuntu2004 systemd[1]: Đã khởi động dnsmasq - Máy chủ DNS lưu trữ đệm và DHCP nhẹ.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình Dnsmasq​

Tiếp theo, bạn sẽ cần cấu hình Dnsmasq làm máy chủ DNS cục bộ. Bạn có thể thực hiện bằng cách chỉnh sửa tệp cấu hình chính của Dnsmasq:
Mã:
nano /etc/dnsmasq.conf
Thay đổi các dòng sau:
Mã:
port=53domain-neededbogus-privlisten-address=127.0.0.1,your-server-ipexpand-hostsdomain=dns-example.comcache-size=1000
Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, bạn sẽ cần thêm địa chỉ IP máy chủ của mình làm máy chủ tên chính trong tệp resolv.conf. Bạn có thể thêm bằng lệnh sau:
Mã:
nano /etc/resolv.conf
Thêm dòng sau phía trên dòng "nameserver 8.8.8.8":
Mã:
nameserver your-server-ip
Lưu và đóng tệp khi bạn hoàn tất. Tiếp theo, xác minh máy chủ xem có lỗi cấu hình nào không bằng lệnh sau:
Mã:
dnsmasq --test
Nếu mọi thứ đều ổn, bạn sẽ nhận được kết quả sau:
Mã:
dnsmasq: syntax check OK.
Cuối cùng, khởi động lại dịch vụ Dnsmasq để áp dụng các thay đổi:
Mã:
systemctl restart dnsmasq
Lúc này, Dnsmasq đã được khởi động và đang lắng nghe trên cổng 53. Bạn có thể xác minh bằng lệnh sau:
Mã:
ss -alnp | grep -i :53
Bạn sẽ nhận được kết quả sau:
Mã:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=4))udp UNCONN 0 0 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=6))tcp LISTEN 0 32 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=5))tcp LISTEN 0 32 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=7))

Thêm Bản ghi DNS vào Máy chủ Dnsmasq​

Tiếp theo, bạn sẽ cần chỉnh sửa tệp /etc/hosts và thêm mục nhập máy chủ DNS cục bộ.
Mã:
nano /etc/hosts
Thêm dòng sau:
Mã:
your-server-ip host1.dns-example.com
Lưu và đóng tệp khi bạn hoàn tất.

Xác minh Độ phân giải Máy chủ Dnsmasq​

Tại thời điểm này, Dnsmasq đã được cài đặt và định cấu hình. Không, đã đến lúc xác minh độ phân giải DNS.

Bạn có thể sử dụng lệnh dig để kiểm tra độ phân giải DNS như được hiển thị bên dưới:
Mã:
dig host1.dns-example.com +short
Nếu mọi thứ đều ổn, bạn sẽ thấy địa chỉ IP máy chủ của mình trong đầu ra sau:
Mã:
your-server-ip
Bạn cũng có thể xác minh độ phân giải DNS bên ngoài bằng lệnh sau:
Mã:
dig howtoforge.com +short
Bạn sẽ nhận được đầu ra sau:
Mã:
172.67.68.93104.26.3.165104.26.2.165

Cấu hình máy khách từ xa để sử dụng máy chủ DNS Dnsmasq​

Tiếp theo, bạn sẽ cần cấu hình máy khách từ xa để sử dụng máy chủ DNS Dnsmasq của mình làm máy chủ DNS mặc định.

Trước tiên, hãy cài đặt công cụ DNS bằng lệnh sau:
Mã:
apt-get install dnsutils ldnsutils -y
Sau khi cài đặt, bạn sẽ cần chỉnh sửa tệp /etc/resolv.conf và mục nhập máy chủ DNS Dnsmasq của mình.
Mã:
nano /etc/resolv.conf
Thêm dòng sau vào đầu tệp:
Mã:
nameserver your-server-ip
Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, hãy xác minh độ phân giải DNS cục bộ bằng lệnh sau:
Mã:
dig host1.dns-example.com
Bạn sẽ thấy đầu ra sau:
Mã:
; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com;; tùy chọn toàn cục: +cmd;; Đã trả lời:;; Mã lệnh HEADER: QUERY, trạng thái: NOERROR, id: 26401;; cờ: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PEUDOSECTION:; EDNS: phiên bản: 0, cờ:; udp: 4096;; PHẦN CÂU HỎI:;host1.dns-example.com. IN A;; PHẦN CÂU HỎI:host1.dns-example.com. 0 IN A 45.58.32.165;; Thời gian truy vấn: 301 mili giây;; MÁY CHỦ: 45.58.32.165#53(45.58.32.165);; KHI NÀO: Thứ Hai, ngày 02 tháng 11 năm 2020 lúc 16:49:37 IST;; MSG SIZE rcvd: 66
Tiếp theo, bạn sẽ cần xác minh máy chủ DNS của mình để lưu vào bộ nhớ đệm. Bạn có thể kiểm tra bằng tiện ích drill.

Đầu tiên, hãy chạy lệnh sau:
Mã:
drill google.com | grep "Query time"
Bạn sẽ thấy đầu ra sau:
Mã:
;; Query time: 290 msec
Tiếp theo, hãy chạy lại lệnh để kiểm tra xem bộ nhớ đệm có hoạt động hay không:
Mã:
drill google.com | grep "Query time"
Bạn sẽ thấy thời gian truy vấn hiện đang giảm xuống còn 4 msec:
Mã:
;; Query time: 4 msec

Kết luận​

Xin chúc mừng! Bạn đã cài đặt và định cấu hình thành công Dnsmasq làm máy chủ DNS cục bộ và Ubuntu 20.04. Tôi hy vọng bây giờ bạn có thể dễ dàng triển khai nó trong mạng cục bộ của mình để phân giải tên.
 
Back
Bên trên