Rủi ro khi để lộ HomeLab ra Internet
Sau khi thiết lập các dịch vụ như Jellyfin để xem phim và Home Assistant cho hệ thống đèn thông minh, tôi muốn có thể truy cập chúng khi đang ở ngoài. Giống như nhiều người mới bắt đầu, tôi đã chọn cách dễ nhất là mở hàng tá cổng (port) trên router. Kết quả là gì? Chỉ trong vòng 48 giờ, nhật ký hệ thống (logs) của tôi đã hiển thị hơn 1.200 lần thử đăng nhập SSH thất bại từ các IP trên khắp thế giới. Đó là một hồi chuông cảnh tỉnh.
Việc phơi bày từng dịch vụ riêng lẻ thông qua port forwarding chẳng khác nào một lời mời gọi thảm họa. Mỗi cổng mở là một lỗ hổng tiềm tàng trong hệ thống phòng thủ của bạn. Nếu ngày mai Jellyfin xuất hiện một lỗ hổng bảo mật mới, toàn bộ mạng nội bộ của bạn sẽ gặp nguy hiểm. Tôi nhận ra mình cần một điểm truy cập duy nhất và được bảo mật nghiêm ngặt. Tôi muốn kết nối vào mạng nhà mình như thể đang ngồi tại bàn làm việc, nhưng không phải công khai nó ra internet. Đó là lý do tại sao bạn cần một VPN Gateway.
Tại sao lại chọn OpenWrt và WireGuard?
Tôi đã dành nhiều tháng để thử nghiệm các thiết lập khác nhau. Tôi đã thử OpenVPN trên một máy ảo Ubuntu riêng biệt và mày mò các tính năng VPN cơ bản trên router thương mại thông thường. Cuối cùng, tôi đã dừng lại ở OpenWrt chạy trên Linksys WRT3200ACM sử dụng WireGuard. Đây là sự cân bằng hoàn hảo giữa hiệu suất và khả năng kiểm soát.
WireGuard vượt trội hơn các đối thủ vì ba lý do: tốc độ, sự đơn giản và hiệu quả. Không giống như OpenVPN với mã nguồn đồ sộ chạy trong không gian người dùng (user space), WireGuard nằm ngay trong nhân (kernel) Linux. Trên phần cứng của tôi, OpenVPN chật vật để đạt mức 40 Mbps. Trong khi đó, WireGuard dễ dàng tận dụng hết băng thông upload 300 Mbps của tôi. Nó biến một thiết lập nghiệp dư thành một hệ thống chuyên nghiệp.
Các khái niệm cốt lõi: Split Tunneling và Full Tunneling
Trước khi bắt đầu cấu hình, bạn phải chọn cách dữ liệu của mình lưu thông:
- Full Tunneling: Mọi lưu lượng internet của bạn đều đi qua router ở nhà. Điều này hoàn hảo để giữ an toàn khi dùng Wi-Fi công cộng, nhưng nó phụ thuộc nhiều vào tốc độ upload tại nhà bạn.
- Split Tunneling: Chỉ lưu lượng truy cập vào các máy chủ tại nhà (ví dụ 192.168.1.0/24) mới đi qua VPN. Việc xem Netflix vẫn sử dụng kết nối mạng tại chỗ của bạn. Đây là lựa chọn hàng ngày của tôi để có hiệu suất tốt nhất.
Thiết lập WireGuard Gateway trên OpenWrt
Chúng ta sẽ kết hợp giao diện web LuCI và dòng lệnh (CLI). Tôi thích dùng CLI cho các bước thiết lập ban đầu vì nó nhanh hơn và ít bị nhầm lẫn hơn.
# Cập nhật danh sách gói và cài đặt WireGuard
opkg update
opkg install luci-proto-wireguard wireguard-tools kmod-wireguard
1. Tạo các khóa (Keys)
WireGuard sử dụng mã hóa bất đối xứng. Bạn cần một cặp khóa riêng tư (private key) và khóa công khai (public key) cho cả router và mỗi thiết bị bạn dự định kết nối.
# Tạo thư mục bảo mật để lưu trữ khóa
mkdir -p /etc/config/wireguard_keys
cd /etc/config/wireguard_keys
# Tạo khóa server với quyền truy cập hạn chế
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
2. Cấu hình giao diện VPN
Đi tới Network -> Interfaces trong LuCI và tạo một giao diện mới tên là vpn0. Chọn WireGuard VPN làm giao thức. Sử dụng các cài đặt sau:
- Private Key: Chuỗi ký tự từ tệp
server_private.keycủa bạn. - Listen Port: 51820.
- IP Addresses: 10.0.0.1/24 (Tạo một lớp mạng con riêng cho các máy khách VPN).
3. Firewall: Kết nối các thành phần
Lỗi cấu hình thường xảy ra ở bước này. Bạn phải cho phép lưu lượng đã mã hóa đi vào router và sau đó cho phép lưu lượng đó truy cập vào mạng LAN. Trước tiên, hãy tạo một quy tắc để mở cổng UDP:
# Cho phép lưu lượng WireGuard đi qua WAN
config rule
option name 'Allow-WireGuard-Inbound'
option src 'wan'
option dest_port '51820'
option proto 'udp'
option target 'ACCEPT'
Tiếp theo, gán vpn0 vào một vùng firewall mới tên là VPN. Thiết lập các quy tắc chuyển tiếp (forwarding) để vùng VPN có thể truy cập vùng LAN. Cầu nối đơn giản này cho phép điện thoại của bạn giao tiếp với NAS hoặc các node Proxmox.
4. Thêm thiết bị đầu tiên
Trên điện thoại hoặc laptop của bạn, hãy tạo một cặp khóa mới. Trong cài đặt WireGuard trên OpenWrt, thêm một “Peer” với các chi tiết sau:
- Public Key: Khóa công khai của thiết bị.
- Allowed IPs: 10.0.0.2/32 (IP tĩnh cho thiết bị cụ thể này).
- Route Allowed IPs: Đảm bảo tùy chọn này đã được tích chọn.
Sau 6 tháng sử dụng: Đánh giá thực tế
Tôi đã sử dụng thiết lập này được nửa năm. Nó đã thay đổi hoàn toàn cách tôi quản lý lab của mình. Đây là những gì tôi nhận thấy trong quá trình sử dụng lâu dài.
Độ tin cậy và Tốc độ
WireGuard cực kỳ ổn định. Khi điện thoại của tôi chuyển từ Wi-Fi nhà sang sóng 5G, kết nối không bị ngắt hay treo. Nó thiết lập lại quá trình bắt tay (handshake) chỉ trong mili giây. Tôi đã phát thành công các bản Blu-ray remux 4K dung lượng 60GB từ máy chủ khi đang ở khách sạn cách xa hàng trăm cây số. Mức sử dụng CPU của router hiếm khi vượt quá 12% trong các lần truyền tải này.
Thời lượng pin
Tôi từng lo lắng rằng việc bật VPN 24/7 sẽ làm cạn pin điện thoại. WireGuard thì khác vì nó rất “im lặng”. Nếu bạn không gửi dữ liệu, nó sẽ không gửi các gói tin duy trì kết nối (keep-alive) làm đánh thức sóng vô tuyến của điện thoại. Trên thiết bị Android của tôi, WireGuard tiêu tốn chưa đến 1% pin trong cả ngày dài.
Giải quyết vấn đề DNS
Việc gõ các địa chỉ IP như 192.168.1.50 trên màn hình cảm ứng rất khó chịu. Để khắc phục điều này, tôi đã trỏ cài đặt DNS của VPN về AdGuard Home đang chạy trên router. Giờ đây, tôi chỉ cần gõ nas.home vào trình duyệt di động. Nó hoạt động hoàn hảo, và tôi còn được hưởng lợi từ việc chặn quảng cáo trên toàn hệ thống mạng ngay cả khi đang dùng dữ liệu di động.
Kết luận
Thiết lập một VPN Gateway là nâng cấp quan trọng nhất mà bạn có thể trang bị cho HomeLab của mình. Nó chuyển đổi chiến lược bảo mật từ thế bị động “hy vọng không ai tìm thấy cổng này” sang mô hình zero-trust chủ động. Chỉ những thiết bị đã được xác thực của bạn mới có thể thấy sự tồn tại của các dịch vụ.
Hãy bắt đầu with WireGuard. Mã nguồn sạch hơn, ít lỗi hơn các giao thức cũ và hiệu suất trên phần cứng rẻ tiền là không đối thủ. Một khi đường truyền bảo mật của bạn đã hoạt động, bạn có thể xây dựng và thử nghiệm mọi thứ với sự an tâm tuyệt đối.

