Bạn có mệt mỏi với việc phải ghi nhớ các địa chỉ IP và số cổng phức tạp của những dịch vụ tự host (self-hosted services) trong mạng nội bộ của mình? Tôi cũng từng như vậy. Đó là lý do tại sao tôi đã tìm ra cách sử dụng Pi-hole kết hợp với Nginx Proxy Manager để gán tên miền cục bộ cho các dịch vụ này, giúp việc truy cập trở nên dễ dàng hơn bao giờ hết mà không cần phải phơi bày chúng ra internet, đảm bảo an toàn tối đa cho hệ thống của bạn.
Phân Biệt Phân Giải Tên Miền Cục Bộ và Bên Ngoài
Khi bạn gõ một tên miền vào trình duyệt, chẳng hạn như https://howtogeek.com, trình duyệt của bạn sẽ cố gắng phân giải tên miền đó để biết nơi cần điều hướng bạn đến.
Phân giải tên miền bên ngoài xảy ra khi một trang web có thể được truy cập từ bên ngoài mạng cục bộ của nó. Khi bạn truy cập How-To Geek, bạn đang truy cập một máy chủ ở trung tâm dữ liệu nào đó trên một mạng bên ngoài, không phải mạng nội bộ tại nhà bạn.
Tuy nhiên, nếu bạn tự host một dịch vụ tại nhà, ví dụ như Audiobookshelf, và truy cập nó thông qua địa chỉ IP, thì bạn đang truy cập một trang web cục bộ. Bạn cũng có thể thiết lập một dịch vụ cho phép bạn truy cập các trang web được lưu trữ cục bộ đó bằng một tên miền, mà không cần phải rời khỏi mạng cục bộ của mình.
Người đọc sách điện tử Calibre được tự lưu trữ và truy cập qua iPhone
Tóm lại: tên miền cục bộ chỉ phân giải trong mạng nội bộ của bạn, trong khi tên miền bên ngoài có thể được truy cập bởi bất kỳ ai có kết nối internet.
Đây là điều quan trọng cần biết khi tự host các dịch vụ. Nếu bạn phơi bày một dịch vụ (như Audiobookshelf) ra internet với một tên miền bên ngoài, thì bất kỳ ai trên thế giới có địa chỉ tên miền đó đều có thể truy cập dịch vụ của bạn.
Tuy nhiên, bạn cũng có thể thiết lập để các yêu cầu tên miền đó chỉ được phân giải khi bạn đang ở trong mạng gia đình để tăng cường bảo mật. Một số dịch vụ, như trình quản lý máy ảo Proxmox hoặc các phiên bản Pi-hole của tôi, tôi không muốn chúng có thể truy cập được từ bên ngoài mạng cục bộ vì mục đích bảo mật.
Đối với những dịch vụ đó, tôi sử dụng Pi-hole kết hợp với Nginx Proxy Manager để gán tên miền cho các dịch vụ cục bộ, giúp tôi không phải cố gắng ghi nhớ địa chỉ IP nữa.
Bạn Không Cần Mua Một Tên Miền Công Khai
Bạn có thể nghĩ rằng mình cần phải mua một tên miền để thực hiện điều này. Trên thực tế, bạn không cần thiết. Tuy nhiên, tôi vẫn khuyên bạn nên mua một tên miền, dù điều đó không hoàn toàn bắt buộc.
Một quả địa cầu màu xanh được bao quanh bởi các đuôi tên miền phổ biến như .com, .net, .fun và .cloud
Cách thức hoạt động của phân giải tên miền cục bộ là sử dụng một máy chủ DNS cục bộ (trong trường hợp này là Pi-hole), và yêu cầu máy chủ DNS đó phân giải các tên miền nhất định đến một địa chỉ IP cục bộ.
Trên lý thuyết, bạn thậm chí có thể xây dựng công cụ tìm kiếm của riêng mình và sau đó yêu cầu máy chủ DNS cục bộ phân giải https://google.com
đến công cụ tìm kiếm được lưu trữ cục bộ đó. Mặc dù điều này có thể thực hiện được, nhưng không được khuyến khích, vì việc định tuyến lại các dịch vụ công cộng có thể làm gián đoạn phần lớn trải nghiệm duyệt internet của bạn.
Bạn có thể làm điều tương tự bằng cách yêu cầu máy chủ DNS cục bộ phân giải bất kỳ tên miền nào bạn muốn đến các dịch vụ của mình. Tương tự như tình huống Google ở trên, đó không phải lúc nào cũng là một ý tưởng hay. Lấy The Verge làm ví dụ. Cuối năm 2011, https://theverge.com
đã trở thành The Verge như chúng ta biết ngày nay. Đầu năm 2011, https://theverge.com
thực sự là The Verge Internet Services, một loại trang web rất khác.
Vì vậy, nếu bạn chọn một tên miền hiện không được đăng ký, hoặc có thể là một tên miền trỏ đến một dịch vụ mà bạn nghĩ rằng sẽ không bao giờ sử dụng, thì hoàn toàn có thể tên miền đó sẽ trở nên hữu ích trong tương lai—hoặc thậm chí cần thiết. Hãy tưởng tượng ai đó vào năm 2011 xây dựng toàn bộ homelab của họ bằng cách sử dụng https://theverge.com
làm tên miền, chỉ để sau này muốn xem các bài viết của Verge. Họ sẽ phải di chuyển tất cả các dịch vụ của mình sang một tên miền mới, đây không phải là một việc nhỏ và cũng không phải là một nhiệm vụ dễ dàng.
Tốt nhất là mua một tên miền cho mục đích phân giải tên miền cục bộ, ngay cả khi bạn không có kế hoạch truy cập các dịch vụ từ bên ngoài mạng của mình, mặc dù điều đó không bắt buộc.
Pi-hole Xử Lý Các Yêu Cầu DNS Cục Bộ
Để có thể xử lý các yêu cầu DNS cục bộ một cách hiệu quả, bạn sẽ cần một máy chủ DNS được lưu trữ cục bộ. Đối với mục đích này, cá nhân tôi sử dụng Pi-hole, mặc dù bạn có thể sử dụng bất kỳ máy chủ DNS nào khác mà bạn muốn.
Tôi sẽ không đi sâu vào hướng dẫn cách thiết lập Pi-hole tại đây, vì đã có tài liệu rất tốt cho việc đó.
Tuy nhiên, một khi bạn đã thiết lập Pi-hole trên mạng của mình và đặt nó làm máy chủ DNS chính, bạn sẽ có thể điều hướng đến phần Settings > Local DNS Records và bắt đầu nhập các bản ghi DNS của mình.
Giao diện quản lý Pi-hole
Các bản ghi này có thể là tên miền gốc (ví dụ: testing.com) hoặc tên miền phụ (ví dụ: pi-hole.testing.com) tùy thuộc vào mục đích của bạn. Tôi thường sử dụng tên miền phụ để có thể sử dụng cấu trúc service.domain.com
làm một địa chỉ dễ nhớ.
Các mục nhập DNS cục bộ trong cài đặt Pi-hole
Điều chính bạn cần nhớ là trỏ địa chỉ IP về địa chỉ IP của máy mà bạn đang chạy Nginx Proxy Manager. Đó là tất cả những gì cần làm ở phía Pi-hole.
Nginx Proxy Manager Định Tuyến Tên Miền Của Bạn Đến Nơi Cần Đến
Giờ đây, một khi bạn đã thiết lập và chạy Nginx Proxy Manager trên hệ thống của mình (sử dụng cổng 80 và 443), đã đến lúc hoàn tất việc thiết lập tên miền cục bộ.
Nếu bạn không có kế hoạch sử dụng HTTPS hoặc SSL, thì bước tiếp theo rất đơn giản. Bạn chỉ cần thêm tên miền bạn muốn sử dụng (mà bạn đã đặt vào Pi-hole) làm một proxy host.
Tuy nhiên, nếu bạn muốn sử dụng HTTPS hoặc SSL, có thêm vài bước nữa cần thực hiện.
Để bắt đầu, bạn sẽ cần tạo một chứng chỉ SSL tự ký (self-signed SSL certificate) cho tên miền bạn định sử dụng. Tôi sẽ sử dụng testing123.me
cho mục đích của bài viết này.
Dưới đây là ba lệnh bạn cần chạy:
openssl genrsa -out testing123.me.key 2048
openssl req -new -key testing123.me.key -out testing123.me.csr -subj "/CN=.testing123.me"
openssl x509 -req -in testing123.me.csr -signkey testing123.me.key -out testing123.me.crt -days 825 -extensions v3_req -extfile
Ba lệnh này sẽ tạo ra ba tệp trên hệ thống của bạn: một tệp CRT (chính là chứng chỉ), một tệp CSR (không được sử dụng cho mục đích của chúng ta ở đây), và một tệp KEY (khóa của chứng chỉ). Các lệnh trên được thiết kế để sử dụng với tên miền testing123.me
, vì vậy nếu bạn muốn sử dụng một tên miền khác, chỉ cần thay thế nó vào.
Ngoài ra, các lệnh này được thiết kế để cung cấp một chứng chỉ wildcard. Đó không phải là chứng chỉ cho bản thân tên miền, mà là cho bất kỳ tên miền phụ nào (vì nó được thiết lập là *.testing123.me
).
Trong Nginx Proxy Manager, hãy điều hướng đến tab SSL Certificates và sau đó nhấp vào Add SSL Certificate, rồi chọn Custom. Đặt tên cho chứng chỉ, sau đó tải tệp KEY vào khu vực Certificate Key và tệp CRT vào khu vực Certificate.
Bây giờ, quay lại tab Proxy Hosts, bạn có thể chuyển đến khu vực SSL và chọn chứng chỉ wildcard của mình. Điều này sẽ cung cấp cho bạn một chứng chỉ tự ký cho các dịch vụ đã bật SSL của bạn.
Vì đây là chứng chỉ tự ký, bạn sẽ vẫn nhận được cảnh báo chứng chỉ khi truy cập trang web, nhưng nó vẫn sẽ hoạt động cho các dịch vụ cần HTTPS để chức năng.
Hơn nữa, bạn thậm chí có thể thêm chứng chỉ vào CA cục bộ trên máy tính của mình để tránh cảnh báo, mặc dù điều này chắc chắn phức tạp hơn và khác nhau tùy theo hệ điều hành.
Khi bạn đã thiết lập tất cả những điều đó, bạn đã sẵn sàng truy cập các tên miền cục bộ mà không cần rời khỏi mạng của mình! Tôi đã thiết lập điều này cho cả hai phiên bản Pi-hole của mình (để tôi có thể truy cập chúng mà không cần IP) và phiên bản Proxmox của tôi, vì tôi không muốn mở bất kỳ dịch vụ nào trong số đó ra thế giới.
Tuy nhiên, nếu bạn muốn tạo trang web của riêng mình và cho phép mọi người từ khắp nơi truy cập, điều đó thực sự khá dễ dàng! Trên thực tế, bạn có thể có một trang web hoàn toàn hoạt động chỉ trong một cuối tuần bằng cách sử dụng Raspberry Pi và Nginx Proxy Manager.
Kết Luận
Việc tối ưu hóa các dịch vụ tự host bằng cách sử dụng Pi-hole và Nginx Proxy Manager để tạo tên miền cục bộ là một giải pháp mạnh mẽ, giúp đơn giản hóa đáng kể việc quản lý hệ thống homelab của bạn. Không còn phải vật lộn với hàng loạt địa chỉ IP và số cổng khó nhớ, bạn giờ đây có thể truy cập các dịch vụ của mình một cách trực quan, dễ dàng và quan trọng nhất là an toàn hơn bao giờ hết. Giải pháp này đặc biệt hữu ích cho những ai ưu tiên bảo mật và muốn giữ các dịch vụ nhạy cảm hoàn toàn trong mạng nội bộ.
Hãy bắt đầu áp dụng chiến lược này ngay hôm nay để trải nghiệm sự tiện lợi và bảo mật vượt trội trong việc quản lý các dịch vụ tự host của bạn! Khám phá thêm các hướng dẫn và mẹo công nghệ khác tại tinmoicongnghe.com để làm chủ thế giới công nghệ của riêng bạn.