
WireGuard ® là một VPN cực kỳ đơn giản nhưng nhanh chóng và hiện đại sử dụng mật mã hiện đại . Nó nhằm mục đích nhanh hơn , đơn giản hơn , gọn gàng hơn và hữu ích hơn IPsec, đồng thời tránh được những cơn đau đầu lớn. Nó dự định sẽ hoạt động hiệu quả hơn đáng kể so với OpenVPN. WireGuard được thiết kế như một VPN có mục đích chung để chạy trên các giao diện nhúng và các siêu máy tính, phù hợp với nhiều trường hợp khác nhau. Ban đầu được phát hành cho nhân Linux, giờ đây nó đã được đa nền tảng (Windows, macOS, BSD, iOS, Android) và có thể triển khai rộng rãi. Nó hiện đang được phát triển mạnh mẽ, nhưng nó có thể được coi là giải pháp VPN an toàn nhất, dễ sử dụng nhất và đơn giản nhất trong ngành.
huẩn bị
- Máy chủ Linux (Ở đây mình sử dụng Ubuntu 20.04)
- IP Public
Các bước Thiết lập máy chủ WireGuard VPN với giao diện
Bước 1: Cập nhật và cài đặt package
apt update && apt install -y wireguard curl tar
cd /etc/wireguard
Bước 2: Mở PORT Firewall
Ở đây các bạn hãy mở UDP PORT 51820, máy chủ Ubuntu mình sử dụng UFW nên sẽ sử dụng lệnh sau để mở.
ufw allow 51820/udp
Bước 3: Kích hoạt IP forwarding
Ở đây bạn cần chuyển tiếp IP đảm bảo rằng tất cả các packets từ giao diện WireGuard đều được chuyển tiếp. Bạn có thể mở file /etc/sysctl.conf
lên và thêm vào hoặc sử dụng trực tiếp lệnh echo
để thêm. Sau đó nhập sysctl -p
để áp dụng.
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p
Bước 4: Tạo script WireGuard UI
Bước này bạn tạo script cho Systemd sử dụng để khởi động giao diện người dùng WureGuard và lưu trữ cơ sở dữ liệu trong thư mục /etc/wireguard/db/
Lưu ý: Vì vấn đề bảo mật dòng -bind-address
bạn cần thay đổi bằng IP của máy chủ WureGuard
cat <<EOF > /etc/wireguard/start-wgui.sh
#!/bin/bash
cd /etc/wireguard
./wireguard-ui -bind-address 0.0.0.0:5000
EOF
Phân quyền script vừa tạo.
chmod +x start-wgui.sh
Bước 5: Cài đặt WireGuard UI
Ở đây mình sẽ mượn WireGuard UI tại đây để dùng cho bài hướng dẫn này.
- https://github.com/ngoduykhanh/wireguard-ui
- Tạo file dịch vụ wgui-web.service
cat <<EOF > /etc/systemd/system/wgui-web.service
[Unit]
Description=WireGuard UI
[Service]
Type=simple
ExecStart=/etc/wireguard/start-wgui.sh
[Install]
WantedBy=multi-user.target
EOF
- Tải giao diện WireGuard UI
Bạn hãy copy các tập lệnh này và chạy. Hoặc tạo file mới và dán vào từ #!/bin/bash
cat <<EOF > /etc/wireguard/update.sh
#!/bin/bash
VER=\$(curl -sI https://github.com/ngoduykhanh/wireguard-ui/releases/latest | grep "location:" | cut -d "/" -f8 | tr -d '\r')
echo "downloading wireguard-ui \$VER"
curl -sL "https://github.com/ngoduykhanh/wireguard-ui/releases/download/\$VER/wireguard-ui-\$VER-linux-amd64.tar.gz" -o wireguard-ui-\$VER-linux-amd64.tar.gz
echo -n "extracting "; tar xvf wireguard-ui-\$VER-linux-amd64.tar.gz
echo "restarting wgui-web.service"
systemctl restart wgui-web.service
EOF
Bây giờ bạn có thể chạy tập lệnh trên để cập nhật giao diện WireGuard. Quá trình tải xuống sẽ mất ít phút.
chmod +x /etc/wireguard/update.sh
cd /etc/wireguard; ./update.sh
Bước 6: Tạo file cấu hình systemd WireGuard
- Tạo file wgui.service
cat <<EOF > /etc/systemd/system/wgui.service
[Unit]
Description=Restart WireGuard
After=network.target
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart wg-quick@wg0.service
[Install]
RequiredBy=wgui.path
EOF
- Tạo file wgui.path
cat <<EOF > /etc/systemd/system/wgui.path
[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
[Path]
PathModified=/etc/wireguard/wg0.conf
[Install]
WantedBy=multi-user.target
EOF
Bước 7: Kích hoạt và chạy dịch vụ
touch /etc/wireguard/wg0.conf
systemctl enable wgui.{path,service} wg-quick@wg0.service wgui-web.service
systemctl start wgui.{path,service}
Bước 8: Mở WireGuard UI và cấu hình
Bây giờ bạn hãy truy cập trình duyệt bằng http://IP-Server:5000
vởi user và mật khẩu mặc định đều là admin/admin
Tại giao diện bạn hãy truy cập vào Global Settings và kiểm tra ở phần sau
- Endpoint Address xem IP có đúng hay chưa.
- DNS Server mặc định DNS của CloudFlare 1.1.1.1 bạn có thể thêm vào DNS của Google hoặc máy chủ DNS khác
Tiếp theo bạn truy cập vào Tab Wireguard Server và nhập vào các thông số sau
- Post Up Script: để các máy khách VPN cũng có thể truy cập Internet
iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- Post Down Script
iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Bước 9: Tạo Wireguard Clients
Để tạo user VPN bạn tuỷ cập vào Wireguard Clients => New Client=> Nhập vào các thông tin và chọn Submit
Tiếp theo bạn chọn Apple Config để áp dụng cho User
Bước 10: Thiết lập sử dụng WireGuard
1. Thiết lập sử dụng WireGuard trên máy tính
Trước khi thiết lập thì bạn cần phải có ứng dụng WireGuard. Và bạn có thể tải WireGuard từ trang chủ của WireGuard về với các nền tảng hệ điều hành.
Sau khi tải và cài đặt ứng dụng phần mền WireGuard trên máy client xong. bạn click vào dấu +
sau đó chọn Import Tunnel(s) from File
để thêm cấu hình.
Và để sử dụng bạn chỉ cần click vào
- Activate: Kích hoạt sử dụng
- Deactivate: Ngừng kích hoạt sử dụng
2. Thiết lập sử dụng WireGuard trên di động
WireGuard hỗ trợ cả trên các thiết bị di động. Để tải về bạn truy cập vào link tương ứng bên dưới nhé.

Sau đó bạn mở ứng dụng WireGuard trên di động và chọn vào dấu +
. Sau đó bạn chọn các lựa chọn cấu hình như:
- Create from QR code: Quét mã QR
- Create from file or archive: Nhập file cấu hình
Sau khi kết nối hoàn tất. Bây giờ mình sẽ truy cập vào Internet để kiểm tra thử có hoạt động hay không. Và mình kiểm tra xem IP có chính xác hay không.
Chúc bạn thực hiện thành công.