I. Chuẩn bị
- Tối thiểu 50MB RAM trống.
- Tối thiểu 100MB bộ nhớ trống (Xem yêu cầu về Bộ nhớ).
- Router có CPU hiệu suất cao v.d: Dual-core (2 lõi) với tốc độ CPU (MHz) càng cao càng tốt.
Dung lượng RAM cần thiết cũng sẽ liên quan đến danh sách bộ lọc bạn sử dụng.
Router có RAM dưới 128MB hoặc chỉ có CPU lõi đơn sẽ có xu hướng hoạt động kém.
Một tùy chọn thay thế có thể là sử dụng Raspberry Pi Zero cắm vào cổng USB của router để chạy AGH. ( xem hướng dẫn )
I.1 Độ trễ DNS / Hiệu suất
Để đảm bảo hiệu suất tốt nhất và độ trễ thấp nhất đối với các yêu cầu DNS (DNS Query), AGH nên được thiết lập làm máy chủ DNS chính. Nếu bạn hiện đang cài đặt dnsmasq hoặc unbound, bạn nên di chuyển các port dịch vụ này sang một port khác thay thế và thiết lập AGH sử dụng cổng DNS 53. Hướng dẫn này đề xuất giữ dnsmasq/unbound để làm máy chủ phân giải Reverse-DNS (PTR) nội bộ.
Lý do AGH nên được thiết lập làm máy chủ DNS chính là do các máy chủ phân giải như dnsmasq sẽ phân nhánh từng yêu cầu DNS khi AGH được đặt làm máy chủ Upstream DNS, điều này sẽ ảnh hưởng đến độ trễ DNS, có thể được theo dõi trong bảng điều khiển AGH. Nếu AGH không phải là máy chủ DNS chính của bạn, bạn cũng sẽ không thể xem các yêu cầu DNS được thực hiện bởi mỗi máy khách, vì toàn bộ dữ liệu sẽ xuất hiện từ 1 IP duy nhất đó là IP Router (vì dnsmasq sẽ gửi request đến AGH rồi AGH lại phải gửi tiếp request đó).
Hướng dẫn sau đây sẽ thiết lập cho dnsmasq sang cổng 54 và cấu hình nó cho AGH để sử dụng cho việc tra cứu Reverse-DNS (PTR) cục bộ.
I.2 Yêu cầu về bộ nhớ
Từ phiên bản 0.107.0, binary của AdGuardHome được biên dịch đã tăng dung lượng đáng kể. Đối với nhiều Router, nó sẽ chiếm một dung lượng lưu trữ khá trong hệ thống. Ngoài ra, các tính năng như thống kê và ghi nhật ký truy vấn cũng sẽ yêu cầu thêm dung lượng lưu trữ khi được ghi vào thư mục làm việc. Đối với các Router có ít dung lượng bộ nhớ, bạn nên sử dụng USB hoặc đường dẫn lưu trữ bên ngoài để tránh làm đầy hệ thống. Nếu dung lượng bộ nhớ thấp, bạn có thể sử dụng phương pháp cài đặt tùy chỉnh và lưu trữ tất cả cài đặt AdGuard Home vào bộ nhớ ngoài. Ngoài ra, bạn cũng có thể thực hiện cấu hình exroot .
Hiện tại (tháng 5 năm 2022, edge build 108) một bản cài đặt đầy đủ vào thư mục /opt sẽ cần khoảng 100Mb dung lượng.
- (70Mb) 35Mbx2 cho Binary AGH chính và 1 Binary phụ được backup khi nâng cấp. (nằm trong thư mục agh-backup - Disable autoupdate sẽ tiết kiệm được phần này)
- 20Mb cho bộ lọc. (bạn có thể tăng hoặc giảm mức này tùy thuộc vào danh sách bộ lọc bạn sử dụng)
- 2Mb cho thống kê 90 ngày.
- 53Mb cho 7 ngày nhật ký truy vấn.
Một số tips giúp tiết kiệm bộ nhớ router:
- Lưu query log ở bộ nhớ RAM
- Set DNS cache nhỏ lại
- Tắt Autoupdate và sử dụng UPX Packer để nén Binary về nhỏ nhất có thể.
- Bỏ các filter không cần thiết, chỉ giữ 2 or 3 filter quan trọng.
I.3 Ghi nhật ký truy vấn / thống kê
Một trong những lợi ích chính của AGH là dữ liệu thống kê và truy vấn chi tiết, tuy nhiên đối với nhiều Router, việc lưu giữ dữ liệu này trong thời gian dài có thể gây ra sự cố (xem Yêu cầu về bộ nhớ ). Nếu bạn đang sử dụng bộ lưu trữ tmpfs (RAM) mặc định, bạn nên đặt khoảng thời gian lưu giữ ngắn hơn hoặc tắt hoàn toàn tính năng ghi nhật ký. Nếu bạn muốn có thời gian lưu giữ lâu hơn cho dữ liệu truy vấn / thống kê, hãy cân nhắc việc di chuyển thư mục lưu trữ ra bên ngoài bộ nhớ của Router.
II. Cài đặt AGH
Kể từ phiên bản OpenWRT 21.02, gói cài đặt AdGuardHome chính thức đã có thể được cài đặt thông qua opkg.
Gói opkg cho phiên bản OpenWRT 21.02 cũng đã được xác nhận là có thể chạy trên phiên bản 19.07, nhưng sẽ yêu cầu chuyển file ipk thông qua SSH hoặc SCP và cài đặt với opkg theo cách thủ công do không có trong kho ứng dụng của phiên bản 19.07.
Các gói phụ thuộc bắt buộc (ca-bundle) sẽ được tự động giải quyết và cài đặt khi sử dụng gói chính thức. (Sẽ phải cài bằng tay trên phiên bản OpenWRT 19.07)
- Đăng nhập SSH vào Router rồi chạy lệnh sau để cài đặt AGH
|
|
Gói OpenWRT chính thức sử dụng các đường dẫn và thư mục theo mặc định như sau:
- Ứng dụng
AdGuardHome
sẽ được cài đặt vào/usr/bin/AdGuardHome
. - File cấu hình chính
adguardhome.yaml
được đặt tại/etc/adguardhome.yaml
. - Thư mục làm việc mặc định sẽ là
/var/adguardhome
(Mặc định thì/var
là một symlink trỏ tới/tmp
(RAM)). - Có thể thay đổi thư mục làm việc bằng cách chỉnh sửa file
/etc/config/adguardhome
- Một
init.d
script sẽ được thêm vào thư mục/etc/init.d/
(/etc/init.d/adguardhome
).
Thư mục làm việc mặc định sẽ nằm ở thư mục /tmp
có nghĩa là nhật ký truy vấn và số liệu thống kê sẽ bị mất khi khởi động lại. Để tránh điều này, bạn nên định cấu hình đường dẫn lưu trữ đến các thư mục như /opt
hoặc /mnt
với bộ nhớ ngoài và cập nhật thư mục làm việc tương ứng trong file /etc/config/adguardhome
.
- Để AdGuard Home tự động khởi động khi khởi động và khởi động dịch vụ hãy chạy lệnh sau:
|
|
III. Cấu hình AGH và dnsmasq
III.1 Cấu hình thông qua SSH
Sau khi cài đặt gói opkg, hãy chạy các lệnh sau thông qua SSH để thiết lập AGH làm trình phân giải DNS chính. Những hướng dẫn này giả sử bạn đang sử dụng dnsmasq. Điều này sẽ hạ cấp dnsmasq xuống một trình phân giải DNS nội bộ.
Trong bài này mình sẽ set dnsmasq sang port 54. Các bạn có thể thay thế tùy thích nhưng hãy tránh những port đặc thù và đã được quy ước (vd như http là 80, https là 443 ...). Muốn xem các dịch vụ gì đã được gán với port nào thì vào đây: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers .
III.2 Cấu hình AGH trên giao diện web
Thiết lập gốc ban đầu thì AGH sẽ được truy cập thông qua port TCP 3000.
- Truy cập vào
http://192.168.1.1:3000/
(Nếu IP Router của các bạn không phải là 192.168.1.1, hãy thay đổi cho phù hợp) - Tiến hành thiết lập theo hướng dẫn (Có thể giữ nguyên hoặc thay đổi Port WEB Admin tùy ý).
- Giữ mặc định DNS port là 53.
- Đặt Username và Admin Password.
Vậy là xong các thiết lập cơ bản và các bạn đã có thể sử dụng AdguardHome ngay rồi.
IV. Thiết lập nâng cao và thủ thuật sử dụng AGH
IV.1 Reverse DNS (rDNS)
Reverse DNS giúp AGH hiển thị hostname của clients giúp dễ dàng xác định clients và truy cập vào clients bằng tên miền nội bộ (pnghia-pc.lan, ...) (sử dụng dnsmasq như đã nên bên trên).
- Từ AdGuard Home web Admin, Vào Settings → DNS settings
- Kéo xuống mục “Private reverse DNS servers”
- Thêm vào dòng
192.168.1.1:54
(Thay đổi192.168.1.1
tùy vào IP Router của bạn) - Tick vào hai tùy chọn “Use private reverse DNS resolvers” và “Enable reverse resolving of client's IP addresses”. Nhấn Apply.
IV.2 Ngăn AGH gửi request tên miền nội bộ lên upstream server (.lan, .local, ...)
- Rule này sử dụng để khi các bạn sử dụng tên miền nội bộ để truy cập vào các clients trong mạng LAN, AGH sẽ hiểu rằng đó là domain nội bộ và sẽ không gử request tới các upstream DNS server.
- ví dụ: Bạn setup local domain cho OpenWRT là
.lan
. Clients là 1 PC có tên là pnghia-pc, khi PC này kết nối tới OpenWRT thì DHCP sẽ cấp IP và gán cho PC đó 1 Hostname tên là pnghia-pc đồng thời sẽ gán 1 tên miền nội bộ cho PC này có tên là pnghia-pc.lan. Khi người dùng truy cập vàopnghia-pc.lan
thì AGH sẽ sử dụng rDNS thông qua dnsmasq để lấy IP của PC đó rồi trả về IP như 1 domain thông thường.
Trên giao diện Admin, vào Settings → DNS Settings > Mục Upstream Servers dán 2 dòng sau vào:
|
|
*trong đó lan
là tên miền nội bộ, thay đổi nó nếu bạn sử dụng domain khác
IV.3 Ngăn chặn clients sử dụng DNS được fix cứng (Hard-coded DNS).
- Một số thiết bị có thể sẽ bypass DHCP DNS bằng cách set cứng vào hệ thống của nó 1 server DNS khác (vd: Chromecast...).
- Để ngăn chặn việc này, ta có thể sử dụng tường lửa để chuyển hướng mọi request DNS về local server (AGH)
IV.3.1 Phiên bản OpenWRT sử dụng IPTables (firewall3)
/etc/firewall.user
Cách khác: Bạn cũng có thế thêm thủ công rule fw3 vào file /etc/config/firewall
|
|
IV.3.2 Phiên bản OpenWRT sử dụng NFT Tables (firewall4)
IV.4 Tăng cache và bật Optimistic caching tối ưu tốc độ.
Optimistic caching
hiểu nôm na là AGH sẽ gửi phản hồi DNS cho Domain từ cache của nó thay vì gửi request lên Uptream server và chờ phản hồi từ Server. Khi bật nó lên, AGH sẽ cache lại mọi truy vấn DNS và sử dụng nó cho lần truy vấn tiếp theo. - Phản hồi từ cache đồng nghĩa với việc cho dù TTL của domain đã hết nhưng AGH vẫn sẽ trả về entries cũ của domain đó đã lưu trong cache, AGH cũng sẽ cố gắng làm mới TTL của các domain đã cache. - Sử dụng trong gia đình hoặc thường xuyên truy cập vào một domain nào đó thì nên bật lên để tối ưu tốc độ phản hồi DNS.Từ Giao diện Admin, Vào Settings -> DNS Settings -> kéo cuống mục DNS cache configuration - Mục cache size, các bạn tăng mức cache lên (tùy bộ nhớ Router mà set cho phù hợp). đơn bị tính bằng
bytes
. vd: 10 MB = 10204 kB = 10485760 Bytes - Tick vàoOptimistic caching
. Nhấn Save
- Kể từ lúc bật
Optimistic caching
lên, sẽ mất 1 khoảng thời gian để AGH cache lại các request vàAverage processing time
sẽ giảm dần.
Bài viết được tham khảo tại openwrt . Cộng với một số kinh nghiệm thiết lập AGH và sử dụng nhiều năm nay, hy vong sẽ giúp ích cho các bạn. Mọi thắc mắc vui lòng liên hệ trực tiếp.
Chúc các bạn thành công
Góp Ý / Bình Luận / Đánh giá