Hành trình tự host (self-hosting) đã mang lại cho tôi nhiều trải nghiệm thú vị và bổ ích. Hiện tại, hệ thống NAS của tôi đang vận hành nhiều dịch vụ hữu ích như lưu trữ đám mây, bộ ứng dụng văn phòng và máy chủ streaming. Gần đây, tôi cũng quyết định tự host Pi-hole để chặn quảng cáo trên toàn bộ mạng Wi-Fi của mình.
Mọi thứ diễn ra suôn sẻ cho đến khi TrueNAS thông báo có bản cập nhật Pi-hole mới. Tôi cố gắng cập nhật Pi-hole và… toàn bộ mạng của tôi sập. Nếu bạn am hiểu về mạng, có lẽ bạn đã biết vấn đề ở đâu, nhưng hãy để tôi giải thích chi tiết.
Pi-hole Là Gì Và Cơ Chế Hoạt Động
Hiểu Đúng Về Pi-hole: Công Cụ Phân Giải DNS
Giao diện bảng điều khiển Pi-hole hiển thị thống kê truy vấn DNS và số lượng quảng cáo đã chặn.
Pi-hole thường được biết đến như một công cụ chặn quảng cáo, và đây cũng là lý do chính tôi muốn thiết lập nó. Tuy nhiên, nói một cách chính xác hơn, Pi-hole là một trình phân giải DNS (DNS resolver) tự host. Nó tiếp nhận tất cả các truy vấn DNS từ các thiết bị trong mạng của bạn và chuyển chúng đến các máy chủ phù hợp, giúp bạn kết nối được với tất cả các trang web như bình thường.
Thông thường, bộ định tuyến (router) hoặc modem của mạng sẽ cung cấp một trình phân giải DNS được cài đặt sẵn, thường là DNS của nhà cung cấp dịch vụ Internet (ISP) hoặc một dịch vụ công cộng như Google DNS (8.8.8.8 và 8.8.4.4). Với Pi-hole, sau khi thiết lập ứng dụng tự host, bạn chỉ cần thay đổi trình phân giải DNS trên router của mình thành địa chỉ IP của Pi-hole. Pi-hole sẽ sử dụng một trình phân giải upstream như Quad9, Google hoặc Cloudflare, sau đó kết hợp với các danh sách chặn mà bạn đã thêm vào. PC và các thiết bị khác của bạn sẽ gửi yêu cầu DNS đến Pi-hole, và nó sẽ phản hồi các yêu cầu đến các tên miền bị chặn bằng một địa chỉ “giả” (dummy address) như “::” cho địa chỉ IPv6 hoặc “0.0.0.0” cho địa chỉ IPv4.
Việc chặn quảng cáo và theo dõi trở nên khả thi nhờ vào cơ chế này: bất kỳ yêu cầu DNS nào đến các máy chủ quảng cáo đã biết đều sẽ bị ngắt kết nối với đích đến dự kiến, về cơ bản là bị loại bỏ, do đó quảng cáo không bao giờ xuất hiện trong mạng của bạn. Điều này còn giúp tiết kiệm đáng kể dung lượng dữ liệu, mang lại lợi ích kép.
Sự Cố Mạng Đáng Tiếc Khi Cập Nhật Pi-hole
Khi DNS Dự Phòng Không Tồn Tại
Ảnh chụp màn hình TrueNAS hiển thị thông tin ứng dụng Pi-hole đã được cài đặt và trạng thái hoạt động.
Một tuần trước, khi kiểm tra TrueNAS, tôi nhận thấy hầu hết các ứng dụng tự host của mình đều có bản cập nhật. Tôi nghĩ rằng việc cập nhật Pi-hole có thể gây ra sự cố mạng trong vài phút khi nó đang cập nhật và các thiết bị không thể liên lạc được, vì vậy tôi để việc đó làm sau cùng. Tuy nhiên, tôi rõ ràng không lường trước được điều sẽ xảy ra. Khi cập nhật Pi-hole, TrueNAS sẽ tắt ứng dụng, tải gói cập nhật từ kho lưu trữ và sau đó triển khai nó. Vấn đề là, sau khi tắt Pi-hole, không còn trình phân giải DNS nào để giúp thiết lập kết nối, vì vậy TrueNAS bị kẹt trong một vòng lặp cố gắng tải xuống gói Pi-hole đã cập nhật. Đương nhiên, trong khi tất cả điều này diễn ra, mạng của tôi cũng ngừng hoạt động vì không có trình phân giải DNS nào trong mạng. Tệ hơn nữa, vì một bản cập nhật đã được kích hoạt, tôi không thể khởi động lại container ngay lập tức.
Tôi kể lại tất cả điều này trong hồi tưởng, vì vào thời điểm đó, tôi không hề biết chuyện gì đang xảy ra. Trong tình huống như vậy, bạn có thể khắc phục sự cố bằng cách sử dụng một máy chủ DNS cụ thể trên các thiết bị của mình, nhưng tôi đã quên mất điều này. May mắn thay, trong một cuộc họp qua điện thoại và kết nối 5G, đồng nghiệp Adam Conway đã nhắc tôi về khả năng đó. Thế là tôi đặt máy chủ DNS của Google cho Mac Mini của mình để có thể tiếp tục làm việc. Chính lúc này, tôi đã cho Adam xem lỗi mình gặp phải, và anh ấy bật cười khi nhận ra vấn đề.
May mắn thay, giải pháp khá đơn giản. Tôi chỉ cần vào cài đặt mạng TrueNAS và thêm một mục DNS riêng biệt, giống như tôi đã làm trên Mac Mini, để NAS vẫn có thể phân giải địa chỉ. Pi-hole của tôi là trình phân giải DNS duy nhất được định nghĩa trong DHCP của tôi, mà NAS của tôi cũng đã tuân thủ một cách trung thực. Khi tôi định nghĩa thêm một máy chủ DNS bên ngoài trên TrueNAS, cuối cùng tôi đã có thể cập nhật Pi-hole và đưa mạng của mình hoạt động trở lại.
Vì Sao Tính Dự Phòng Lại Quan Trọng Với Hệ Thống Mạng?
Pi-hole Và Lợi Ích Của Hệ Thống Kép
Ảnh chụp màn hình Pi-hole hiển thị các lỗi trong tab chẩn đoán, minh họa tầm quan trọng của hệ thống DNS dự phòng.
Bạn có thể nhận thấy rằng khi tôi đề cập đến máy chủ DNS của Google ở trên, tôi đã nhắc đến hai địa chỉ IP, nhưng với Pi-hole của tôi, chỉ có một. Thật vậy. Google cung cấp cả trình phân giải DNS chính và trình phân giải “phụ”, và thực sự, điều này rất quan trọng. Trong nhiều trường hợp, một thiết bị sẽ thăm dò cả hai máy chủ DNS để phân giải một truy vấn, và máy chủ phản hồi nhanh hơn sẽ được sử dụng, giúp đảm bảo kết nối nhanh hơn. Hơn nữa, nếu một trong các máy chủ bị quá tải hoặc không phản hồi, máy chủ kia có thể thay thế kịp thời.
Với Pi-hole, bạn không thực sự có được điều đó, ít nhất là nếu bạn chỉ có một instance. Đồng nghiệp Adam của tôi gần đây đã viết về việc tại sao việc có một instance Pi-hole thứ hai là một ý tưởng tuyệt vời vì lý do này. Nếu một trong các máy chủ Pi-hole của bạn ngừng phản hồi, mạng của bạn có thể tiếp tục hoạt động bình thường, vì máy chủ kia sẽ gánh vác toàn bộ mạng của bạn để phân giải tất cả các truy vấn. Điều này không bắt buộc, nhưng có những lợi ích rõ ràng, như tôi đã tìm ra trong toàn bộ sự cố này.
Bạn có thể chỉ sử dụng một trình phân giải DNS dựa trên đám mây như Google làm bản sao lưu, nhưng nếu mục tiêu của bạn là chặn quảng cáo, bất cứ khi nào máy chủ phụ được sử dụng, việc chặn quảng cáo sẽ không xảy ra vì máy chủ đó vẫn sẽ phục vụ quảng cáo như bình thường. Vì vậy, tôi đã thiết lập instance Pi-hole duy nhất của mình mà không có bất kỳ sự dự phòng nào; không có máy chủ sao lưu nào mà các thiết bị của tôi có thể sử dụng. Và rồi bản cập nhật xảy ra, và tất nhiên, mọi thứ trở nên tồi tệ. Để tránh những vấn đề như thế này, Adam nói với tôi rằng khi Pi-hole của anh ấy được triển khai trên TrueNAS, anh ấy đã chỉ định DNS của Cloudflare trong cài đặt mạng TrueNAS của mình. Theo kinh nghiệm của anh ấy, instance TrueNAS của anh ấy (theo nhật ký Pi-hole của anh ấy) không bao giờ truy cập các tên miền bị chặn, và việc định nghĩa một nhà cung cấp DNS bên ngoài ở cấp độ hệ điều hành sẽ tránh mọi vấn đề không lường trước được. Hãy tưởng tượng bạn đang ở xa, cố gắng truy cập máy chủ của mình từ xa, và sau đó phát hiện ra rằng bạn không thể kết nối vì Pi-hole đột nhiên gặp sự cố?
Mặc dù cá nhân tôi chưa gặp phải tình huống đó, nhưng instance Pi-hole chính của bạn có thể chậm lại hoặc gặp sự cố (và có nhiều báo cáo về điều này với Pi-hole V6), vì vậy việc có một máy chủ DNS phụ là quan trọng vì lý do dự phòng. Như Adam đã lưu ý, Pi-hole sử dụng rất ít tài nguyên, vì vậy việc triển khai hai instance trên các máy khác nhau, nếu bạn có đủ tài nguyên, có thể giúp đảm bảo mạng của bạn luôn hoạt động. Và, như tôi đã học được, điều này đặc biệt đúng khi bạn đang cập nhật một trong các instance Pi-hole của mình.
Tự Host: Thử Thách Nhưng Đầy Hứa Hẹn
Tự host chắc chắn là một hành trình thú vị và bổ ích, nhưng nó cũng đầy thử thách nếu bạn không tìm hiểu trước hoặc nếu bạn không biết những gì mình chưa biết. Những vấn đề như tôi đã gặp phải với Pi-hole chắc chắn sẽ xảy ra, nhưng cuối cùng, điều đó vẫn đáng giá. Việc không có quảng cáo khi tôi sử dụng Wi-Fi — cộng với tất cả những lợi ích khác của việc tự host — hoàn toàn xứng đáng, và tôi đặc biệt khuyến nghị điều đó. Và trong khi tôi đang sử dụng nó trên NAS, bạn có thể sử dụng một Raspberry Pi giá rẻ (hoặc thậm chí một chiếc điện thoại cũ) để host Pi-hole với chi phí tổng thể thấp hơn nhiều.
Biểu tượng (logo) chính thức của dự án Pi-hole, công cụ chặn quảng cáo và theo dõi.
Để tìm hiểu thêm về dự án Pi-hole, bạn có thể truy cập trang GitHub chính thức của họ: Tìm hiểu thêm tại Github