Kết nối private LAN qua Cloudflare Tunnels sử dụng Wireguard
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
Bắt đầu bằng việc đăng ký tài khoản trên Cloudflare. Sau đó, truy cập vào trang quản lý Cloudflare để đăng ký dịch vụ ZeroTrust (đừng lo, có phiên bản miễn phí). Chọn tên cho dịch vụ của bạn và làm theo hướng dẫn để đăng ký ZeroTrust.
Nếu mọi thứ diễn ra suôn sẻ, bạn có thể truy cập vào mục “Setting” như hình bên dưới. Chọn tab “Network” và cấu hình theo mục đích sử dụng của bạn. Dưới đây là ví dụ về cài đặt của mình.
Để ZeroTrust hoạt động, bạn cần thêm một số rule để kết nối an toàn hơn. Trong phần “Setting”, chọn “WARP Client”, sau đó chọn “Manage” trong phần “Device enrollment”.
Tại đây, bạn có thể tạo các rule để chỉ cho những người dùng đã xác thực mới có thể vượt qua ZeroTrust.
Mình sử dụng phương thức xác thực qua email. Nhập đúng email và bạn sẽ nhận được mã PIN 6 số. Nhớ lưu lại sau khi cài đặt xong.
Tiếp theo, trong phần “WARP Client”, chọn “Device Settings” và chỉnh sửa cấu hình “Default”.
Trong phần “Split Tunnel”, truy cập vào “Manage” và loại bỏ tất cả các range IP mà bạn không muốn exclude. Ở đây, mình xoá bỏ hết, và khi cần exclude, bạn có thể thêm vào sau.
Đừng quên lưu lại profile sau khi cài đặt xong.
Tạo Tunnels
Để sử dụng Tunnels tới mạng LAN riêng tại nhà của bạn, bạn cần một thiết bị luôn hoạt động (ví dụ như mini PC, Raspberry Pi - những thiết bị luôn bật và tiết kiệm điện).
Truy cập vào Networks, tab Tunnels để thực hiện cài đặt Tunnels
Tạo một profile tunnel. Ví dụ, nếu bạn sử dụng Raspberry Pi, hãy chọn môi trường là Debian và kiến trúc là arm64-bit. Sau đó, sao chép lệnh command được hiển thị và dán nó vào Raspberry Pi của bạn.
Nếu mọi thứ diễn ra suôn sẻ, dịch vụ cloudflared sẽ hoạt động trên máy client tại nhà của bạn.
Trong tab Private Network, thêm dải IP mà bạn muốn truy cập. Ví dụ, bạn có thể thêm 192.168.1.0/24
là dải IP của nhà bạn.
Nếu Status hiển thị như này thì ok
Trích xuất cấu hình Wireguard
Thực tế, có ứng dụng 1.1.1.1 để tham gia vào mạng ZeroTrust. Tuy nhiên, bạn có thể sử dụng Wireguard vì nó khởi động nhanh hơn (thực tế, 1.1.1.1 vẫn sử dụng Wireguard bên dưới). Để lấy cấu hình Wireguard, bạn có thể sử dụng CLI mượt mà hơn mà không cần GUI.
Mở trình duyệt và truy cập vào trang ZeroTrust của bạn (có dạng https://<tên bạn đặt ở bước 1>.cloudflareaccess.com/). Thực hiện xác thực với các quy tắc 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. Bạn sẽ nhận được một profile Wireguard giống như hình dưới.
Sử dụng profile này với Wireguard. Kích hoạt nó và bạn đã tham gia vào mạng 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.
Tham khảo
All Rights Reserved