CÀI ĐẶT WIREGUARD VPN TRÊN UBUNTU 22.04
CÀI ĐẶT WIREGUARD VPN TRÊN UBUNTU 22.04
Oracle Cloud VPS – 10 client – mạng VPN 172.99.0.0/24
1. Thông tin mô hình
· Public IP VPS:
· WireGuard interface: wg0
· VPN network: 172.99.0.0/24
· Server VPN IP: 172.99.0.1
· Client 1 → Client 10: 172.99.0.2 → 172.99.0.11
· WireGuard UDP port: 51820
· VPS interface Internet: ens3

2. Cài đặt WireGuard
sudo apt update
sudo apt install -y wireguard qrencode
3. Tạo key cho server
sudo -i
mkdir -p /etc/wireguard
chmod 700 /etc/wireguard
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key
# 4. Tạo key cho 10 client
for i in {1..10}; do
wg genkey | tee /etc/wireguard/client${i}_private.key | wg pubkey > /etc/wireguard/client${i}_public.key
chmod 600 /etc/wireguard/client${i}_private.key
done
5. Cấu hình wg0
nano /etc/wireguard/wg0.conf
Cấu hình server cần có phần interface tương tự:
[Interface]
Address = 172.99.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
Mỗi client có một peer riêng, ví dụ client 1:
[Peer]
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 172.99.0.2/32
Client 2 dùng 172.99.0.3/32, tiếp tục đến client 10 dùng 172.99.0.11/32.
6. Khởi động WireGuard
systemctl enable —now wg-quick@wg0
systemctl status wg-quick@wg0
wg show
7. Mở UDP 51820 trên firewalld
firewall-cmd —zone=public —add-port=51820/udp —permanent
firewall-cmd —reload
firewall-cmd —zone=public —list-all
8. Bật IP forwarding
sysctl -w net.ipv4.ip_forward=1
echo ‘net.ipv4.ip_forward=1’ > /etc/sysctl.d/99-wireguard.conf
sysctl —system
sysctl net.ipv4.ip_forward
Kết quả cần có: net.ipv4.ip_forward = 1.
9. Bật NAT/Masquerade
firewall-cmd —zone=public —add-masquerade —permanent
firewall-cmd —reload
firewall-cmd —zone=public —query-masquerade
Kết quả cần có: yes.
10. Gán interface cho firewall zone
firewall-cmd —zone=public —add-interface=wg0 —permanent
firewall-cmd —zone=public —add-interface=ens3 —permanent
firewall-cmd —reload
firewall-cmd —get-active-zones
Lưu ý: Sau khi cấu hình thành công, ens3 và wg0 cùng nằm trong zone public; zone này có forward=yes và masquerade=yes.
11. Tạo cấu hình client
SERVER_PUBLIC=$(cat /etc/wireguard/server_public.key)
for i in {1..10}; do
IP=$((i+1))
cat > /etc/wireguard/client${i}.conf <<EOF
[Interface]
PrivateKey = $(cat /etc/wireguard/client${i}_private.key)
Address = 172.99.0.${IP}/24
DNS = 1.1.1.1
[Peer]
PublicKey = ${SERVER_PUBLIC}
Endpoint = 161.33.79.110:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
chmod 600 /etc/wireguard/client${i}.conf
done
12. Tạo QR cho client
qrencode -t ansiutf8 < /etc/wireguard/client1.conf
Quét QR bằng ứng dụng WireGuard trên điện thoại. Client 2 dùng client2.conf, tiếp tục tương ứng đến client10.conf.
Lưu ý: Mỗi thiết bị nên có một key và một IP riêng. Không nên cho hai thiết bị dùng chung một QR/profile nếu chúng kết nối đồng thời.
13. Kiểm tra trạng thái VPN
wg show

wg show wg0 latest-handshakes
Khi client kết nối thành công, peer tương ứng sẽ có latest handshake và thông số transfer.
14. Theo dõi realtime
watch -n 2 wg show

.
Lưu ý: Không chia sẻ các file private key. Chỉ public key được dùng để khai báo peer; private key phải được giữ bí mật trên thiết bị tương ứng.