Cách tạo VPN WireGuard trên VPS và kết nối thiết bị cá nhân
Hướng dẫn cài WireGuard trên VPS Ubuntu, cấu hình đường hầm VPN và kết nối máy tính hoặc điện thoại. Có hướng dẫn mở cổng, kiểm tra kết nối và xử lý lỗi thường gặp.
Muốn truy cập Internet qua một đường hầm riêng do mình quản lý? Bạn có thể tạo VPN trên VPS bằng WireGuard: cài phần mềm trên máy chủ Ubuntu, cấu hình một thiết bị làm máy khách rồi kết nối qua giao thức mã hóa. Hướng dẫn dưới đây đi lần lượt từ khâu chuẩn bị đến kiểm tra kết nối, phù hợp với người mới làm quen Linux. Bạn cần có quyền quản trị VPS và thiết bị cá nhân như máy tính hoặc điện thoại.
Máy tính và điện thoại kết nối bảo mật đến VPS qua đường hầm VPN
WireGuard là phần mềm VPN mã nguồn mở, tạo đường hầm được mã hóa giữa thiết bị cá nhân và máy chủ. Trong mô hình này, VPS đóng vai trò máy chủ VPN; máy tính hoặc điện thoại là máy khách. Sau khi kết nối, lưu lượng mạng được định tuyến theo cấu hình bạn chọn.
Có hai cách định tuyến phổ biến:
Định tuyến toàn bộ: thiết bị gửi lưu lượng IPv4 Internet qua VPN. Trên thiết bị, địa chỉ IP công khai khi truy cập mạng thường sẽ là IP của VPS.
Định tuyến một phần: chỉ các địa chỉ hoặc mạng bạn chỉ định đi qua VPN; những lưu lượng khác tiếp tục dùng kết nối hiện tại.
VPN giúp mã hóa lưu lượng trên chặng giữa thiết bị và VPS, nhưng không đồng nghĩa với việc bạn hoàn toàn ẩn danh. Nhà cung cấp dịch vụ Internet, website và dịch vụ bạn đăng nhập vẫn có thể ghi nhận thông tin theo cách riêng. Bạn cũng cần tự bảo vệ VPS, khóa truy cập và các ứng dụng chạy trên máy chủ.
Chuẩn bị VPS Ubuntu và thông tin mạng
Quản trị viên chuẩn bị VPS Ubuntu và kiểm tra thông tin mạng
Bạn cần một VPS có địa chỉ IP công khai, quyền đăng nhập bằng tài khoản có sudo và hệ điều hành Ubuntu được hỗ trợ. Các lệnh mẫu dưới đây dành cho Ubuntu 22.04 hoặc phiên bản mới hơn. Hãy cập nhật hệ thống trước khi cài đặt:
Xác định tên giao diện mạng đi ra Internet. Tên này có thể là ens3, enp1s0 hoặc tên khác, không nhất thiết là eth0:
ip route get 1.1.1.1
Trong kết quả, tìm phần dev và ghi lại tên giao diện. Bạn sẽ thay ens3 trong cấu hình mẫu bằng tên vừa tìm được. Đồng thời kiểm tra IP công khai của VPS và bảo đảm tường lửa trên VPS hoặc bảng điều khiển mạng cho phép kết nối UDP đến cổng sẽ sử dụng.
WireGuard dùng các cặp khóa công khai và riêng tư. Khóa riêng tư cần được giữ kín, không gửi lên nơi công khai hoặc chia sẻ với người khác. Trên VPS, tạo khóa máy chủ như sau:
sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server_private.key'
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key'
sudo chmod 600 /etc/wireguard/server_private.key
Máy khách cũng cần một cặp khóa. Tốt nhất, hãy tạo khóa ngay trên thiết bị sẽ kết nối: ứng dụng WireGuard trên điện thoại có thể tạo tunnel mới và sinh khóa; trên máy tính Linux có thể cài WireGuard rồi chạy wg genkey | tee client_private.key | wg pubkey > client_public.key. Giữ khóa riêng tư trên thiết bị, chỉ dùng khóa công khai khi cấu hình máy chủ.
Cài WireGuard VPS và cấu hình máy chủ
Bật chuyển tiếp IPv4 để VPS có thể định tuyến lưu lượng từ đường hầm ra Internet. Tạo tệp cấu hình sysctl:
sudo nano /etc/sysctl.d/99-wireguard.conf
Thêm dòng sau, lưu tệp rồi áp dụng:
net.ipv4.ip_forward=1
sudo sysctl --system
Tiếp theo, mở cấu hình giao diện WireGuard:
sudo nano /etc/wireguard/wg0.conf
Dán nội dung mẫu sau và thay các giá trị trong ngoặc nhọn bằng thông tin thực tế. Xóa dấu ngoặc nhọn khi thay. ens3 phải là giao diện mạng VPS bạn đã xác định; CLIENT_PUBLIC_KEY là khóa công khai của thiết bị:
Để lấy khóa riêng tư máy chủ điền vào SERVER_PRIVATE_KEY, chạy sudo cat /etc/wireguard/server_private.key trên VPS. Không đăng nội dung khóa vào bài đăng, ảnh chụp màn hình hoặc kênh trao đổi công khai. Mỗi thiết bị nên có cặp khóa và địa chỉ VPN riêng; ví dụ thiết bị thứ hai có thể dùng 10.8.0.3/32 ở phía máy chủ.
Lưu tệp với quyền truy cập hạn chế rồi khởi động dịch vụ:
Nếu máy chủ dùng UFW, cho phép cổng UDP đã chọn. Lệnh sau tương ứng với cổng mặc định trong ví dụ:
sudo ufw allow 51820/udp
Nếu VPS có tường lửa ở bảng điều khiển riêng, bạn cũng cần kiểm tra quy tắc tại đó. Cấu hình chuyển tiếp và NAT có thể cần điều chỉnh theo tường lửa đang dùng; đừng tắt toàn bộ tường lửa để khắc phục sự cố.
Tạo cấu hình và kết nối thiết bị cá nhân
Điện thoại và máy tính kết nối WireGuard đến máy chủ VPS
Trên thiết bị, tạo một cấu hình WireGuard mới. Điền khóa riêng tư được sinh trên chính thiết bị và khóa công khai máy chủ; xem khóa công khai máy chủ bằng lệnh sudo cat /etc/wireguard/server_public.key. Cấu hình mẫu cho kết nối IPv4 toàn bộ lưu lượng như sau:
Thay CLIENT_PRIVATE_KEY, SERVER_PUBLIC_KEY và VPS_PUBLIC_IP bằng giá trị tương ứng. Trên máy chủ, phần [Peer] phải chứa đúng khóa công khai của thiết bị này và địa chỉ AllowedIPs = 10.8.0.2/32. Hai phía cần khớp khóa và địa chỉ thì mới xác thực, định tuyến đúng.
Nếu chỉ muốn đưa một mạng nhất định qua VPN, thay AllowedIPs = 0.0.0.0/0 bằng dải mạng cần dùng. Ví dụ 10.8.0.0/24 chỉ định tuyến mạng VPN này, không đưa toàn bộ lưu lượng Internet qua VPS. Cấu hình mẫu đang xử lý IPv4; nếu thiết bị có IPv6, lưu lượng IPv6 có thể không đi qua đường hầm. Chỉ thêm ::/0 khi bạn đã cấu hình và kiểm tra định tuyến IPv6 trên VPS; nếu chưa, hãy cân nhắc tắt IPv6 trên thiết bị khi dùng VPN toàn bộ.
Lưu cấu hình, bật tunnel trong ứng dụng WireGuard rồi kiểm tra trạng thái. Trên máy chủ, chạy:
sudo wg show
Khi có kết nối, bạn có thể thấy thời điểm bắt tay gần nhất và bộ đếm dữ liệu truyền, nhận. Với cấu hình định tuyến toàn bộ IPv4, hãy kiểm tra địa chỉ IP công khai trên thiết bị; kết quả cần cho thấy kết nối đang đi ra từ VPS. Nếu dùng cấu hình định tuyến một phần, việc IP Internet không đổi có thể là bình thường.
Xử lý lỗi và bảo vệ đường hầm VPN
Nếu ứng dụng không bắt tay được, hãy kiểm tra lần lượt:
IP công khai, cổng UDP và tên giao diện mạng trong cấu hình máy chủ đã đúng chưa.
Quy tắc UFW và tường lửa tại bảng điều khiển đã cho phép cổng UDP hay chưa.
Khóa công khai của từng máy có được đặt đúng phía không; địa chỉ VPN trên hai cấu hình có bị trùng không.
Dịch vụ có chạy không bằng sudo systemctl status wg-quick@wg0; xem nhật ký bằng sudo journalctl -u wg-quick@wg0.
Nếu đã bắt tay nhưng không truy cập Internet, kiểm tra net.ipv4.ip_forward, quy tắc NAT và giao diện mạng trong PostUp.
Nếu truy cập được IP nhưng không phân giải tên miền, kiểm tra mục DNS trên thiết bị.
Giữ Ubuntu và WireGuard được cập nhật, bảo vệ SSH bằng thông tin xác thực phù hợp và chỉ cấp cấu hình cho thiết bị tin cậy. Khi mất thiết bị, xóa phần [Peer] tương ứng khỏi wg0.conf, áp dụng lại cấu hình và tạo khóa mới cho thiết bị thay thế. Không tái sử dụng một cấu hình cho nhiều người nếu bạn cần thu hồi quyền truy cập riêng lẻ.
Kết luận
Bạn có thể tạo VPN trên VPS bằng WireGuard qua các bước chính: cài gói, tạo khóa, bật chuyển tiếp IP, cấu hình máy chủ, mở cổng UDP và thêm thiết bị khách. Hãy bắt đầu với một thiết bị, kiểm tra kết nối rồi mới bổ sung máy khách khác. Nếu đang tìm VPS để tự triển khai, VibeVPS có VPS AMD EPYC Gen 3 và VPS Platinum Gen 2 với các gói từ 81.000đ/tháng; hãy chọn cấu hình phù hợp với nhu cầu và kiểm tra khả năng mở cổng UDP trước khi cài đặt.
Hướng dẫn kết nối VPS Windows bằng Remote Desktop từ máy tính Windows, macOS hoặc Linux. Bài viết cũng chỉ cách kiểm tra và khắc phục các lỗi RDP thường gặp.
Swap có thể hỗ trợ VPS Linux khi RAM gần cạn bằng cách dùng một phần ổ đĩa làm bộ nhớ hoán đổi. Bài viết hướng dẫn kiểm tra, tạo và quản lý Swap an toàn.