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.