Trong các bài viết trước, mình đã chia sẻ hai cách thiết lập WireGuard VPN Server nhanh gọn với PiVPN và WireGuard Road Warrior. Cả hai phương pháp đều có chung đặc điểm là cài đặt trực tiếp lên hệ điều hành Linux và phải quản lý thông tin client bằng dòng lệnh.
Hôm nay mình sẽ giới thiệu thêm 1 cách thiết lập WireGuard VPN Server mới, theo mình là nhanh gọn và dễ sử dụng nhất hiện nay: wg-easy
I. Giới thiệu wg-easy?
wg-easy là dự án mã nguồn mở (Github) được phát triển bởi Emile Nijssen nhằm đơn giản hoá cách cài đặt và quản lý WireGuard VPN.
wg-easy là một docker image được thiết lập sẵn WireGuard kèm theo 1 giao diện Web UI thân thiện để quản lý tài khoản. Thông qua Web UI, có thể tạo mới / xem thông tin / xoá tài khoản client mà không cần phải truy cập vào SSH và gõ lệnh.
Nhờ sử dụng công nghệ Docker, việc cài đặt và xoá bỏ wg-easy rất nhanh chóng, không gây ảnh hưởng đến hệ điều hành của server.
II. Cài đặt wg-easy
1. Cài đặt Docker & Docker-Compose
wg-easy hoạt động trên nền Docker nên yêu cầu server phải cài đặt sẵn Docker và Docker-Compose. Tham khảo hướng dẫn bên dưới nếu bạn chưa cài.
Hướng dẫn cài đặt Docker, Docker Compose trên Linux (Ubuntu / Arch / Debian …)
2. Chuẩn bị
Truy cập SSH vào Linux và chạy lệnh sau
mkdir ~/.wg-easy
cd ~/.wg-easy
wget https://raw.githubusercontent.com/WeeJeWel/wg-easy/master/docker-compose.yml
nano docker-compose.yml
Bạn cần đổi thông số WG_HOST=raspberrypi.local
thành địa chỉ Dynamic DNS của bạn.
Ngoài ra, bạn nên thiết lập thêm mật khẩu cho Web UI ở mục PASWORD=foobar123
để tính độ bảo mật. Nếu bạn không thay đổi, bất kỳ ai cũng có thể truy cập vào Web UI để chỉnh sửa client.
Ví dụ nội dung file docker-compose.yml
của mình sẽ giống như dưới đây
version: "3.8"
services:
wg-easy:
environment:
# Required: # Change this to your host's public address
# Change this to your host's public address
- WG_HOST=wgeasy.thuanbui.me
# Optional:
- PASSWORD=thuanbuidepchaivodichvutru
# - WG_PORT=51820
# - WG_DEFAULT_ADDRESS=10.8.0.x
# - WG_DEFAULT_DNS=1.1.1.1
# - WG_MTU=1420
# - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
# - WG_PERSISTENT_KEEPALIVE=25
# - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
# - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
# - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
# - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt
image: ghcr.io/wg-easy/wg-easy
container_name: wg-easy
volumes:
- .:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
Nếu bạn thiết lập wg-easy trên máy VPS của Oracle Cloud, tham khảo bài viết này để sửa lỗi không truy cập được mạng sau khi kết nối vào WireGuard
3. Kích hoạt WireGuard
Kích hoạt WireGuard bằng lệnh
docker compose up -d
Bạn truy cập vào Web UI theo địa chỉ http://:51821
để tạo WireGuard client. Đăng nhập bằng mật khẩu bạn đã thiết lập trong file docker-compose.yml
4. Tạo WireGuard Client
Giao diện Web UI quản lý WireGuard cực kỳ thân thiện và dễ sử dụng.
- Bấm New để tạo client.
- Bấm vào biểu tượng QR để xem QR code dùng để thiết lập WireGuard client trên điện thoại.
- Bấm vào biểu tượng Download để tải file cấu hình, dùng để thiết lập WireGuard client trên máy tính.
- Bấm biểu tượng Thùng Rác để xoá client.
III. Cấu hình NAT Port cho WireGuard
Để có thể kết nối vào WireGuard VPN Server từ bên ngoài, bạn còn phải cấu hình mở port trên router mạng (nếu cài WireGuard trên server ở nhà), hoặc cấu hình tường lửa nếu cài trên máy ảo Oracle Cloud.
1. Mở port trên Router mạng ở nhà
Cấu hình hình mở port trên Router với các thông số như sau
- Protocal: UDP
- Port: 51820
- Address: IP của máy đang chạy wg-easy
2. Cấu hình tường lửa trên máy ảo Oracle Cloud
Nếu cài đặt wg-easy trên máy ảo miễn phí của Oracle, bạn cần phải mở port 51820 trên máy ảo bằng lệnh sau
sudo iptables -I INPUT 6 -m state --state NEW -p udp --dport 51820 -j ACCEPT
sudo netfilter-persistent save
Sau đó vào tiếp mục Security Lists để mở port 51820. Tham khảo chi tiết trong bài viết dưới đây
Hướng dẫn cấu hình căn bản cho máy ảo Oracle Cloud sau khi thiết lập
[wg-easy] hiện tại là cách cài đặt WireGuard VPN server mình sử dụng thường xuyên nhất bởi sự tiện lợi và thân thiện của nó. Bạn có thể cài đặt wg-easy trên máy tính cài Linux hay Raspberry Pi đều được.
Nếu muốn kết hợp thêm Pi-Hole để chặn quảng cáo, bạn có thể tham khảo sử dụng Wirehole-UI, là sự kết hợp của wg-easy + Pi-Hole + Unbound
Chúc bạn cài đặt thành công!