[Docker] Dựng VPN server WireGuard trên Docker

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. 1. 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

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.

1. 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.

2.Cài đặt Wireguard

Trong trường bài chia sẻ này mình sử dụng Ubuntu 20.04 LTS và các bản phân phối khác tương tự.

Server VPN WireGuard:

OS: Ubuntu 20.04 LTS

Cấu hình: 2 CPU / 2 GB RAM / 20 GB Disk

IP: 123.123.123.123 (IP Public – eth0)

Client: Window hoặc Mobile App Android

2.1.Cài đặt Docker và Docker-Compose

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo usermod -aG docker $USER
newgrp docker

2.2.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
version: "2.1"
services:
 wireguard:
  image: linuxserver/wireguard
  container_name: wireguard
  cap_add:
   - NET_ADMIN
   - SYS_MODULE
  environment:
   - PUID=1000
   - PGID=1000
   - TZ=Aisa/Ho_Chi_Minh
   - SERVERURL=wireguard.domain.com #optional
   - SERVERPORT=51820 #optional
   - PEERS=1 #optional
   - 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

2.3.Thiết lập WireGuard Server

Chúng ta khởi động bằng command sau:

cd /opt/wireguard-server
docker-compose up -d

2.4.Kết nối đến client

Tất cả file config được lưu trữ tại /opt/wireguard-server/config. Chúng ta cần copy file peer1/peer1.conf cho client và đổi tên thành wg0.conf để kết nối với server.

Nếu muốn kết nối với QR code chúng ta dùng command sau để in command lên terminal.

docker exec -it wireguard /app/show-peer <peer-number>

2.5.Thêm nhiều config cho client

Trong file docker-compose ta điều chỉnh lại thông số PEERS=2 và restart lại container

docker-compose up -d --force-recreate

Vậy là xong! Bạn đã có 1 VPN cho riêng mình rồi, vượt qua những tháng ngày “cá mập cắn cáp” 😅😅😅
Chúc bạn cài đặt thành công!

Tham khảo: video hướng dẫn

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ