Giới thiệu
Nếu bạn đang cần một công cụ để có thể join vào mạng LAN tại nhà mình, phục vụ một số nhu cầu như Wake-on-LAN PC, RDP tới máy tại nhà không cần phải nhờ nhà mạng public port ra ngoài Internet. Hay đơn giản chỉ là sử dụng để chạy NAS lấy dữ liệu một cách an toàn. Thì bài viết này là dành cho bạn.
Ngoài cách mở port thông qua nhà mạng, mình sẽ giới thiệu một kiểu khác để có thể truy cập private LAN từ xa, thông qua Cloudflare.
Cài đặt
Cài đặt Cloudflare
Đăng ký tài khoản Cloudflare + dịch vụ ZeroTrust
Thực hiện đăng ký tài khoản của Cloudflare, sau đó truy cập vào https://one.dash.cloudflare.com/ để đăng ký dịch vụ ZeroTrust (yên tâm là nó có plan miễn phí). Chọn cho mình một cái tên và làm theo các bước hướng dẫn đăng ký dịch vụ ZeroTrust của Cloudflare.
Nếu mọi thứ xuôn xẻ, thì chúng ta có thể truy cập vào mục Setting như trên, chọn tab "Network", sau đó bạn có thể cài đặt một số thông tin như hình bên dưới. Tuỳ vào mục đích sử dụng, bạn có thể cài đặt khác mình, đây là một ví dụ với cài đặt của mình.
Để ZeroTrust hoạt động, cần thêm một vài rule để chúng ta kết nối an toàn hơn. Vào "Setting" chọn "WARP Client", chọn phần "Manage" trong Device enrollment
Lúc này chúng ta sẽ tạo rules để những người trong rules mới có thể vượt qua được ZeroTrust
Tại đây mình sử dụng phương thức xác thực bằng email, nhập đúng email vào và họ sẽ gửi mã pin 6 số, nhập đúng mã pin sẽ vượt qua được ZeroTrust. Nhớ cài đặt xong rồi lưu lại nhé.
Vẫn ở trong "WARP Client", phần "Device Settings", thực hiện chỉnh sửa cấu hình "Default"
Trong phần "Split Tunnel", truy cập vào "Manage" sau đó loại bỏ tất cả những range ip nào bạn không muốn exclude, ở đây mình xoá bỏ hết, khi nào cần exclude thì add vào sau.
Nhớ save profile lại nhé
Tạo Tunnels
Để sử dụng được Tunnels tới private LAN tại nhà của bạn, cần một thiết bị luôn bật (ví dụ như mini PC, Raspberry Pi - những thiết bị luôn bật và đỡ tốn điện )
Truy cập vào Networks, tab Tunnels để thực hiện cài đặt Tunnels
Thực hiện tạo 1 profile tunnel, ở đây mình sử dụng raspberry-pi nên chọn enviroment là Debian, architeture là arm64-bit. Sau đó copy phần lệnh command bên dưới rồi paste vào raspberry-pi.
Nếu mọi thứ diễn ra suôn sẻ thì dịch vụ cloudflared sẽ hoạt động trong máy client đặt tại nhà bạn.
Tại tab Private Network, thêm range IP bạn muốn truy cập vào, ở đây mình thêm 192.168.1.0/24
là range IP nhà mình.
Nếu Status hiển thị như này thì ok
Trích xuất cấu hình Wireguard
Thực tế là có app 1.1.1.1 để có thể join vào network ZeroTrust, tuy nhiên mình thích Wireguard hơn vì bật nó nhanh (thực tế 1.1.1.1 đằng sau vẫn sử dụng Wireguard). Lấy cấu hình Wireguard sẽ có thể sử dụng được Cli mượt mà hơn, k cần GUI.
Mở trình duyệt, truy cập vào trang ZeroTrust của bạn (nó có dạng https://<tên bạn đặt ở bước 1>.cloudflareaccess.com/) và thực hiện xác thực với rules bạn cài đặt trong bước 1.
Sau khi xuất hiện như thế này, chuột phải chọn Inspect, lấy đoạn token từ ey... trở đi
Sử dụng wgcf-teams để trích xuất profile Wireguard
lúc đó bạn sẽ lấy được profile Wireguard dạng như này
Đem profile này sử dụng với Wireguard là xong, active lên và chúng ta đã join được vào network của Cloudflare
Và bạn có thể truy cập vào địa chỉ private LAN của mình (ví dụ 192.168.1.1) ở bất kỳ đâu, miễn là raspberry-pi ở nhà còn chạy :hehe:
Request của bạn sẽ được gửi tới Cloudflare, tại đây Cloudflare sẽ thực hiện tunnel tới raspberry-pi nếu request đó nằm trong Private Network mà bạn đã setup.
Kết
Việc sử dụng ZeroTrust của Cloudflare sẽ khiến tất cả lưu lượng mạng được xuất phát từ máy chủ của Cloudflare tới các trang web, server khác. Điều này có thể sẽ ảnh hưởng tới các quản trị viên đang tin tưởng toàn bộ traffic đến từ Cloudflare.
Ngoài Cloudflare cũng có AWS sử dụng WireGuard-over-S3. Các công cụ monitor network sẽ không phân biệt được lượt truy cập hợp phát tới S3 AWS hoặc attacker có thể sử dụng S3 AWS để làm bình phong.