Việc sử dụng reverse proxy là một trong những phương pháp hàng đầu để truy cập các dịch vụ tự host của bạn. Các công cụ như Caddy hay Nginx Proxy Manager cho phép bạn lưu trữ nhiều dịch vụ trên các tên miền phụ khác nhau của một tên miền bạn sở hữu, đi kèm với chứng chỉ SSL riêng biệt. Tuy nhiên, một nhược điểm lớn khi reverse proxy được đặt trên một địa chỉ IP công cộng là các kết nối của bạn sẽ phải đi ra khỏi mạng gia đình và sau đó quay trở lại, hoặc có thể yêu cầu bạn luôn kết nối một VPN như Tailscale. May mắn thay, có một giải pháp hiệu quả để khắc phục điều này: Pi-hole.
Pi-hole thường được biết đến như một công cụ chặn quảng cáo và theo dõi trên toàn mạng, nhưng thực tế nó còn hơn thế nữa. Đây là một công cụ quản lý DNS mạnh mẽ, chặn quảng cáo bằng cách phản hồi dữ liệu trống cho các yêu cầu DNS đến các tên miền bị chặn. Tuy nhiên, với vai trò là một công cụ quản lý DNS, bạn hoàn toàn có thể triển khai các bản ghi DNS tùy chỉnh của riêng mình, cho phép bất kỳ tên miền nào cũng có thể được ghi đè để trỏ đến một địa điểm cụ thể.
Điểm đặc biệt là các tên miền của bạn không cần phải là các mục DNS hợp lệ. Chẳng hạn, tôi sử dụng tên miền “.home” cho một số dịch vụ, dù đây là một đề xuất TLD (Top-Level Domain) đã bị ICANN từ chối vào năm 2018. Tôi có thể truy cập bảng điều khiển Zigbee2MQTT của mình bằng “http://z2m.home“. Tuy nhiên, khả năng này còn trở nên mạnh mẽ hơn nhiều với tính năng ghi đè DNS (DNS override) cho một tên miền hiện có. Mặc dù các dịch vụ tự host của tôi đều được truy cập qua Tailscale, tôi vẫn có thể truy cập chúng ngay cả khi ở nhà mà không cần Tailscale, tất cả là nhờ Pi-hole.
Hướng dẫn cấu hình Ghi đè DNS với Pi-hole
Đơn giản và cực kỳ đáng giá
Điều đầu tiên bạn cần đảm bảo là đã thiết lập một Pi-hole và các thiết bị của bạn được cấu hình để sử dụng Pi-hole đó làm máy chủ DNS. Cá nhân tôi đang chạy hai Pi-hole: một trên máy chủ Proxmox và một trên máy chủ TrueNAS, và chúng là bản sao trực tiếp của nhau để đảm bảo tính sẵn sàng cao. Các máy chủ DNS trong cài đặt DHCP của bộ định tuyến của tôi được đặt về địa chỉ của cả hai Pi-hole này, giúp chúng tự động được phân phối đến tất cả các thiết bị trên mạng. Điều này có nghĩa là khi một Pi-hole gặp sự cố, mạng của tôi vẫn hoạt động ổn định và có thể phân giải tên miền.
Lý do tôi thực hiện điều này và không chỉ đơn thuần sử dụng một nhà cung cấp DNS công cộng làm dự phòng là do sự khác biệt trong cách các thiết bị xử lý các truy vấn DNS. Nhiều thiết bị sẽ đơn giản sử dụng bất kỳ máy chủ DNS nào phản hồi đầu tiên khi được cấu hình bởi DHCP, chứ không phải là ưu tiên các yêu cầu theo thứ tự DNS chính và phụ. Trong khi Windows sẽ ưu tiên nhà cung cấp DNS đầu tiên, các bản phân phối Linux dựa trên systemd sẽ thực hiện “kiểm tra song song” tất cả các máy chủ và chọn phản hồi nhanh nhất. Tương tự đối với Android, macOS và iOS, tất cả các máy chủ đều được truy vấn cùng lúc và máy chủ phản hồi nhanh nhất được coi là chính xác. Nếu bạn chỉ có thể triển khai một Pi-hole, bạn có thể cần sử dụng nó làm nhà cung cấp DNS duy nhất của mình, tùy thuộc vào các thiết bị bạn đang sử dụng.
Để cấu hình các bản ghi DNS ghi đè cục bộ cho các reverse proxy của bạn, hãy truy cập vào bảng điều khiển quản trị của Pi-hole và nhấp vào Settings, sau đó chọn Local DNS Records. Tại đây, bạn có thể thêm bất kỳ tên miền nào bạn muốn cùng với địa chỉ IP liên quan. Trong trường hợp của tôi, tôi có “jellyfin.example.ie” trỏ đến địa chỉ IP Tailscale của máy chủ reverse proxy trong các bản ghi DNS của tên miền. Tuy nhiên, tôi có thể ghi đè nó để trỏ đến địa chỉ IP cục bộ của reverse proxy thay thế khi tôi đang ở trên mạng gia đình. Mặc dù Tailscale thường sẽ cố gắng thiết lập kết nối trực tiếp giữa các thiết bị khi chúng ở cùng một mạng, điều này không phải lúc nào cũng có thể hoặc được Tailscale phát hiện, và điều tương tự cũng xảy ra với các nhà cung cấp tương tự khác.
Giao diện Pi-hole hiển thị cài đặt ghi đè DNS cục bộ cho các dịch vụ tự host
Tuy nhiên, có một lợi ích thậm chí còn lớn hơn khi sử dụng phương pháp này. Nếu tôi đang ở nhà, điều đó có nghĩa là các dịch vụ của tôi có thể được phân giải mà không cần sử dụng Tailscale chút nào. Tôi có thể tắt VPN Tailscale trên điện thoại hoặc PC của mình và vẫn truy cập tất cả các dịch vụ tự host thông qua tên miền của mình, ngay cả khi chúng chỉ được tham chiếu qua địa chỉ IP Tailscale trong các bản ghi A của tên miền. Reverse proxy của tôi vẫn nhận được yêu cầu tham chiếu một tên miền cụ thể, vì vậy nó biết dịch vụ nào tôi đang cố gắng sử dụng, ngay cả khi địa chỉ IP mà nó đang được liên hệ đã thay đổi. Thậm chí còn tốt hơn, chứng chỉ SSL vẫn hợp lệ, vì nó vẫn nằm trên cùng một tên miền. Điều này rất tiện lợi, giúp giảm đáng kể độ trễ và có nghĩa là các thiết bị thậm chí không thể sử dụng Tailscale vẫn có thể tương tác với các dịch vụ tự host của tôi miễn là chúng chấp nhận các máy chủ DNS từ OPNsense (hoặc bộ định tuyến của bạn).
Tại sao Pi-hole là công cụ không thể thiếu cho người tự host dịch vụ
Nếu bạn tự host các dịch vụ của riêng mình, Pi-hole là một công cụ không thể thiếu. Ngay cả khi nó không giúp bảo vệ quyền riêng tư trực tuyến và chặn các trình theo dõi, quảng cáo, thì Pi-hole vẫn là một công cụ vô giá trong mạng của tôi để truy cập các công cụ tự host mà tôi sử dụng tại nhà. Hơn nữa, việc sử dụng các địa chỉ ngắn và dễ nhớ như “z2m.home” và “pi.hole” để truy cập một số dịch vụ của tôi cũng rất thuận tiện.
Pi-hole thực sự là một nền tảng đa năng, vượt xa chức năng chặn quảng cáo ban đầu. Với khả năng quản lý DNS cục bộ mạnh mẽ, nó cung cấp một giải pháp hiệu quả và an toàn để tối ưu hóa việc truy cập các dịch vụ tự host trong mạng gia đình của bạn, giảm phụ thuộc vào các giải pháp VPN phức tạp và mang lại trải nghiệm người dùng mượt mà hơn.