پرش به محتوا

VPN سازمانی سریع و ساده با WireGuard

یک سرور WireGuard برای اتصال کارکنان دورکار به شبکه‌ی داخلی بسازید؛ تولید کلید، تعریف کلاینت، مسیریابی و فایروال.

Ubuntu 24.04 LTSسطح: متوسطبرای: Ubuntu 24.04 LTS، Ubuntu 26.04 LTS، Ubuntu 22.04 LTSبه‌روزرسانی: ۱۶ آبان ۱۴۰۵

در این مثال شبکه‌ی VPN 10.20.0.0/24 است، سرور آدرس 10.20.0.1 دارد و کاربران VPN باید به شبکه‌ی داخلی 192.168.10.0/24 دسترسی داشته باشند.

۱. نصب و کلیدها

bash
sudo apt update
sudo apt install -y wireguard
sudo -i
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee ali.key | wg pubkey > ali.pub
exit

۲. پیکربندی سرور

نام کارت شبکه‌ی اصلی را با ip route | grep default پیدا کنید (این‌جا ens18).

bash
sudo nano /etc/wireguard/wg0.conf
ini
[Interface]
Address = 10.20.0.1/24
ListenPort = 51820
PrivateKey = <محتوای server.key>
PostUp   = iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o ens18 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.20.0.0/24 -o ens18 -j MASQUERADE

# کاربر: علی
[Peer]
PublicKey = <محتوای ali.pub>
AllowedIPs = 10.20.0.2/32

۳. فعال کردن مسیریابی و فایروال

bash
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on ens18 to 192.168.10.0/24
sudo systemctl enable --now wg-quick@wg0
sudo wg show

ufw route فقط اجازه‌ی دسترسی به شبکه‌ی داخلی را می‌دهد، نه به کل اینترنت از طریق سرور.

۴. فایل کلاینت

ini
[Interface]
PrivateKey = <محتوای ali.key>
Address = 10.20.0.2/32
DNS = 192.168.10.53

[Peer]
PublicKey = <محتوای server.pub>
Endpoint = vpn.example.ir:51820
AllowedIPs = 10.20.0.0/24, 192.168.10.0/24
PersistentKeepalive = 25

این فایل را در برنامه‌ی WireGuard ویندوز، اندروید یا iOS وارد کنید. برای موبایل می‌توانید QR بسازید:

bash
sudo apt install -y qrencode
qrencode -t ansiutf8 < ali.conf

۵. لغو دسترسی یک کاربر

بلوک [Peer] او را از wg0.conf حذف کنید و:

bash
sudo systemctl restart wg-quick@wg0
کلید خصوصی کلاینت را پس از تحویل از روی سرور پاک کنید.