Nội dung bài viết
Trong bài viết hôm nay mình chia sẻ các bạn cách tạo máy chủ VPN riêng của bạn với WireGuard chạy trên Docker.
A. Tổng quan
WireGuard là giải pháp VPN miễn phí, mã nguồn mở được phát triển nhằm thay thế giải pháp IPSec. WireGuard được phát triển như là module của Kernel với mục tiêu kế thừa các tính năng sẵn có của Kernel Linux, từ đó tối ưu hiệu năng giải pháp. Hiện nay giải pháp WireGuard đang dần trở nên phổ biến. Và đặc biệt hơn, WireGuard đã chính thức được phát hành cùng Kernel version 5.6 vào tháng 3 năm 2020, tức tất cả phiên bản, distro Linux sử dụng Kernel từ verion 5.6 trở đi sẽ có sẵn giải pháp WireGuard.
WireGuard sử dụng các giao thức mã hóa và các thuật toán để bảo vệ dữ liệu. Ban đầu, WireGuard được phát triển dành cho Linux. Hiện nay, nó đã phổ biến trên Windows, macOS, BSD, iOS và Android.
Điều kiện máy chủ cần đáp ứng:
B. Cài đặt Wireguard
Bước 1: Tạo một docker-compose file
Đầu tiên, các bạn tạo một thư mục /opt/wireguard-server và file docker-compose.yaml mới trong thư mục này.
mkdir /opt/wireguard-server vim /opt/wireguard-server/docker-compose.yaml
Sau đó hãy thêm nội dung dưới đây vào file
version: "2.1"
services:
wireguard:
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1001
- PGID=1002
- TZ=Aisa/Ho_Chi_Minh
- SERVERURL=IP_SERVER #optional
- SERVERPORT=51820 #optional
- PEERS=4 #optional # Bạn điền số lượng client cần kết nối
- PEERDNS=auto #optional
- INTERNAL_SUBNET=10.10.100.0 #optional
volumes:
- /opt/wireguard-server/config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Trong đó, bạn cần thay thế nội dung sau:
- SERVERURL: Bạn điền IP Server
- SERVERPORT: Số máy client bạn muốn kết nối.
Bước 2: Thiết lập WireGuard Server
Chúng ta khởi động bằng command sau:
cd /opt/wireguard-server docker-compose up -d
Thêm nhiều config cho client
Nếu bạn cần điều chỉnh lại số lượng config cho client, bạn chỉ cần điều chỉnh lại thông số Peer trong file docker-compose.yaml
tại đường dẫn: /opt/wireguard-server
Điều chỉnh xong, bạn cần restart lại container với command sau:
docker-compose up -d --force-recreate
C. Thiết lập Wireguard đến client
- Trên PC
Để config Wireguard đến client trên PC, đầu tiên các bạn hãy Download App Wireguard: Tại đây
Sau khi đã cài đặt App thành công, bây giờ chúng ta sẽ đi lấy cấu hình của Client trên Server. Trước đó mình đã thiết lập để tạo ra 4 peer tương ứng với 4 client, để xem các peer đã tạo bạn di chuyển đến đường dẫn:
cd /opt/wireguard-server/config/
Tại đây bạn sẽ thấy các peer được tạo ra, mỗi một peer sẽ tương ứng với 1 client.
Bây giờ mình sẽ kết nối với với peer1 (client1), thì các bạn thực hiện mở file cấu hình như sau:
vim /opt/wireguard-server/config/peer1/peer1.conf
Bây giờ hãy mở App Wireguard trên PC và chọn Add Tunnel như hình.
Dán nội dung File cấu hình đã copy trước đó vào
Tiếp đó hãy Active lên
- Trên Mobile
Với Mobile thì chúng ta thực hiện dễ dàng hơn, bạn chỉ cần dùng lệnh bên dưới để in ra mã QR code rồi thực hiện scan qua App Wireguard trên Mobile. Ví dụ mình sẽ làm cho Peer2 (Client2), thì sử dụng command sau:
docker exec -it wireguard /app/show-peer 2 #### Bạn thay 2 bằng số Peer mình mình muốn.
Và kết quả mã QR code sẽ được in ra như hình.
Bây giờ bạn chỉ cần mở App trên Mobile và scan QR code này là được.
Sau khi đã kết nối thành công vào thiết bị Client, bây giờ hãy kiểm tra kết nối mạng xem VPN có ra được mạng không nhé. Và như hình là mình đã ra mạng thành công.
Chúc các bạn thực hiện